🛡️Withdrawal Contracts
Savior of the Stakers.
The Staking Library utilizes Contract Owned Staking Derivatives. The contract in question is called the Withdrawal Contract.
Withdrawal Contracts are simple contracts:
They secure the staked funds and handle the withdrawal queues.
Every Staking Pool has a unique Withdrawal Contract.
When a staking pool is created, the latest version of the Withdrawal Contract is deployed automatically.
The owner of the Withdrawal Contract is the owner of the staking pool.
Any tokens related to a validator end their journey in the Pool's Withdrawal Contract:
Staking Rewards
Block Rewards
MEV profits
Principle
Fees
Withdrawal Contracts Are Smart
Like Portal not trusting it's Governance, Withdrawal Contracts don't trust Portal : it uses dual governance and limited upgradability.
Changing the latest version of the Withdrawal Contracts requires the approval of the Senate.
Changing the implementation code of a specific Pool's Withdrawal Contract requires the approval of the Pool Owner.
Meaning, although they are upgradable, not even Geode Governance has access to the funds within the Withdrawal Contract.
Upgrading Withdrawal Contracts
A new Withdrawal Contract is proposed by the Governance with the TYPE of
WITHDRAWAL_CONTRACT_UPGRADE
Geode Senate Approves the new Withdrawal Contract. From now on, Portal refers to the new implementation address
Then, anyone can call
fetchUpgradeProposal
:fetchUpgradeProposal
notifies the Portal.Portal proposes a new implementation of Withdrawal Contract with the TYPE of
UPGRADE
.Withdrawal Contracts pointing the old implementation enter into Recovery Mode.
Owners can approve the proposal and migrate to a new implementation, exiting from Recovery Mode.
If the fetchUpgradeProposal
is called by the Owner, the proposal is also automatically approved.
Recovery Mode
⛑️Recovery ModeWithdrawal Queue
🕗Withdrawal QueueLast updated