MonadL1开发指南 web3-monad

本技能是Monad区块链的完整开发手册,专为在Monad高性能Layer 1网络上构建应用的开发者设计。核心内容包括:MonadBFT共识机制(400ms区块,800ms最终性)、并行与延迟执行架构、智能合约部署(Foundry/Hardhat配置)、Gas定价模型(按Gas限制收费)、EIP-7702账户委托、质押预编译集成、低延迟执行事件消费以及Monad与以太坊的关键差异(如128KB合约、无全局内存池、储备余额等)。适用于区块链开发者、智能合约工程师、DeFi协议构建者以及需要集成Monad特定功能(如超快最终性、高TPS)的技术团队。关键词:Monad开发,Layer 1区块链,智能合约部署,Gas定价,并行执行,EIP-7702,质押集成,区块链架构。

链开发 0 次安装 0 次浏览 更新于 2/23/2026

name: web3-monad description: 完整的Monad L1开发手册。涵盖MonadBFT共识(400毫秒区块,800毫秒最终性,尾分叉抵抗)、并行/延迟执行、MonadDb、JIT编译、Gas定价(按Gas限制收费,而非Gas使用量)、操作码重新定价(冷访问4倍)、EIP-7702委托、质押预编译、部署(Foundry monad分支,Hardhat 2/3)、验证(MonadVision,Monadscan,Socialscan)、执行事件(共享内存低延迟)、生态系统(Pyth,LayerZero,CCIP,Safe,ERC-4337)以及与以太坊的关键区别(128KB合约,无Blob,无全局内存池,储备余额)。适用于在Monad上构建、部署合约、集成质押、消费执行事件或需要Monad特定架构细节时使用。

Monad L1 开发技能

此技能的用途

当用户询问以下内容时使用此技能:

  • Monad链配置(主网/测试网RPC,链ID,区块浏览器)
  • MonadBFT共识细节(轮次,最终性,尾分叉抵抗)
  • 并行和延迟执行架构
  • 在Monad上部署合约(Foundry,Hardhat,Remix)
  • 验证合约(MonadVision/Sourcify,Monadscan/Etherscan,Socialscan)
  • Gas定价和操作码成本与以太坊的差异
  • Monad上的EIP-7702账户委托
  • 质押预编译集成(委托,取消委托,复利,申领)
  • 执行事件(低延迟共享内存消费者)
  • Monad生态系统(桥接,预言机,索引器,钱包,代币)
  • 并行友好合约的性能模式
  • Monad与以太坊的区别

链配置

主网

属性
链 ID 143
货币 MON (18位小数)
EVM 版本 Pectra 分叉
区块时间 400毫秒
最终性 800毫秒 (2个时隙)
区块 Gas 限制 200M
交易 Gas 限制 30M
Gas 吞吐量 500M gas/秒
最低基础费用 100 MON-gwei
节点版本 v0.12.7 / MONAD_EIGHT

RPC 端点(主网)

URL 提供商 速率限制 批量 备注
https://rpc.monad.xyz / wss://rpc.monad.xyz QuickNode 25 rps 100 默认
https://rpc1.monad.xyz / wss://rpc1.monad.xyz Alchemy 15 rps 100 无调试/追踪
https://rpc2.monad.xyz / wss://rpc2.monad.xyz Goldsky Edge 300/10s 10 历史状态
https://rpc3.monad.xyz / wss://rpc3.monad.xyz Ankr 300/10s 10 无调试
https://rpc-mainnet.monadinfra.com / wss://rpc-mainnet.monadinfra.com MF 20 rps 1 历史状态

区块浏览器

浏览器 URL
MonadVision https://monadvision.com
Monadscan https://monadscan.com
Socialscan https://monad.socialscan.io
可视化 https://gmonads.com
追踪 Phalcon Explorer, Tenderly
UserOps Jiffyscan

测试网

属性
链 ID 10143
RPC https://testnet-rpc.monad.xyz
WebSocket wss://testnet-rpc.monad.xyz
浏览器 https://testnet.monadexplorer.com
水龙头 https://testnet.monad.xyz

与以太坊的关键区别

特性 以太坊 Monad
区块时间 12秒 400毫秒
最终性 ~12-18 分钟 800毫秒 (2个时隙)
吞吐量 ~10 TPS 10,000+ TPS
Gas 收费 Gas 使用量 Gas 限制
最大合约大小 24.5 KB 128 KB
Blob 交易 (EIP-4844) 支持 不支持
全局内存池 (基于领导者的转发)
账户冷访问 2,600 gas 10,100 gas
存储冷访问 2,100 gas 8,100 gas
储备余额 ~10 MON 每账户
TIMESTAMP 粒度 每区块1次 2-3个区块共享同一秒
预编译 0x0100 N/A EIP-7951 secp256r1 (P256)
EIP-7702 最低余额 10 MON 用于委托的EOA
EIP-7702 CREATE/CREATE2 允许 禁止 用于委托的EOA
支持的交易类型 0,1,2,3,4 0,1,2,4 (无类型 3)

Gas 限制收费模型

Monad 收取 gas_limit * price_per_gas,而不是 gas_used * price_per_gas。这使得异步执行成为可能——执行发生在共识之后,因此在包含时无法知道Gas使用量。

