Metis Andromeda logoMetis Andromeda

Metis Andromeda is an EVM-equivalent solution originally forked from Optimism OVM.
Value Locked

$869 M

11.02%

Canonically Bridged
$869 M (100%)
Externally Bridged
$0.00 (0%)
Natively Minted
$0.00 (0%)
  • Tokens
  • Daily TPS
    1.30189.30%
  • 30D tx count
    1.33 M
  • Type
    Optimium
  • Purpose
    Universal
  • Chart

    ...

    Tokens

    Choose token

    Canonically Bridged Tokens (Top 15)

    Metis Token (Metis)
    USD Coin (USDC)
    Tether USD (USDT)
    Ether (ETH)
    Dai Stablecoin (DAI)
    Wrapped BTC (WBTC)
    Aave Token (AAVE)
    SushiToken (SUSHI)
    ChainLink Token (LINK)
    BUSD (BUSD)
    Uniswap (UNI)
    Curve DAO Token (CRV)
    0x Protocol Token (ZRX)
    10Set Token (10SET)
    1INCH Token (1INCH)
    Milestones

    Data availability change

    2022 Apr 12th

    Update moving data to an off-chain committee.

    Learn more

    Mainnet launch

    2021 Nov 19th

    Public launch of Metis Layer 2 Andromeda, based on the Optimism codebase.

    Learn more
    Risk analysis
    Fraud proof system is currently under development. Users need to trust the block proposer to submit correct L1 state roots.
    Sequencer failureState validationData availabilityExit windowProposer failure

    State validation

    In development

    Currently the system permits invalid state roots. More details in project overview.

    Data availability

    Optimistic (MEMO)

    Transaction data is kept in MEMO decentralized storage. Validators can force Sequencer to make data available on-chain via L1 contract call if they find that Sequencer did not push tx data to MEMO. Challenge mechanism is not yet fully implemented.

    Exit window

    None

    There is no window for users to exit in case of an unwanted upgrade since contracts are instantly upgradable.

    Sequencer failure

    Enqueue via L1

    Users can submit transactions to an L1 queue, but can’t force them. The sequencer cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencer censors or is down, it is so for everyone.

    Proposer failure

    Cannot withdraw

    Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen.

    Technology

    No automatic on-chain fraud proof system

    For additional security, any staked Validator can challenge invalid state root submitted by the Sequencer. Other Validators will then act as referees in an interactive challenge game. Dishonest Validator majority can push invalid state root on-chain, and potentially slash honest Sequencer.

    • Funds can be stolen if an invalid state root is submitted to the system (CRITICAL).

    1. MVM_Verifier.sol#L133 - Metis source code

    Data is recorded off-chain in MEMO

    Transaction data is not stored on-chain, rather it is recorded in off-chain decentralized storage MEMO from MemoLabs. If Validators find that data is unavailable, they can request that Sequencer posts data on-chain via L1 contract.

    • Funds can be stolen if sequencer withholds data for more than seven days while at the same time submits fraudulent state root (CRITICAL).

    1. The Tech Journey: Lower Gas Costs & Storage Layer on Metis
    Operator

    The system has a centralized sequencer

    While proposing blocks is open to anyone the system employs a privileged sequencer that has priority for submitting transaction batches and ordering transactions.

    • MEV can be extracted if the operator exploits their centralized position and frontruns user transactions.

    1. CanonicalTransactionChain#L735 - Etherscan source code

    Users can enqueue transactions

    Users can submit transactions to an L1 queue, but can’t force them. The sequencer cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencer censors or is down, it is so for everyone.

    • Users can be censored if the operator is offline or refuses to process the queue.

    1. CanonicalTransactionChain - Etherscan source code
    Withdrawals

    Regular exit

    The user initiates the withdrawal by submitting a regular transaction on this chain. When the block containing that transaction is finalized the funds become available for withdrawal on L1. The process of block finalization usually takes several days to complete. Finally the user submits an L1 transaction to claim the funds. This transaction requires a merkle proof.

    • Funds can be frozen if the centralized validator goes down. Users cannot produce blocks themselves and exiting the system requires new block production (CRITICAL).

    1. Withdrawing from Metis - Metis documentation

    Forced exit

    If the user experiences censorship from the operator with regular exit they can submit their withdrawal requests directly on L1. The system is then obliged to service this request or halt all messages from L1, including all forced withdrawals and deposits. Once the force operation is submitted and if the request is serviced, the operation follows the flow of a regular exit.

    Other considerations

    EVM compatible smart contracts are supported

    Metis uses the Optimistic Virtual Machine (OVM) 2.0 to execute transactions. This is similar to the EVM, but is independent from it and allows fraud proofs to be executed.

    • Funds can be lost if there are mistakes in the highly complex OVM implementation.

    1. MVM repository - Metis source code
    Permissions

    The system uses the following set of permissioned addresses:

    Metis Multisig 0x48fE…cF21

    This address is the owner of the following contracts: MVM_L1CrossDomainMessenger, L1StandardBridge, LibAddressManager. This allows it to censor messages or pause message bridge altogether, upgrade bridge implementation potentially gaining access to all funds stored in a bridge and change the sequencer, state root proposer or any other system component (unlimited upgrade power). This is a Gnosis Safe with 4 / 6 threshold.

    Those are the participants of the Metis Multisig.

    Sequencer 0xcDf0…0019

    Central actor allowed to commit transactions to L1.

    State Root Proposer 0x9cB0…689D

    Central actor to post new state roots to L1.

    Data Availability Verifiers 0x48fE…cF21

    Those addresses can try to force the sequencer to post data on chain.

    Execution Verifiers 0x48fE…cF21

    Those addresses can challenge the state roots submitted by the state root proposer.

    Smart contracts
    A diagram of the smart contract architecture
    A diagram of the smart contract architecture

    The system consists of the following smart contracts:

    MVM CanonicalTransaction is a wrapper of Canonical Transaction Chain that implements optimistic data availability scheme L1. If Sequencer is not malicious, it simply forwards appendSequencerBatch() calls to CanonicalTransactionChain.

    CanonicalTransactionChain 0x56a7…e1C9

    The Canonical Transaction Chain (CTC) contract is an append-only log of transactions which must be applied to the OVM state. It defines the ordering of transactions by writing them to the CTC:batches instance of the Chain Storage Container. CTC batches can only be submitted by OVM_Sequencer. The CTC also allows any account to enqueue() a transaction, which the Sequencer must eventually append to the rollup state.

    StateCommitmentChain 0xf209…9380

    The State Commitment Chain (SCC) contract contains a list of proposed state roots which Proposers assert to be a result of each transaction in the Canonical Transaction Chain (CTC). Elements here have a 1:1 correspondence with transactions in the CTC, and should be the unique state root calculated off-chain by applying the canonical transactions one by one. Currently only OVM_Proposer can submit new state roots.

    ChainStorageContainer-CTC-batches 0x3847…16B7
    ChainStorageContainer-CTC-queue 0xA91E…2E57
    ChainStorageContainer-SCC-batches 0x1073…d6f9
    BondManager 0xf51B…b3be

    The Bond Manager contract will handle deposits in the form of an ERC20 token from bonded Proposers. It will also handle the accounting of gas costs spent by a Verifier during the course of a challenge. In the event of a successful challenge, the faulty Proposer’s bond will be slashed, and the Verifier’s gas costs will be refunded. Current mock implementation allows only OVM_Proposer to propose new state roots. No slashing is implemented.

    The L1 Cross Domain Messenger (L1xDM) contract sends messages from L1 to Metis, and relays messages from Metis onto L1. In the event that a message sent from L1 to Metis is rejected for exceeding the Metis epoch gas limit, it can be resubmitted via this contract’s replay function.

    MVM_DiscountOracle 0x7f6B…7063

    Oracle specifying user fees for sending L1 -> Metis messages and other parameters for cross-chain communication.

    Lib_AddressManager 0x9187…867d

    This is a library that stores the mappings between names such as OVM_Sequencer, OVM_Proposer and other contracts and their addresses.

    This contract implements a voting scheme with which the majority of Verifiers can challenge malicious Sequencer.

    Contract that allows METIS_MANAGER to switch Sequencer.

    Main entry point for users depositing ERC20 tokens and ETH that do not require custom gateway. This contract can store any token.

    The current deployment carries some associated risks:

    • Funds can be stolen if a contract receives a malicious code upgrade. There is no delay on code upgrades (CRITICAL).

    If you find something wrong on this page you can submit an issue or edit the information