Skip to main content
Foundry v1.8 或更高版本在 Forge、Anvil、Cast、Chisel、追踪和 cheatcode 中提供了一流的 Monad 执行支持。进行 Monad 开发时,请使用官方 Foundry 发行版。 有关 Foundry 的一般用法,包括编写测试和脚本、部署、配置和 cheatcode,请参阅 Foundry 文档

安装

安装官方 Foundry 安装器:
按照安装器提示将 foundryup 添加到您的 shell,然后安装最新的稳定版 Foundry:
确认您正在运行 Foundry v1.8.0 或更高版本:
v1.8 之前的 Foundry 版本不包含 Monad 执行支持。

配置 Monad 执行

在项目的 foundry.toml 中设置执行网络:
foundry.toml
此设置使本地的 Forge、Cast 和 Chisel 执行使用 Monad 的 gas 模型、opcode 定价、交易规则、预编译以及合约大小限制。 您也可以只针对单个命令选择 Monad:

Hardfork 选择

本地 Monad 执行默认采用受支持的最新 Monad hardfork,当前为 MonadTen。要复现较早的 hardfork,请显式设置:
foundry.toml
您也可以只为单个命令选择 hardfork:
当 Foundry fork 主网或测试网时,它会根据端点的 chain ID 和被 fork 区块的时间戳自动选择处于活跃状态的 Monad hardfork。

Monad 执行特性

有关协议差异的完整列表,请参阅 Monad 与以太坊之间的差异

Anvil

使用 --network monad 启动一个使用 Monad 执行环境的本地 Anvil 节点:
Anvil 对新的本地链默认使用 MonadTen。您也可以 fork Monad 测试网或主网:
当 fork 规范的 Monad 端点时,Anvil 会根据其 chain ID 检测 Monad 网络,并为 fork 区块选择处于活跃状态的 hardfork。

Cast 和 Chisel

当在 foundry.toml 中设置了 network = "monad" 时,Cast 和 Chisel 会使用 Monad 执行环境。您也可以在受支持的命令中直接传入 --network monad 所有标准的 Cast 和 Chisel 工作流仍然可用。追踪中的 Monad 特定预编译调用会以人类可读的名称和参数进行解码。

CI 集成

使用官方的 Foundry toolchain action 并安装 v1.8.0 或更高版本:
例如:

从 Monad Foundry 迁移

旧版 Monad Foundry 分支 仅通过 MonadNine hardfork 支持 Monad 执行。它不支持 MonadTen 或 MIP-8,建议从中迁移。
迁移步骤:
  1. 使用官方安装器安装 Foundry v1.8 或更高版本,并运行 foundryup
  2. 在您的 foundry.toml 中添加 network = "monad",或在单个命令中传入 --network monad
  3. anvil --monad 替换为 anvil --network monad
  4. 在 CI 中将 category-labs/foundry-toolchain@v1 替换为 foundry-rs/foundry-toolchain@v1
  5. 移除任何从 foundry.category.xyz 安装 Foundry 或运行 foundryup --network monad 的脚本。
官方发行版包含此前由该分支提供的 Monad 执行行为、预编译、追踪解码和工具集成,并新增了 MonadTen 支持。