- π Introduction
- π― Goals
- π Quick Start
- π Useful Addresses
- π» Set up Local Environment
- π§ Using the Mantle SDK
- 𧩠Using the Node RPC API
- π Spin up a Verifier Node
- π Directory Structure
- β¨ How to Contribute
- Β©οΈ License
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.
It is designed to bolster support for hyper-scaled throughput decentralized applications (dApps) β from derivatives decentralized exchanges (DEXs), to gaming, to operations of decentralized autonomous organizations (DAOs).
Layer 2 rollups are built to address the scaling limitations of Ethereum by taking transaction processing to a separate execution layer, but this inevitably exposes users to the high gas fees and limited throughput on Layer 1.
Mantle's modular architecture helps achieve greater network efficiency for resources at hand, while maintaining the same level of security for all network actors. Increased network performance also enables better fraud proof and ZK proof technology, essentially unlocking the true potential of L2 rollups.
Different parts of the Mantle tech stack are specialized to tackle specific issues.
- Data Availability: Data Availability powered by EigenDA technology, an innovative re-staking solution that leverages Ethereum's validator network to bring the security of L1 to L2
- EVM-level Fraud Proofs: Improved fraud proofs that are evaluated using EVM-level instructions
We encourage you to check out the Mantle tech docs to learn more about the inner workings of Mantle.
Name | Mainnet | Testnet |
---|---|---|
Token Faucet | N/A | https://faucet.testnet.mantle.xyz/ |
Mantle Bridge | https://bridge.mantle.xyz/ | https://bridge.testnet.mantle.xyz/ |
Mantle Explorer | https://explorer.mantle.xyz/ | https://explorer.testnet.mantle.xyz/ |
Mantle Node RPC URL | https://rpc.mantle.xyz/ | https://rpc.testnet.mantle.xyz/ |
Chain ID | 5000 | 5001 |
DApps need to connect to nodes for fetching block data and sending transactions to the Mantle network. Our JSON-RPC API supports HTTPS and WebSocket connections.
Service | Mainnet | Testnet |
---|---|---|
RPC | https://rpc.mantle.xyz/ | https://rpc.testnet.mantle.xyz/ |
WebSocket | wss://ws.mantle.xyz | wss://ws.testnet.mantle.xyz |
You can use npm
or yarn
package managers to download and install the @mantleio/sdk
package. We'll use yarn
in this example.
- Set up a project directory.
mkdir MantleSDK
cd MantleSDK
npm init --yes
- Download and install the SDK package using this command.
yarn add -D @mantleio/sdk
- Create a
<filename>.js
script and get started by making a request, for instance, to fetch the current L1 gas price.
const ethers = require("ethers")
const mantle = require("@mantleio/sdk")
const l2RpcProvider = new ethers.providers.JsonRpcProvider("https://rpc.testnet.mantle.xyz")
async function main() {
console.log(await mantle.getL1GasPrice(l2RpcProvider))
}
main();
- Run your script using the
node <filename>.js
command to see the output.
Feel free to browse through our compilation of tutorials that use the Mantle SDK to demonstrate common functionality such as bridging assets between Mantle and Ethereum, and more.
The SDK docs provide complete reference of all the methods available as part of the Mantle SDK to facilitate interaction between applications and Mantle network.
There are multiple roles associated with Mantle nodes. Rollup Verifiers mainly sync rollup data from Mantle's trusted Sequencer (to be decentralized in the future!). dApp builders who run their own verifier nodes have the benefit of being able to simulate L2 transactions, among other advantages, and have ready access to them without rate-limiting (as opposed to public RPCs).
Here's a tutorial describing the process of deploying a verifier node.
root βββ packages β βββ common-ts: Common tools for building apps in TypeScript β βββ contracts: L1 and L2 smart 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 β βββ 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 βββ mt-batcher: Service for submitting batches of transactions to EigenDA βββ mt-challenger: EigenDA data fraud proof βββ 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 (deprecated for BEDROCK upgrade) βββ l2geth-exporter: A prometheus exporter to collect/serve metrics from an L2 geth node βββ proxyd: Configurable RPC request router and proxy
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!
Code forked from optimism
under the name optimism
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.