FoundryAnvil详解
使用方法:anvil
[options]
描述
创建本地测试网节点,用于部署和测试智能合约,还可以用于分叉其他 EVM 兼容网络。
这里涵盖了有关:
- 挖矿模式
- 支持的传输层
- 支持的 RPC 方法
- Anvil 标志以及其用法(可以同时运行多个标志)
挖矿模式(Mining Modes)
挖矿模式是指使用 Anvil 挖矿区块的频率。默认情况下,他会在提交交易后立即自动生成一个新的区块
如果需要,我们可以手动设置更改为间隔挖矿(在用户选择的给定时间段后生成新区块),使用方法:添加--block-time <block-time-in-seconds>
标志来实现
# 每 10 秒自动挖掘一个新的区块
anvil --block-time 10
还有第三种挖矿模式:永不挖矿。在这种情况下,禁用自动和间隔挖矿,而是按需挖矿。可以通过以下内容来执行此操作:
# 设置永不挖矿模式
anvil --no-mining
支持的传输层(Supported Transport Layers)
支持 HTTP 和 Websocket 连接。默认情况下,服务器监听 8545 端口,但是可以使用下面的命令来更改端口:
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 价格