createFork
签名
// 使用给定的端点创建一个新的分叉,并返回该分叉的标识符
function createFork(string calldata urlOrAlias) external returns (uint256)
// 创建一个新的分叉,并选择使用给定的端点和块,并返回该分叉的标识符
function createFork(string calldata urlOrAlias, uint256 block) external returns (uint256);
// 使用给定的端点创建一个新的分叉,并在给定交易所在的块处开始,并重放该交易之前的所有交易
function createFork(string calldata urlOrAlias, bytes32 transaction) external returns (uint256);
描述
从给定的端点创建一个新的分叉,并返回该分叉的标识符。如果作为参数传递了块号,则该分叉将从该块开始,否则将从最新的块开始。
如果提供了交易哈希,则将该分叉滚动到包含该交易的块,并重放所有先前执行的交易。
例子
使用最新的块号创建一个新的主网分叉:
uint256 forkId = vm.createFork(MAINNET_RPC_URL);
vm.selectFork(forkId);
assertEq(block.number, 15_171_037); // as of time of writing, 2022-07-19 04:55:27 UTC
使用给定的块号创建一个新的主网分叉:
uint256 forkId = vm.createFork(MAINNET_RPC_URL, 1_337_000);
vm.selectFork(forkId);
assertEq(block.number, 1_337_000);