← Protocols
Mantle LSP
01Description

Mantle's Ethereum liquid staking protocol issuing mETH — a non-rebasing reward-bearing ERC-20 backed 1:1+ by ETH staked on Ethereum L1. Native asset for Mantle L2 DeFi (mETH bridged in canonically).

02Best for
  • 01mETH liquid staking
  • 02Mantle L2 native staking yield
  • 03Pendle PT/YT on mETH
  • 04cmETH (compounding wrapper) integrations
03Install
  • pnpm add viem
04Environment variables
VariableScopeDescription
NEXT_PUBLIC_METH_ADDRESSClientmETH (L1) on Ethereum mainnet: 0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa.
NEXT_PUBLIC_METH_STAKINGClientMantle LSP Staking contract on Ethereum mainnet: 0xe3cBd06D7dadB3F4e6557bAb7EdD924CD1489E8f. Public entry point for stake / unstake.
NEXT_PUBLIC_METH_UNSTAKE_MANAGERClientUnstakeRequestsManager on Ethereum mainnet: 0x38fDF7b489316e03eD8754ad339cb5c4483FDcf9.
05Prompt snippet
Integrate Mantle LSP (mETH). Stake ETH: call `Staking.stake{value: ethAmount}(uint256 minMETHAmount)` on 0xe3cBd06D7dadB3F4e6557bAb7EdD924CD1489E8f — pass a non-zero `minMETHAmount` (slippage floor based on the current `mETHToETH` exchange rate) to avoid sandwich attacks. mETH is non-rebasing; read its value with `Staking.mETHToETH(uint256 mETHAmount)` or `ethToMETH(uint256 ethAmount)`. Unstake: `Staking.unstakeRequest(uint128 mETHAmount, uint128 minETHAmount)` mints a non-transferable claim in `UnstakeRequestsManager`; once the request is finalized by the oracle (validator exit complete) call `claim(uint256 unstakeRequestID)` to receive ETH. Read APR via the Oracle's reported beacon balance vs total mETH supply. On Mantle L2, the canonical mETH address is 0xcDA86A272531e8640cD7F1a92c01839911B90bb0 and yield accrues automatically since the L1 exchange rate is bridged.
06Gotchas
  • mETH is NON-rebasing; 1 mETH != 1 ETH — always quote value via `mETHToETH(amount)`. Naive ERC-20 ledgers that assume 1:1 will mis-display balances.
  • Unstake requests block on the Ethereum validator-exit queue and the protocol oracle's quorum; finalization typically takes days to weeks. The request is non-transferable, so account ownership is permanent.
  • Validator slashing is socialized into the next oracle report — a mass slashing lowers `mETHToETH` for ALL holders.
  • L2 mETH on Mantle is bridged via the canonical L1↔L2 bridge; pausing the bridge halts L2 deposits/withdrawals. Yield on L2 is reflected by exchange-rate updates pushed from L1, not by rebasing.
  • cmETH (compounding mETH) is a separate ERC-4626 wrapper with its own deposit/withdraw flow and additional fee — do not confuse with the base mETH staking contract.
  • `stake()` requires `minMETHAmount` — passing 0 lets MEV bots manipulate the spot exchange rate against your tx.
  • Pause guardian can pause stake / unstake independently; integrate `Pauser.isStakingPaused()` checks before quoting routes.
07Alternatives