Introduction

The mev-commit contracts verify and manage the movement of funds as a response to bid and commitment activities that occur on our p2p network.

For mev-commit testnet contract addresses please refer to Testnet section.

Core Contract Architecture and Functionality

The mev-commit protocol uses 5 core contracts:

  • Preconfirmations Contract
    • This will persist details about the commitments that have been made into contract storage.
  • Bidder Registry Contract
    • This will be where the bulk of monetary transfer occurs.
    • Bidders deposit for bids into this contract.
    • The payment gets processed into a provider-allocated section that a provider can later retrieve.
  • Provider Registry Contract
    • This contract stores the stake a provider bounds to ensure it doesn’t break its promises under preconfirmations.
  • Oracle Contract
    • This simply retrieves details on which commitments to process for rewarding or slashing.
    • Access to the functions on this contract is restricted to the owner of the Oracle key.
  • Block Tracker Contract
    • This will track Ethereum blocks and their winners, so commitments could be rewarded or slashed
    • Access to the functions on this contract is restricted to the owner of the Oracle key.

Fee Vault Contract

The mev-commit chain implements a fee mechanism where all base fees accumulate to a “fee vault” contract. The predetermined address for such a contract is hardcoded into mev-commit-geth.

The fee vault contract is initiated with an immutable treasury address. The contract owner can invoke transfers of the accumulated fees from the sidechain contract, to the treasury address on L1, including bridging.

Since the treasury address is immutable, the contract owner only has the power to initiate transfers. The separation between the contract owner and treasury accounts is useful because key management can be separate; i.e. a secure multisig governing the protocol treasury doesn’t need to submit regular transfer transactions.

Deploying Custom Contracts

You can deploy your own custom contracts on our mev-commit chain. To do so, simply set your Chain ID to 17864 and RPC Url to https://chainrpc.testnet.mev-commit.xyz. Now you can deploy any EVM compatible contracts to the mev-commit chain. Feel free to use Foundry, Hardhat, or any other smart-contract development and deployment framework.