Winding down Probity with grace
Probity may initiate shut down by governance vote. The shutdown module gracefully settles all debt and equity in the system. Prices are frozen at time of shutdown, and there may be price volatility risk during this window. Generally, the shut down process can take up to 2 days. All collateral auctions must finish so that the final debt balance can be calculated. Then borrowers will be able to redeem Aurei for their collateral. When there remains system debt after collateral auctions have finished, the remaining shortfall is covered by equity position holders' underlying assets.
function initiated() returns(bool isInitiated)
Returns whether the shutdown has been initiated
function initiatedAt() returns(uint256 initiatedAt)
Returns the timestamp of when shutdown has been initiated
function auctionWaitPeriod() returns(uint256 auctionWaitPeriod)
Returns the auctionWaitPeriod variable, this is the amount of time, the shutdown process will wait to allow all existing auctions to come to an end.
function supplierWaitPeriod() returns(uint256 supplierWaitPeriod)
Returns the supplierWaitPeriod variable, this is the amount of time shutdown process will wait to allow all suppliers' obligation to be processed
function assets(bytes32 assetId) returns(uint256 finalPrice, uint256 normDebt, uint256 gap, uint256 redemptionRatio)
returns the variables about an Asset
function collRedeemed(bytes32 assetId, address user) returns(uint256 redeemedAmount)
Returns the amount of asset Redeemed for the
function stablecoin(address user) returns(uint256 amount)
Returns amount of stablecoins that have been returned to shutdown module
function finalUtilizationRatio() returns (uint256 finalUtilRatio)
Return the Equity utilization ratio at the moment shutdown was initiated
function stablecoinGap() returns(uint256 stablecoinGap)
stablecoinGapvariable, this variable shows difference between how much stablecoin in circulation and asset are available to cover it.
function investorObligationRatio() returns(uint256 investorObligationRatio)
Returns investorObligationRatio, this ratios determine how much asset should be taken from equity position holder in order to cover under collateralized vaults
function finalStablecoinBalance() returns(uint256 finalStablecoinBalance)
finalStablecoinBalancethis is the final stablecoin balance in circulation , used to calculate how much asset each stablecoin should be able to redeem for
function finalTotalReserve() returns(uint256 finalTotalReserve)
finalTotalReserve, this is the amount of stablecoin held by reserve pool
function switchAddress(bytes32 which, address newAddress) external onlyBy("gov")
Only callable by Gov
Switch the contract addresses before the shutdown has been initiated
function changeWaitPeriod(bytes32 which, uint256 newWaitPeriod) external onlyBy("gov")
Only callable by Gov
Change wait period variables
function initiateShutdown() external onlyBy("gov")
Only callable by Gov
Initiate shutdown, will set shutdown state on all core module to start shutdown process.
Note: This action is irreversible
function setFinalPrice(bytes32 assetId) external
Set the final price for an asset, once set, it can not be changed.
function processUserDebt(bytes32 assetId, address user) external
Process debt positions and grab assets from collateral equals to the value of stablecoins in the debt position, if there are not enough collateral to cover 100% of the debt position, increase the asset.gap and stablecoinGap.
function freeExcessAsset(bytes32 assetId, address user) external
Any asset in that is committed to debt or equity position above the 100% of the position can be freed immediately after shutdown to allow the owners to withdraw.
function writeOffFromReserve() external
Using this function, the stablecoinGap can be lowered using the stablecoins held by the reservePool
function calculateInvestorObligation() external
Calculator investorObligationRatio, this variable determines how much of the equity position will need to be fill the gaps from under collateralized debt positions
function processUserEquity(bytes32 assetId, address user) external
Grab the underlying asset based on user's equity position size and investorObligationRatio and lower the asset.gap and stablecoinGap
function setFinalStablecoinBalance() external
Make sure that systemDebt have been addressed and calculate how many stablecoins are in circulation