85

快速搭建主网分叉链(fork mainnet)

 3 years ago
source link: https://www.inevitable.tech/posts/495f572d/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

区块链开发的体验还是有点差。

随着 Defi 的发展,智能合约开始相互调用。这给开发和测试带来了一定的难度。我们可以在本地搭建测试链,然后部署需要调用的外部合约。也可以直接使用测试网络,调用部署上面的外部合约。这两种方法都很麻烦。对于第一种方法,如果需要重置环境,那么我们每次都要重新部署外部合约。对于第二种方法,不是所有的合约都部署到了测试网络,而且有些测试网络上的合约和主网会有所区别。

最简单的方法就是我们从主网分叉一条链进行本地开发和维护。需要重置时,就重新进行分叉。这样测试环境基本和主网就是一摸一样了。

Truffle Team

这是 Truffle Teams。他们支持 Sandbox 功能。用户可以一键搭建一条从主网分叉的链。这条链运行在云端,我们只需要通过 RPC 进行调用即可。免费用户至多拥有一个沙盒。

Sandbox 的好处在于即开即用,链运行在云端,适合团队协作。坏处在于没有日志,无法追踪新产生的交易。如果忘记了新部署的合约地址,那么就得重新部署一遍。

Ganache

Ganache-cli 也支持从主网进行分叉。可能这就是 Truffle Team 用的产品吧。使用之前我们需要有一个 Provider。可以是 Infura,也可以用不需要注册的 cloudflare-eth。运行起来也很方便,而且支持了更多的自定义选项。ganache-cli --fork https://mainnet.infura.io/v3/{infura_project_id}@{block_number}ganache-cli -f https://cloudflare-eth.com/ -m "clutch captain shoe salt awake harvest setup primary inmate ugly among become" -i 999 -u 0x9759A6Ac90977b93B58547b4A71c78317f391A28

  • f provider。
  • m 助记词。前十个地址有 100ETH。
  • i 网络 ID。
  • u 地址拥有写入权限,不需要知道私钥。

启动了测试链之后,我们可以在终端看到最新的交易信息等。此测试链可以用于 Remix,Truffle,Hardhat。 由于我们用 Ganache-cli 启动测试链,我们没法使用 Ganache GUI。

Hardhat

这个跟 Ganache-cli 差不多。相关源代码

不用担心分叉主网作为测试链会占很多内存。这些方法都不会将主网信息全部下载到本地,最多进行缓存,加快处理速度。所有关于主网的信息,我们都会通过 Provider 进行查询,只有新的区块会保存在本地。

Testing on Mainnet with Jest, Ganache, and Uniswap

Testing your smart contract with existing protocols: Ganache fork - EthereumDev

Ethereum development environment for professionals by Nomic Labs


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK