Withdrawal Contracts are simple contracts:
They secure the staked funds and handle the withdrawal queues.
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.
- Staking Rewards
- Block Rewards
- MEV profits
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.
- 1.A new Withdrawal Contract is proposed by the Governance with the TYPE of
- 2.Geode Senate Approves the new Withdrawal Contract. From now on, Portal refers to the new implementation address
- 3.Then, anyone can call
fetchUpgradeProposalnotifies the Portal.
- 2.Portal proposes a new implementation of Withdrawal Contract with the TYPE of
- 3.Withdrawal Contracts pointing the old implementation enter into Recovery Mode.
- 4.Owners can approve the proposal and migrate to a new implementation, exiting from Recovery Mode.
fetchUpgradeProposalis called by the Owner, the proposal is also automatically approved.