Sequential Process for SCD Shutdown

Hi all, this post explains the sequential process for shutting down Single Collateral Dai. The process involves two executive spells; one to protect MCD and the other to shutdown SCD. I will outline what these steps are and why they are important. As of April the 19th you will notice that the section in (B) Executive Spell 2, now includes updated steps, a timeline and request Governance Vote support.

A) Executive Spell 1 - Set the SAI Debt Ceiling to 0 in MCD

  • This action will protect MCD by preventing SAI from being swapped for DAI. This is necessary to prevent exposing MCD to SAI liquidity and/or peg fluctuations.
  • We will continue to allow DAI to be swapped for SAI. This will allow individuals to push DAI through the Migration Contract to drain it of all the SAI, which will be burnt into ETH at shutdown.

SCD is now isolated from MCD, the Migration Contract has been drained, and SCD can be safely shut down…

B) Executive Spell 2 - SCD Global Settlement

  • The action of calling cage is the final and definitive step to shutting down Single Collateral Dai.

-> New Information: Proposed SCD shutdown steps once the SAI Debt Ceiling has been set to 0:

24th April: Governance community vote on SCD Shutdown. The community has signalled to introduce a ‘pause’ which we are calling the grace period between when this vote passes and the time at which SCD is actually shutdown. This gives the community time to carry out the following steps.

24th April: MKR Oracle is deactivated. Following community approval of the Governance poll (link tbd 20th April), The Oracle Team with their existing mandate will deactivate the individual price feed providers thereby invalidating the MKR price feed. This will have the effect of eliminating the MKR stability fees for all remaining CDPs (more information below).

24th April - 10th May: CDP holders migrate to MCD. This will be possible through the Migration Portal and will not require the payment of stability fees. This will have the positive effect of encouraging people to (1) migrate their CDPs and (2) help reduce the amount of Sai in the migration contract.

10th/11th May: Liquidity providers drain the migration contract. Liquidity providers will work with the Foundation to drain the migration contract, which will involve:

  • Depositing USDC into MCD to mint enough DAI to cover the remaining balance of SAI in the migration contract
  • This DAI will be converted into SAI which will be deposited into the migration contract
  • The migration contract at 0 will now be unable to introduce unbacked debt into MCD once shutdown occurs

12th May: Actual SCD shutdown occurs. As planned in the SCD shutdown spell, the end of the grace period marks actual SCD shutdown, this is currently scheduled for the 12th of May. Upon which point, SCD will be irreversibly shutdown and one SAI will become fixed to $1 of ETH.


Supporting Notes:

Governance Poll Support for Oracle Deactivation Vote Here
By deactivating the MKR Oracle for SCD in order to forgive Stability Fees, it will be necessary to post an active Governance Poll requesting Maker Community support. As can be seen from the above process, the action of deactivating the Oracle will eliminate stability fees and incentivize users to migrate their CDPs. This process helps the community of CDP holders work together to drain the migration contract. The end state for CDP holders migrating is no different than if they had waited for actual shutdown, yet it has the benefit of allowing instant migration, and no need to wait for actual shutdown with the ensuing cool down period (6hrs). It also reduces the burden and exposure of liquidity providers needing to source large amounts of Sai for the migration contract.
Implications: There is a risk that unknown ecosystem participants may be using the MKR Oracle feed, in which case deactivating it would disrupt their feed ingestion. We will be doing a blockchain block analysis of who is using the feed as well as reaching out to partners to mitigate this risk as much as possible.

SAI Liquidity Providers:
In the above, you may have noticed that liquidity providers will be depositing USDC to mint DAI which will be converted into SAI to drain the migration contract. Once shutdown occurs they will be left holding anywhere up to 20k ETH depending on the amount of SAI they needed to purchase. To complete the trade and eliminate exposure on the original USDC position, this ETH will incrementally be wound back into DAI and the original USDC position closed.

SCD has now been globally settled and Sai owners (including the liquidity providers that purchased SAI) can claim their ETH collateral while CDP holders must wait for the cool down period to end…

