2.4.3. Retrieval of Collateral
Last updated
Last updated
Copyright 2024 M^0 Foundation
As defined in the Whitepaper, and as a reminder for the reader, collateral can generally only be retrieved (at least during the Normal Course of Business โ see below) if the Core Operating Condition remains satisfied following a successful retrieval. Given that the retrieval flow is the main way in which funds can leave the Collateral Storage, the process should absolutely come with strict rules. We are expecting Governance to holistically assess that those rules remain satisfied by any alternative implementation proposed by a prospective Minter. An example of such a flow is described in the chart below:
The Minter requests a retrieval by calling the proposeRetrieval()
function with the amount it wishes to retrieve.
If the Core Operating Condition remains satisfied after the retrieval the call succeeds and a RetrievalID
is generated and stored in the Protocol. For as long as the RetrievalID
is not closed the Protocol will subtract the requested amount from the Collateral Balance.
The Minter can now request the retrieval with the SPV Operator.
The SPV Operator will now validate the existence of the Retrieval Request in the Protocol.
If the existence of a corresponding Retrieval Request has been confirmed, the SPV Operator can initiate the liquidation of the equivalent collateral and transfer the funds back to the Minter.
Once the transfer has been executed the Minter can request a Signature from the Validator for the removal of the RetrievalID
.
The Validator confirms via appropriately provided access to the Collateral Storage that the transfer was executed.
If the check was successful, the Validator provides a Signature for the removal of the RetrievalID
.
The Minter can now call the updateCollateral()
function and pass on the RetrievalID it wishes to remove together with the Signature. The RetrievalID
will be removed, and the respective amount will no longer be subtracted from the Minterโs Collateral Balance.