/mantle-v2

Primary LanguageGoMIT LicenseMIT

Website    |    Tech Docs




Introduction

Mantle is a suite of Ethereum scaling solutions including an optimistic rollup and ZK rollup built using an iterative modular chain approach, and supported by Mantle’s native token $MNT.

Mantle V2 is an upgrade of Mantle V1, tailored with specific adaptations to work seamlessly within the BedRock infrastructure.


What's the difference?

Through its adaptations to the BedRock upgraded infrastructure, Mantle V2 has realized significant enhancements, including support for reduced gas fees, shorter deposit times, optimized node performance, and improved Ethereum compatibility, among other benefits. For more detailed information, please refer to this documentation.

Furthermore, due to the modular design of the Mantle Network, it supports a diverse range of components at varying layers. In comparison to OP Stack-based Rollups adapted to complete BedRock upgrades, Mantle V2 offers support for a broader spectrum of technology stacks and modules, for example, Mantle Network will introduce a new DA scheme implemented using EigenDA technology called MantleDA.

Another significant enhancement involves the adoption of $MNT as the native token for Mantle Network, departing from the more common choice of $ETH in OP Stack implementations. This adjustment aligns the design more closely with Ethereum's native architecture, leading to reduced development and maintenance costs.

We encourage you to check out the Mantle tech docs to learn more about the inner workings of Mantle.


Directory Structure

root
β”œβ”€β”€ packages
β”‚   β”œβ”€β”€ balance-monitor: A forta agent which detects when a specified account balance is below the specified threshold
β”‚   β”œβ”€β”€ chain-mon: Chain monitoring services
β”‚   β”œβ”€β”€ common-ts: Common tools for building apps in TypeScript
β”‚   β”œβ”€β”€ contracts: L1 and L2 smart contracts for Mantle
β”‚   β”œβ”€β”€ contracts-bedrock: BedRock upgrade contracts for Mantle
β”‚   β”œβ”€β”€ contracts-periphery: Periphery contracts for Mantle
β”‚   β”œβ”€β”€ core-utils: Low-level utilities that make building Mantle easier
β”‚   β”œβ”€β”€ data-transport-layer: Service for indexing Mantle-related L1 data
β”‚   β”œβ”€β”€ fault-detector: Service for detecting Sequencer faults
β”‚   β”œβ”€β”€ hardhat-deploy-config: Hardhat deploy config
β”‚   β”œβ”€β”€ message-relayer: Tool for automatically relaying L1<>L2 messages in development
β”‚   β”œβ”€β”€ replica-healthcheck: Service for monitoring the health of a replica node
β”‚   └── sdk: provides a set of tools for interacting with Mantle

~~ Production ~~
β”œβ”€β”€ batch-submitter: Service for submitting batches of transactions and results to L1
β”œβ”€β”€ bss-core: Core batch-submitter logic and utilities
β”œβ”€β”€ gas-oracle: Service for updating L1 gas prices on L2
β”œβ”€β”€ integration-tests: Various integration tests for the Mantle network
β”œβ”€β”€ l2geth: Mantle client software, a fork of geth v1.9.10
β”œβ”€β”€ l2geth-exporter: A prometheus exporter to collect/serve metrics from an L2 geth node
β”œβ”€β”€ op-batcher: L2-Batch Submitter, submits bundles of batches to L1
β”œβ”€β”€ op-bindings: Go bindings for Bedrock smart contracts
β”œβ”€β”€ op-chain-ops: State surgery utilities
β”œβ”€β”€ op-challenger: Dispute game challenge agent
β”œβ”€β”€ op-e2e: End-to-End testing of all bedrock components in Go
β”œβ”€β”€ op-heartbeat: Heartbeat monitor service
β”œβ”€β”€ op-node: rollup consensus-layer client
β”œβ”€β”€ op-program: Fault proof program
β”œβ”€β”€ op-proposer: L2-Output Submitter, submits proposals to L1
β”œβ”€β”€ op-service: Common codebase utilities
β”œβ”€β”€ op-signer: Signer service client
β”œβ”€β”€ op-wheel: Database utilities
β”œβ”€β”€ ops: A Docker compose project for running Mantle
β”œβ”€β”€ ops-bedrock: Bedrock devnet work
β”œβ”€β”€ proxyd: Configurable RPC request router and proxy
β”œβ”€β”€ specs: Specs for Mantle network with BedRock upgrade
β”œβ”€β”€ technical-documents: Audits and postmortem reports

How to Contribute

Read through CONTRIBUTING.md for a general overview of our contribution process. Then check out our list of good first issues to find something fun to work on!


License

Code forked from go-ethereum under the name l2geth is licensed under the GNU GPLv3 in accordance with the original license.

All other files within this repository are licensed under the MIT License unless stated otherwise.