C) Sai Owners Redeem Collateral While Bite Keepers Bite CDPs

  • Sai owners will be able to immediately redeem their ETH collateral from the Migration App. (Draft UI to be shared in a follow-up post)
  • Bite keepers will be required to bite all CDPs to ensure that the maximum PETH:WETH ratio has been reached before CDP holders claim their collateral. The Migration App will not allow CDP collateral redemption before this time has elapsed. (Please see note below)

Now that the bite keepers have bitten all CDPs and a maximum amount of ETH can be claimed for each unit of PETH that a CDP holds, the CDP holder can now claim their collateral…

D) CDP Holders Redeem Collateral

  • CDP holders can go to the Migration App to redeem their ETH. (Draft UI to be share in follow-up post)

The End - Success!

Note: PETH:WETH Ratio - This will be covered in our shutdown guide, however I would like to give it mention here too. Please observe the cool down period before redeeming your collateral - this is currently estimated to be 6hrs yet may be much longer, and will be determined at the time of shutdown as a result of how many outstanding CDPs exist. This waiting period is necessary in order for the system debt to be accounted for by bite keepers, thereby allowing users to receive a maximum amount of WETH for every unit of PETH in their CDP. If they do not wait, the exchange rate may not yet be favourable due to debt in the system. Although the site will not allow users to claim their collateral during this cool down period, interacting through the command line will still be possible, so again, users should pay close attention to the PETH:WETH exchange rate applied.

Immediate Next Steps

A) The Maker Foundation Interim Risk Team and the Interim Oracle Team have placed a Governance Poll into the voting system for the community to signal their support for the Oracle team to deactivate the MKR Oracle in Single Collateral Dai. Link to Governance Poll.


Does the migration contract need to be completely drained before the cage spell? Or is it fine as long as users cant get DAI with SAI? I am asking because if it doesn’t need to be completely drained then we could potentially do all of this bundled in one executive vote right?

The Migration Contract does not explicitly need to be drained before cage but if it isn’t drained we may expose ourselves to unbacked debt if the value of ETH goes down (i.e SAI would not be = $1), conversely, if ETH goes up there is an arb opportunity.

The reason for the first executive is to ensure SAI is set to 0 in MCD BEFORE caging, it also sends a clear message that SCD is finally - with certainty, shutting down so people should migrate their CDPs.

1 Like

Thank you, great info!!

I think a couple points here.

Precursor to step A not mentioned is that SCD DC should go from $20M to $15M. Then Step A) Setting SAI DC to 0 to MCD. Realize by nature of both these actions this will begin a liquidity crunch on SAI to drive the PEG up. Literally there will be nothing we can do about this. The question will then be how far does the community allow the PEG to move before we execute step B.

The other issue here is that the DAI/SAI in migration contract will have to undergo settlement. SAI exchanged for ETH and ETH sold for DAI to cover the migration contract DAI. I honestly would like to have an idea on hand before we do Step A) on who is going to take this on or how the community is going to deal with it? We don’t want to be figuring this part out before we do step A)

Another point I DO NOT like the idea that people can in step C) claiming collateral using command line tools. This seems to create a disconnect in terms of access. Now if this means people will end up losing if they access early ok, fine, but if they gain advantage we need to mitigate this imo. Probably someone will have to watch on-chain tx’s to determine if we need to move faster on opening up redemptions to all step D). I think this means we need to do this in a rising vs. falling market. We need all auctions cleared which again is why we should not allow people to open new CDPs here. (see precursor to step A) SCD DC from 20M to 15M.

Regarding fees and incentives to take on the migration contract DAI. I heard that governance can change the GS OSM price on ETH and mint SAI. Wouldn’t the way to apply a tax across the board is to change the OSM price down by the tax% and mint corresponding SAI in effect diluting SAI or is there some mechanism for only allowing 1-tax% to be the SAI value for redemptions against collateral?

My point here is that using something like above tools might be the final move (even if talking about how to do this) to get people out of CDPs. We could then open up a deposit facility for people than want to deposit SAI to drain DAI from the migration contract for a piece of the fee from the above move.

