Staking / mETH
Refer to the source code (GitHub) to learn more.
Contract Addresses
mETH Token
L1mETH: eth:0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa L2mETH: mantle:0xcDA86A272531e8640cD7F1a92c01839911B90bb0
Vault Components (L1)
Staking: 0xe3cBd06D7dadB3F4e6557bAb7EdD924CD1489E8f UnstakeRequestsManager: 0x38fDF7b489316e03eD8754ad339cb5c4483FDcf9 Oracle: 0x8735049F496727f824Cc0f2B174d826f5c408192 OracleQuorumManager: 0x92e56d2146D54d5AEcB25CA36c89D027a6ea0D90 ReturnsAggregator: 0x1766be66fBb0a1883d41B4cfB0a533c5249D3b82 ConsensusLayerReceiver: 0xD4e11C28E04c0c2bf370b7a9989498B7eA02493f ExecutionLayerReceiver: 0xD6E4aA932147A3FE5311dA1b67D9e73da06F9cEf Pauser: 0x29Ab878aEd032e2e2c86FF4A9a9B05e3276cf1f8
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 theStaking
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. theOracle
may pause the protocol if an unexpected report is detected), or by off-chain guardians.
Last updated