SystemDebtEngine
https://github.com/Into-the-Fathom/fathom-stablecoin-smart-contracts/blob/master/contracts/main/stablecoin-core/SystemDebtEngine.sol
The SystemDebtEngine
contract is responsible for managing the system's surplus and bad debt. It acts as the central financial manager within a FXD system, specifically designed to handle scenarios where debts become unmanageable or when excess funds are accumulated beyond what is required for the system's stability.
Storage Variables
bookKeeper
: Reference to theIBookKeeper
contract, which handles the ledger of all financial operations within the system.surplusBuffer
: The minimum amount of surplus (in RAD, 10^45) that should always be maintained in the system to cover unexpected liabilities.live
: A flag indicating whether the system is active (1) or has been shut down (0).
Functions
withdrawCollateralSurplus(bytes32 _collateralPoolId, address _to, uint256 _amount)
: Allows the owner to withdraw surplus collateral from a specific collateral pool.withdrawStablecoinSurplus(address _to, uint256 _value)
: Allows the owner to withdraw surplus stablecoins from the system, provided there is no outstanding bad debt and the withdrawal does not drop the balance below the surplus buffer.setSurplusBuffer(uint256 _data)
: Sets the minimum surplus buffer required in the system.settleSystemBadDebt(uint256 _value)
: Allows anyone to settle bad debt using the surplus funds available in the system.cage()
: Can be called by the owner or a designated emergency role to shut down the system in case of a significant issue. It settles as much bad debt as possible with available funds during the shutdown.pause()
: Pauses all critical functionalities of the contract, preventing state-changing operations.unpause()
: Resumes all operations after a pause.
Events
LogSetSurplusBuffer(address indexed _caller, uint256 _data)
: Emitted when the surplus buffer is updated.LogCage()
: Emitted when the system is shut down.
Last updated