> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monad.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Monad 与以太坊的差异

<Tip>
  使用 [Foundry v1.8.0 或更高版本](/zh/tooling-and-infra/toolkits/foundry) 并启用 Monad 执行网络, 使您的本地开发环境遵循 Monad 的链上行为。
</Tip>

本列表汇总了从智能合约开发者角度来看,Monad 与以太坊之间显著的行为差异。

## 虚拟机

1. 最大合约代码大小限制为 128 KB(以太坊为 24 KB)。因此,最大初始化代码大小限制为 256 KB(以太坊为 48 KB)。
2. 一些 opcode 和预编译被重新定价,以基于 Monad 的优化重新平衡资源的相对稀缺性。参见 [Opcode 定价](/zh/developer-essentials/opcode-pricing)。
3. 内存扩展按线性而非二次方定价,并且一笔交易最多可以使用 8 MB 内存。参见[内存扩展](/zh/developer-essentials/opcode-pricing#memory-expansion)。
4. 支持位于 `0x0100` 的 `secp256r1`(P256)验证预编译(根据 [EIP-7951](https://eips.ethereum.org/EIPS/eip-7951)),从而能够在链上 验证 WebAuthn/passkey 签名。 参见[预编译](/zh/developer-essentials/precompiles#p256-signature-verification)。

## 存储

存储 slot 被分组为每页 128 个连续 slot。访问按页而不是按 slot 进行 warm: 对某页的第一次 `SLOAD` 或 `SSTORE` 支付冷成本,该页的其他每个 slot 在该交易的其余时间内均为 warm。

Solidity 已经生成的存储布局无需修改即可获益,因为状态变量、结构体字段和数组元素占据连续 slot。 将 slot 散布到多个页的布局也不会受到惩罚;每一页各自支付自己的冷成本。

gas 计价请参见[存储页](/zh/developer-essentials/opcode-pricing#storage-pages),规范请参见 [MIP-8](https://mips.monad.xyz/MIPs/MIP-8)。

## 交易

1. 交易按 gas limit而非 gas usage收费,即从发送者余额中扣除的总 gas 为 `value + gas_bid * gas_limit`。如 [Monad 中的 gas](/zh/developer-essentials/gas-pricing) 中所述,这是异步执行的 DoS 防护措施。
2. 共识和执行利用[储备余额](/zh/developer-essentials/reserve-balance)机制确保 共识中包含的所有交易都能够被支付。此机制在共识时对交易包含施加轻度限制, 并定义了在执行时交易将回滚的特定条件。
3. 由于储备余额机制,您可能会在区块链中看到最终由于尝试花费超过账户余额的 MON 而失败的交易。这些交易仍然支付 gas,并且是有效交易,其结果是执行回滚。 这不是协议差异,因为许多以太坊的回滚交易也会被包含在链上,但可能与预期不同。 [更详细的讨论](/zh/developer-essentials/reserve-balance#transactions-that-are-included-but-revert)。
4. 不支持交易类型 3(EIP-4844,即 blob 交易)。
5. 没有全局 mempool。为了效率,交易会被转发给接下来的几位 leader, 如[本地 Mempool](/zh/monad-arch/consensus/local-mempool) 中所述。

## EIP-7702 委托

1. 如果一个 EOA 被 EIP-7702 委托,由于[储备余额](/zh/developer-essentials/reserve-balance)规则, 其余额不能降至 10 MON 以下。如果委托被移除,则允许低于 10 MON。 [讨论](/zh/developer-essentials/eip-7702#delegated-eoas-can%E2%80%99t-dip-below-10-mon)。
2. 如果一个 EOA 被 EIP-7702 委托,当它被当作智能合约调用时, `CREATE` 和 `CREATE2` opcode 会被禁止。[讨论](/zh/developer-essentials/eip-7702#delegated-contract-code-cannot-call-create/create2)。

## 历史数据

由于 Monad 的高吞吐量,全节点不提供对任意历史状态的访问, 因为这将需要过多的存储。参见[历史数据](/zh/developer-essentials/historical-data)以了解更完整的讨论。

## RPC

参见:[RPC 差异](/zh/reference/json-rpc/overview)
