Exchange Rate

Exchange Rate

The exchange rate describes the rate at which you can convert ETH to mETH and back. This can be done either with the protocol directly, or with a third party swap.

  • Staking is the act of converting ETH to mETH and entering the protocol.

  • Unstaking (and Claiming) is the act of converting mETH back to ETH and exiting the protocol.

The protocol will always offer a "true" exchange rate — i.e., the rate given by a user's true share of the protocol value. There are no protocol fees (though see adjustment rate section below) when staking and unstaking. The exchange rates are given by these formulas:

Staking

mETH = (1 - exchangeAdjustmentRate) * (mEthSupply / totalControlled) * ethAmount

Unstaking

ETH = (totalControlled / mntEthSupply) * mEthAmount

Staking adjustment rate

There is a small adjustment applied to staking to stop protocol griefing. This is not a fee collected by the protocol (it goes to all existing stakers). More details of this can be found here Unstake Griefing

Consensus Layer Oracle

The exchange rate calculations necessarily rely on understanding the total amount of ETH controlled by the protocol. This ETH is split across the Execution Layer (where the contracts live) and the Consensus Layer (where staking happens).

As there is no native communication between these layers, we must run an Oracle in order to report how much ETH is on the Consensus Layer to the smart contracts, so that the correct exchange rate can be calculated. It is worth noting that future EIPs are being considered to address this issue.

The accuracy of the stake and redeem exchange rate is crucial for the integrity of mETH Protocol. If the mETH : ETH exchange rate is inaccurately quoted too high or too low, it can create opportunities for arbitrage that could negatively impact all mETH holders.

Risk Management Mechanisms

Current

  • Multiple Oracles with Quorum: Implementing a system where multiple Oracle nodes provide exchange rate data, and a consensus mechanism ensures the final rate.

  • Exchange Rate Bounds: Establishing upper and lower bounds for periodic exchange rate movements. The upper bound has predictable exchange rate growth expectations (global ETH staking APY) while the lower bound is less predictable due to slashing events. See Oracle Sanity Checks

  • Guardians: Introducing guardians who can monitor the exchange rate and pause various components of the protocol.

  • Request Finalization Window: Implementation of a time window (based on Oracle update time with some buffer) where withdrawal requests can be rejected, requiring users to resubmit their request. This would only happen in an emergency scenario such as where a major slashing event occurred.

Future Exploration

  • Merkle or ZK Proof systems: Verifying the Oracle exchange rate against Consensus Layer state.

Last updated