从这里开始
- 网络信息 - 用于 RPC 和区块浏览器 URL,以及权威合约部署。
- Monad 与以太坊的差异
protocols仓库(添加您的项目!)token-list仓库(添加您的项目!)- RPC API - 交互式参考
支持的工具和基础设施
以下是一些最常请求的工具:有关完整的支持列表,请参见工具和基础设施,包括:
账户
| 地址空间 | 与以太坊相同的地址空间(ECDSA 公钥的最后 20 字节) |
| EIP-7702 | 支持。参见 EIP-7702 参考 |
智能合约
有关部署和验证指南,请参见:| Opcodes | 支持截至 Fusaka 分叉的所有 opcode。 |
| 预编译 | 截至 Fusaka 分叉的所有以太坊预编译(0x01 到 0x11),加上 0x0100 的 P256 签名验证(EIP-7951)和 0x1000 的质押预编译。参见预编译 |
| 最大合约大小 | 128 kb(以太坊为 24.5 kb) |
交易类型
完整文章:交易| 交易类型 | 支持:
|
Gas 限制
| 每交易 gas 限制 | 30M gas |
| 区块 gas 限制 | 150M gas |
| 区块 gas 目标 | 80%(120M gas) |
| Gas 吞吐量 | 500M gas/秒(150M gas/区块 ÷ 0.3 秒/区块) |
Gas 定价
完整文章:Gas 定价| 收取的 gas | 收取的是gas 限制。即:从发送者余额中扣除的代币总量为 value + gas_price * gas_limit。参见讨论。 |
| EIP-1559 动态 | Monad 兼容 EIP-1559;base fee 和优先费的工作方式与以太坊相同。EIP-1559 说明 |
| Base fee | 最低 base fee 为 100 MON-gwei(100 * 10^-9 MON)。 Base fee 控制器类似于以太坊,但保持较高水平的时间更短(详情)。 |
Opcode 定价
完整文章:Opcode 定价 Opcode 定价与以太坊相同(参见:evm.codes),除了以下由于 Monad 优化需要重新定价以重新平衡资源相对稀缺性的调整。| 项目 | 以太坊 | Monad | 说明 |
|---|---|---|---|
| 冷访问成本 - 账户 | 2,600 | 10,100 | 受影响的 opcode:BALANCE、EXTCODESIZE、EXTCODECOPY、EXTCODEHASH、CALL、CALLCODE、DELEGATECALL、STATICCALL、SELFDESTRUCT参见详情 |
| 冷访问成本 - 存储 | 每 slot 2,100 | 每 128 个 slot 一页 8,100 | 受影响的 opcode:SLOAD、SSTORE。存储的 warm 单位是每 128 个连续 slot 一页,因此冷成本按页支付一次。参见存储与详情 |
SSTORE 写入与状态增长 | 全新 slot 20,000 覆盖 2,900 | 每页首次写入 2,800 每页新增净 slot 17,000 | 在上述冷访问成本之上收取。 参见详情 |
| 内存扩展成本 | 3*w + w^2/512 | w/2 | w 是以 32 字节字为单位的内存大小。每笔交易的内存上限为 8 MB。参见详情 |
ecRecover、ecAdd、ecMul、ecPairing、blake2f、point_eval 预编译 | 参见详情 预编译 0x01、0x06、0x07、0x08、0x09、0x0a |
时间考量
| 出块频率 | 300 ms |
TIMESTAMP opcode | 与以太坊一样,TIMESTAMP 是秒级粒度的 unix 时间戳。由于区块每 300 ms 出一次,这意味着 3-4 个区块可能具有相同的时间戳。 |
| 最终性 | 区块在两个区块后(600 ms)最终确认。一旦区块被最终确认,就不能被重组。参见 MonadBFT 以了解更完整的讨论。 |
| 推测性最终性 | 当区块被标记为处于 Voted 阶段时,它可以在一个区块后(300 ms)推测性最终确认。推测性最终性在非常罕见的情况下可能会回滚(参见更完整的讨论)。 |
Mempool
完整文章:本地 Mempool Monad 没有全局 mempool,因为这种方法不适合高性能区块链。 每个验证者维护一个包含其所知交易的本地 mempool。当 RPC 收到交易时,它会策略性地转发给即将 到来的 leader,并在未观察到交易被包含时重复此过程。 尽管这是 Monad 设计的重要部分,但通常不应影响智能合约开发者在其系统设计中的工作。并行执行和 JIT 编译
Monad 利用并行执行和 JIT 编译来提高效率, 但智能合约开发者无需为此做任何更改。 在 Monad 中,交易仍然是线性排序的,执行的唯一正确结果与串行执行交易的结果相同。 智能合约开发者可以将并行执行的所有方面视为实现细节。 参见进一步讨论。异步执行
完整文章:异步执行 Monad 利用异步执行以提高效率,但大多数开发者不应需要做任何更改。 具有大量链下财务逻辑的开发者(例如交易所、跨链桥和稳定币/RWA 发行方)应该等到区块达到Verified阶段(即状态根最终性),
比Finalized晚三个区块,
以确保整个网络认同其自己节点对最终确认区块的本地执行。
异步执行和区块阶段
异步执行和区块阶段
异步执行是一种技术,通过将共识与执行解耦,允许 Monad 大幅提高执行吞吐量。
在异步执行中,验证者先投票,后执行 - 因为一旦交易顺序确定,状态就确定了。
之后,每个节点在本地执行。三个区块后有一个延迟 merkle 根
确认网络得到了与本地执行相同的状态 trie。从开发者的角度来看:
- 有人通过您的前端提交了一笔与您的智能合约交互的交易。您记下哈希。
- 一个包含该交易的区块被
Proposed。 - 一个区块后,该区块被
Voted(推测性最终确认)。(T+1) - 一个区块后,该区块被
Finalized(T+2) - 三个区块后,该区块被
Verified(状态根最终确认)(T+5)
eth_getTransactionReceipt 来监听交易收据。
收据将在区块变为 Proposed(推测性执行)后首次可用。您选择何时更新 UI 以向用户提供反馈取决于风险偏好,但对于大多数应用,
在区块变为 Proposed 时这样做是合理的,因为推测性最终性回滚极其罕见。更保守的方法是等到
区块 Finalized,因为那时您就永远不必处理重组。通常不需要等到 Verified
(除了前面提到的具有链下财务逻辑的开发者)。储备余额
完整文章:储备余额 Monad 引入了储备余额机制以支持异步执行。 储备余额机制在共识时对交易何时可以被包含施加轻度限制,并对交易在执行时回滚的条件施加一些约束。 储备余额机制旨在在保持异步执行下的安全性的同时不干扰正常使用模式。大多数用户和开发者 无需担心储备余额约束。EIP-7702
支持 EIP-7702;完整说明请参见此处。 有两个注意事项:- 如果一个 EOA 被 EIP-7702 委托,由于储备余额规则, 其余额不能降至 10 MON 以下。(如果委托被移除,则允许低于 10 MON。) 讨论。
-
如果一个 EOA 被 EIP-7702 委托,当它被当作智能合约调用时,
CREATE和CREATE2opcode 会被禁止。讨论。
读取区块链数据
支持以下方法读取区块链数据:| JSON-RPC | 参见 RPC API。Monad 支持所有来自以太坊的标准 RPC 方法。差异在 RPC 差异 中说明。速率限制请参见此处。 |
| WebSocket | 参见 WebSocket 指南。 Monad 使用以下订阅类型实现 eth_subscribe 方法:
syncing 和 newPendingTransactions 订阅类型。
有关更多详情,请参见实时数据源。 |
| 执行事件 | 参见执行事件。 执行事件系统允许开发者构建高性能应用,这些应用通过共享内存队列从 Monad 节点接收最低延迟的事件数据。 |
历史数据
Monad 全节点提供对所有历史账本数据(区块、交易、收据、事件和 trace)的访问。 Monad 全节点不提供对任意历史状态的访问,如此处所述。 有一个特殊的 RPC 服务位于 提供对历史数据的访问。推荐的开源工具版本
foundry >= 1.8.0:启用 Monad 执行网络 以获得 Monad 的 gas 定价、hardfork 和预编译viem >= 2.40.0(只是为了引入 monad.ts)alloy-chains >= 0.2.20