I am just thinking out loud here to try to kill multiple problems with one set of actions. Not for Maker to collect fees (which would be nice) but for how to extract them from the system to deal with the lagging issues and use the funds to incentivize actors to take on the migration contract risk by depositing SAI in another contract so this can all be tracked…

Anyway I am back to my precursor to step A) SCD DC from 20M-15M as the first step.

One last thing Derek.
Thank you for putting this all together!
Having steps helps a lot and I really wished I understood the PETH/WETH equations better because I like the idea of collecting fees but then distributing them to incentivize actors to close out things and use them to buffer unforseen ‘expenses’ that may appear here. Anything left over we can give back to CDP holders or just use to burn MKR as the fee for everything… Heck we could use the ETH as the beginning of a fund to compensate people for Black Thursday so perhaps this SAI in the migraction contract might find some real use after all. :wink:

Just gonna point out that In SCD there aren’t auctions. Keepers bite collateral at a discount which I am preeetty sure is 3% atm, but I couldn’t verify that number right now with some brief research.

Thanks @MakerMan for your comments,

  • Good point, I definitely agree a precursor is for the SCD DC to be reduced as soon as possible to reduce additional exposure. Similarly, yes, we need better clarity on who will help drain the migration contract.

  • If an individual chooses to redeem collateral via a CLI there is no negative impact to people who are only redeeming via the UI. If there is still debt in the system, then the first person redeeming would be at a disadvantage because their unit of PETH would be worth less ETH until system debt that impacts that exchange rate has been cleared.

  • It’s probably not a good precedent for Governance to set any Oracle price other than the price at the time of shutdown. I need to ponder this some more, but essentially you’re saying to create an arbitrage opportunity for DAI holders to purchase SAI.

I think a safe first move while we are polling on this is to do the SCD DC 20-15M. I have been harping on this for a while and unless @cyrus or @vishesh anyone has a cogent argument for why NOT to do it we should just get this first step done.

I agree. I didn’t hear any argument against it.

We tried to get it done weeks back but the executive never passed. Definitely will be going into this weeks polling.

The current executive vote is starting to look like it isn’t going to pass.

Curious what is next for this plan if step A fails.

What do we do now that we have decided to end SCD at the end of this month?

1 Like

Tempted to say we should separate SCD shutdown executives from the others. That comes with it’s own problems though.

I kind of wish that the shutdown poll had been phrased such that it was an aim rather than a certainty.

1 Like

This. I didn’t vote for the proposal although I support the SCD shutdown.

SAI has returned to $1, but DAI has not.

1 Like

This is no-longer true. SAI is priced in-between DAI and USDC at this moment.

Hi everyone, over the past week we have been investigating various opportunities for draining the migration contract as we approach SCD shutdown. These have included; working with liquidity providers, exploring protocol changes as well as working with existing CDP and Vault holders.

In this post, which I have appended to the opening post under B) Executive Spell 2, I will propose a solution through a set of steps; including deactivating the SCD MKR Oracle, implementing a grace period for people to migrate, and sourcing DAI to drain the migration contract in time to shutdown SCD.

As detailed above, the next steps involve the Maker Foundation Interim Risk Team and the Interim Oracle Team placing a Governance Poll into the voting system on Monday 20th April, for the community to signal their support for the Oracle team to deactivate the MKR Oracle in Single Collateral Dai.


Is there a time set for the SCD shutdown on May 12th?

Yes, executing cage for actual shutdown will be 16:00 UTC on May the 12th.

(FYI: The executive spell timing is being managed by a mini contract in the 24th of April’s executive spell aptly called SaiSlayer which will be assigned as the owner of the SaiTop contract to cage SCD)


How does the SaiSlayer calculate the cage price? Can you link to the contract or the code?

The price will come from the oracle feed.

This is the code:

contract SaiSlayer {
    uint256 constant public T2020_05_12_1600UTC = 1589299200;
    SaiTopAbstract constant public SAITOP = SaiTopAbstract(0x9b0ccf7C8994E19F39b2B4CF708e0A7DF65fA8a3);

    function cage() public {
        require(now >= T2020_05_12_1600UTC);
1 Like