问题描述
我想在以太坊上测试许多智能合约之间的一些重叠,但是:
- 其中许多在测试网上不可用/在不同的测试网上。
- 其中一些的历史/状态发生了重大变化,很难正确再现当前状态。
那么,为了尽可能接近实际的主网,有没有办法复制整个区块链的当前状态,包括所有交易,并在特定块上分叉以测试一些功能?
official documentation 解释了如何创建私有网络,但我们如何基于特定主网的区块创建私有网络?
谢谢
解决方法
您可以使用 --fork
选项运行 Ganache。
从另一个当前正在运行的以太坊客户端在给定块上分叉。输入应该是其他客户端的 HTTP 位置和端口,例如http://localhost:8545
。您可以选择使用 @ 符号指定要分叉的块:http://localhost:8545@1599200
。
所以实际的命令可能是这样的:
ganache-cli --fork https://mainnet.infura.io/v3/<your_infura_id>