Skip to content

Protocol Participants

All current Governance Delegates must deploy a new Vote Delegate V3 contract using the Vote Delegate Factory V3 0x4Cf3DaeFA2683Cd18df00f7AFF5169C00a9EccD5. To do this, call the create() function on the factory. After deployment, verify that the delegate’s chief() field points to the upgraded Chief contract. Migrate any self-staked MKR to SKY, and inform all MKR or SKY holders who delegate to you that they must re-delegate to your new address. Old V2 delegate contracts will stop counting votes once the new Chief is ratified.

  1. Deploy a V3 Delegate: Call create() on Vote Delegate Factory V3. The factory will deploy a new your new Vote Delegate contract which will be linked to the upgraded Chief and Polling contracts.

  2. Verify the Link: Call chief() on your new delegate contract. It must return the new Chief address, confirming V3 compatibility.

  3. Migrate Your Own Stake: Convert any MKR you have locked to SKY, then call lock() in your V3 delegate contract to stake your SKY.

  4. Update Public References: Update your Governance Portal profile, delegate registry repositories, forum threads, dashboards, and ENS records to show your new delegate address.

  5. Announce the Change: Share the update via forum posts, X/Twitter, Discord, newsletters, and Governance & Risk calls. Provide a direct link to the Voting Portal’s “Re-Delegate” flow, pre-filled with your new address.

  6. Deprecate the Old Contract: Once all delegations have moved, label the old delegate contract as deprecated wherever possible.

Broadcast Message for Delegators

Feel free to use or adapt the following message:

Action required: Our new Vote Delegate V3 contract is live at 0xAB...34. Please open the Voting Portal and re-delegate your SKY balance to the new delegate address to keep your voting weight active under the upgraded Chief.

As a governance participant, you currently either deposit MKR directly in the Chief contract to vote yourself or delegate your voting weight through a Vote Delegate contract managed by a Governance Delegate. With the Sky Ecosystem governance upgrade, MKR and DSChief are replaced by SKY and the new Chief, and new Vote Delegate V3 contracts are introduced. After the new Chief is ratified, DSChief and all Delegate V2 contracts will stop accruing voting weight. You must move your MKR from the current Chief to your new SKY token balance in the upgraded Chief. MKR can be upgraded to SKY without incurring any Delayed Upgrade Penalties for a limited time.

  1. Withdraw MKR from DSChief: In the current Voting Portal, choose Withdraw, approve the IOU, then execute free(). DSChief requires two transactions because it burns an IOU token first.

  2. Upgrade MKR to SKY: Use the official converter (or any interface that calls the published MkrSky contract). One MKR mints 24,000 SKY until Sky Ecosystem governance activates the Delayed Upgrade Penalty on all upgrade conversions.

  3. Deposit SKY into the New Chief: lock(uint256) function deposits your SKY token balance into the new Chief.

  4. Vote: Use prepareSlate and vote(bytes32[]) as before; the only difference is the token.

  5. Withdraw Later: Use free() to withdraw SKY from Chief back to your wallet; IOU approval is no longer needed.

  1. Withdraw MKR from the V2 Delegate: Use free() to withdraw. V2 delegates will be ignored once the new Chief is live.

  2. Upgrade MKR to SKY: Only SKY counts in the new Chief.

  3. Find Your Delegate’s New Address: Every active Governance Delegate will publish a V3 contract. Look for the new address on the Delegates page or their forum thread, or select a new Governance Delegate.

  4. Verify the Delegate Contract: Call chief() on the contract; it must return the new Chief address, confirming V3 compatibility.

  5. Confirm Official Deployment: Ensure the Vote Delegate V3 contract was deployed using the official Vote Delegate Factory V3 by calling the created getter function, which returns 1 for a valid contract.

  6. Deposit SKY into the V3 Delegate: Use the Voting Portal to deposit SKY into the V3 Vote Delegate contract or use the lock() function on the Vote Delegate V3 contract.

If you have a position in the Seal Engine (also known as LockStake Engine V1), you must close it and migrate to the Staking Engine (LockStake Engine V2).

This applies to current vaults that:

  • Are earning farming rewards (lsMKR)
  • Have an active vote delegate
  • May or may not have USDS debt

Check the following before starting the migration:

What to CheckWhy It Matters During Shutdown
USDS debt (drawn balance)Must be zero before you can unlock collateral in V1.
Collateral locked (MKR)Ensure your receiving wallet has enough gas for the conversion.
lsMKR farm rewardsClaim any outstanding rewards; unclaimed lsMKR is burned at close.
Vote delegate addressYou’ll need to re-delegate after opening your V2 vault.

All actions are performed using the V1 UI or contract.

  1. Harvest lsMKR rewards: Call harvest() to claim any outstanding lsMKR.

  2. Repay USDS debt (if any): Call wipe(uint wad) to bring your USDS debt to exactly zero. Include stability fees in the wipe.

  3. Remove the vote delegate (optional): Call delegate(0x000...00) to clear the delegate address.

  4. Unlock collateral: Call free(uint wad) to release MKR to your wallet.

  5. Revoke unlimited approvals (optional): In your wallet UI, remove infinite MKR and lsMKR spend approvals for LockStake Engine V1.

LockStake Engine V2 accepts SKY, not MKR. If you already hold SKY from another source, you can skip this conversion for that portion.

  • Convert MKR to SKY: Call mkrToSky() on the Converter V2 contract.

  • Receive SKY: You now hold SKY. When you lock SKY in V2, lsSKY is minted automatically.

4. Open a New V2 “Staking Engine” Vault

Section titled “4. Open a New V2 “Staking Engine” Vault”
  1. Approve SKY for V2: Call sky.approve(lockstakeEngineV2, type(uint256).max) once.

  2. Lock collateral: Call lock(uint wadSKY).

  3. (Optional) Draw USDS: Call draw(uint wadDai). The per-vault fee is now immutable; check the UI for the set value.

  4. Set your vote delegate: Call delegate(<delegateAddress>).

  5. Confirm farming has started: V2 emits Lock() and DelegateChanged() events. Farming rewards accrue in lsSKY.

AssetReturned?Notes
MKR collateralYesAll locked MKR is returned to your wallet.
lsMKR farming rewardsOnly if claimedUnclaimed lsMKR is burned when the vault is closed.
Vote powerRemovedYou must re-delegate in V2.
Any feesNo refundStability fees are consumed on wipe.

You cannot lock MKR directly in V2—convert to SKY first.

If you want to migrate a Seal Engine position with USDS debt without repaying the debt manually, use the on-chain migrator (if the new Staking Engine has enough debt ceiling).

LockstakeMigrator (flash-loan helper):

  • Use the LockstakeMigrator contract instead of steps 2–4 for zero-debt-repayment migration.
  • The migrator will:
    1. Take a short-lived USDS flash loan.
    2. Repay your V1 debt, unlock MKR, and convert it to SKY.
    3. Lock SKY into a new V2 vault.
    4. Draw USDS from the new vault to repay the flash loan.

Your vault will end up in V2 with the same debt and collateralization ratio, but with the new fee schedule and SKY collateral.

Released into the public domain (CC0 1.0 Universal) – trademarks remain with their owners; no warranty. See full license.