Q1ngying

今朝梦醒与君别,遥盼春风寄相思

0%

FoundryAnvil详解

anvil:创建用于部署和测试智能合约的本地测试网节点。它还可以分叉其他 EVM 兼容网络。

使用方法:anvil [options]

描述

创建本地测试网节点,用于部署和测试智能合约,还可以用于分叉其他 EVM 兼容网络。

这里涵盖了有关:

  • 挖矿模式
  • 支持的传输层
  • 支持的 RPC 方法
  • Anvil 标志以及其用法(可以同时运行多个标志)

挖矿模式(Mining Modes)

挖矿模式是指使用 Anvil 挖矿区块的频率默认情况下,他会在提交交易后立即自动生成一个新的区块

如果需要,我们可以手动设置更改为间隔挖矿(在用户选择的给定时间段后生成新区块),使用方法:添加--block-time <block-time-in-seconds> 标志来实现

1
2
# 每 10 秒自动挖掘一个新的区块
anvil --block-time 10

还有第三种挖矿模式:永不挖矿。在这种情况下,禁用自动和间隔挖矿,而是按需挖矿。可以通过以下内容来执行此操作:

1
2
# 设置永不挖矿模式
anvil --no-mining

支持的传输层(Supported Transport Layers)

支持 HTTP 和 Websocket 连接。默认情况下,服务器监听 8545 端口,但是可以使用下面的命令来更改端口:

1
anvil --port <PORT>

默认 CREATE2 部署程序(Default CREATE2 Deployer)

Anvil 在不分叉的情况下使用时,在地址0x4e59b44847b379578588920ca78fbf26c0b4956c包含默认的 CREATE2 部署器代理。

允许在本地测试 CREATE2 部署,无需分叉

支持的 RPC 方法(Supported RPC Methods)

标准方法:

标准方法基于此处参考。

详细参考Foundry官方文档

选项

常规选项(常用)

-a, --accounts <ACCOUNTS> 设置账户数量 [default: 10]

--auto-impersonate 在启动时启用自动模拟

-b, --block-time <block-time> 间隔挖矿的区块时间(以秒为单位)

--balance <BALANCE> 设置账户余额[default: 10000]

--derivation-path <DERIVATION_PATH> 要派生的子键派生路径[default: m/44’/60’/0’/0/]

-h, --help 打印帮助信息

--hardfork <HARDFORK> 选择要使用的 EVM 硬分叉,e.g. shanghai,paris,london,等 [default: lastet]

--init <PATH> 使用给定的gennesis.json 文件初始化创世块

-m, --mnemonic <MNEMONIC> BIP39 生成账户的助记词

--no-mining 禁用自动和间隔挖矿,改为按需挖矿

--order <ORDER> 如何在内存池中对交易进行排序 [default: fees]

-p, --port 要监听的端口号 [default: 8545]

更多详见Foundry Book

EVM 选项

-f, --fork-url <URL> 通过远程端点获取状态,而不是从空状态开始(分叉对应 rpc 的区块链网络状态到本地 anvil 中)

--fork-block-number <BLOCK> 通过远程端点从特定的区块号获取状态(必须在同一命令行中传递 --fork-url

--fork-retry-backoff <backoff> 遇到错误时的初始重试回退

--retries <retries> 虚假网络的重试请求数(超时请求)。[default value = 5]

--timeout <timeout> 在分叉模式下发送到远程 JSON-RPC 服务器的请求超时(毫秒)。[default value = 5]

更多详见Foundry Book

执行器环境配置

--base-fee <FEE> --block-base-fee-per-gas <FEE> 区块中的基本费用

--chain-id <CHAIN_ID> 链 ID [默认:31337]

--code-size-limit <CODE_SIZE> EIP-170:合约代码大小限制(以字节为单位)。由于测试,增加这一点很有用。默认情况下,它是 0x6000 (~25kb)

--gas-limit <GAS_LIMIT> 块气体限制

--gas-price <GAS_PRICE> gas 价格

服务器选项

详见Foundry Book