Geode Document Hub
Search
⌃K
🛡

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.
  • 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

  1. 1.
    A new Withdrawal Contract is proposed by the Governance with the TYPE of WITHDRAWAL_CONTRACT_UPGRADE
  2. 2.
    Geode Senate Approves the new Withdrawal Contract. From now on, Portal refers to the new implementation address
  3. 3.
    Then, anyone can call fetchUpgradeProposal:
    1. 1.
      fetchUpgradeProposal notifies the Portal.
    2. 2.
      Portal proposes a new implementation of Withdrawal Contract with the TYPE of UPGRADE.
    3. 3.
      Withdrawal Contracts pointing the old implementation enter into Recovery Mode.
    4. 4.
      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

Withdrawal Queue