Staking / mETH

Refer to the source code (GitHub) to learn more.

Contract Addresses

Contract Descriptions

Staking

  • Considered the public interface for the protocol, and is the only contract that users should ever need to interact with.

  • Handles staking and unstaking operations.

  • Performs accounting for the protocol (i.e. how much ETH is controlled).

UnstakeRequestsManager

  • Tracks unstake requests.

  • Places each request into a first-in-first-out queue, and determines when requests are eligible for claiming.

  • Considered an "internal" contract, and users must transact with the Staking contract to unstake.

Oracle

  • Receives and validates Oracle "records" that are reported by the off-chain Oracle systems.

  • Responsible for ensuring that Oracle records are valid and complete.

  • Contains extensive "sanity checks" to confirm that the provided data is within realistic expected bounds. If the report falls outside of the bounds of the checks, then the protocol is paused.

OracleQuorumManager

  • Interface for off-chain Oracles to send Oracle records to the system.

  • Contains has configurable properties that can be used to ensure that multiple, independent off-chain Oracles agree on the data within a record before it is considered to be eligible to be written to the Oracle contract for verification and storage.

ReturnsAggregator

  • Processing all incoming "returns" (ETH rewards and principals) from the protocol.

  • Uses validated Oracle records to understand the source of the amounts that has been received, takes protocol fees where appropriate, and sends the remaining amount to the Staking contract to be compounded or to fill unstake requests.

ConsensusLayerReceiver

  • A simple contract at which all Consensus Layer withdrawals arrive at.

  • Amounts can be pulled from here into the protocol by the ReturnsAggregator.

ExecutionLayerReceiver

  • A simple contract at which all Execution Layer rewards arrive. These are gas tips from execution and MEV rewards.

  • Amounts can be pulled from here into the protocol by the ReturnsAggregator.

Pauser

  • A pausing system that other contracts call to ensure that operations within the protocol are currently active and allowed.

  • The Pauser may be invoked by other contracts (e.g. the Oracle may pause the protocol if an unexpected report is detected), or by off-chain guardians.

Last updated