gas_paid = gas_limit * price_per_gas
price_per_gas = min(base_price_per_gas + priority_price_per_gas, max_price_per_gas)

开发者影响:为固定成本操作(例如,21000用于转账)明确设置Gas限制,以避免多付。

储备余额

每个账户维持约10 MON的储备,用于未来3个区块的Gas。任何会将余额降低到此阈值以下的交易都将被拒绝。这可以防止异步执行期间的DoS攻击。

区块生命周期与最终性

提议 → 投票(推测性最终性,T+1) → 最终确定(T+2) → 验证/状态根(T+5)
阶段 延迟 何时使用
投票 400毫秒 UI更新,大多数dApp
最终确定 800毫秒 保守型应用
验证 ~2秒 交易所,桥接,稳定币

viem 链定义

import { defineChain } from "viem";

export const monad = defineChain({
  id: 143,
  name: "Monad",
  nativeCurrency: { name: "MON", symbol: "MON", decimals: 18 },
  rpcUrls: {
    default: { http: ["https://rpc.monad.xyz"], webSocket: ["wss://rpc.monad.xyz"] },
  },
  blockExplorers: {
    default: { name: "MonadVision", url: "https://monadvision.com" },
    monadscan: { name: "Monadscan", url: "https://monadscan.com" },
  },
});

export const monadTestnet = defineChain({
  id: 10143,
  name: "Monad Testnet",
  nativeCurrency: { name: "MON", symbol: "MON", decimals: 18 },
  rpcUrls: {
    default: { http: ["https://testnet-rpc.monad.xyz"], webSocket: ["wss://testnet-rpc.monad.xyz"] },
  },
  blockExplorers: {
    default: { name: "Monad Explorer", url: "https://testnet.monadexplorer.com" },
  },
  testnet: true,
});

Foundry 配置

[profile.default]
src = "src"
out = "out"
libs = ["lib"]
evm_version = "prague"

[rpc_endpoints]
monad = "https://rpc.monad.xyz"
monad_testnet = "https://testnet-rpc.monad.xyz"

[etherscan]
monad = { key = "${ETHERSCAN_API_KEY}", chain = 143, url = "https://api.etherscan.io/v2/api?chainid=143" }

Hardhat 配置 (v2)

const config: HardhatUserConfig = {
  solidity: {
    version: "0.8.28",
    settings: {
      evmVersion: "prague",
      metadata: { bytecodeHash: "ipfs" }, // Sourcify所需
    },
  },
  networks: {
    monadTestnet: {
      url: "https://testnet-rpc.monad.xyz",
      chainId: 10143,
      accounts: [process.env.PRIVATE_KEY!],
    },
    monadMainnet: {
      url: "https://rpc.monad.xyz",
      chainId: 143,
      accounts: [process.env.PRIVATE_KEY!],
    },
  },
  etherscan: {
    customChains: [{
      network: "monadMainnet",
      chainId: 143,
      urls: {
        apiURL: "https://api.etherscan.io/v2/api?chainid=143",
        browserURL: "https://monadscan.com",
      },
    }],
  },
  sourcify: {
    enabled: true,
    apiUrl: "https://sourcify-api-monad.blockvision.org",
    browserUrl: "https://monadvision.com",
  },
};

智能合约提示

  • Gas优化仍然重要 — 即使Gas便宜,也要为用户优化
  • 相同的安全模型 — 所有Solidity最佳实践(CEI,重入防护)都适用
  • 并行友好设计 — 具有每用户映射的合约比全局计数器更好地并行化
  • 128 KB合约限制 — 更大的合约是可能的,但仍需为Gas优化
  • 无需代码更改即可实现并行性 — 它在运行时级别
  • block.timestamp — 2-3个区块可能共享同一秒;不要依赖亚秒级粒度
  • 无Blob交易 — 不支持EIP-4844类型3交易

WebSocket 订阅

标准 eth_subscribe 加上Monad特定扩展:

newHeads        — 标准新区块头
logs            — 标准日志过滤
monadNewHeads   — Monad特定区块头,包含额外字段
monadLogs       — Monad特定日志事件

执行事件(高级)

对于超低延迟数据消费,Monad通过共享内存环形缓冲区暴露执行事件。消费者在与节点相同的主机上运行。约1微秒延迟。仅支持C、C++和Rust。

当JSON-RPC无法跟上10,000 TPS吞吐量时使用执行事件。对于大多数dApp,标准WebSocket订阅就足够了。

必需工具版本

工具 最低版本
Foundry Monad 分支 (foundryup --network monad)
viem 2.40.0+
alloy-chains 0.2.20+
Hardhat Solidity evmVersion: “prague”

附加参考文件

文件 内容
architecture.md MonadBFT共识,并行执行,延迟执行,MonadDb,JIT,RaptorCast
deployment.md Foundry + Hardhat 部署/验证分步指南
gas-and-opcodes.md Gas定价模型,操作码重新定价表,预编译成本
staking.md 质押预编译ABI,函数,事件,纪元机制
ecosystem.md 代币地址,桥接,预言机,索引器,规范合约