前言

Fork主网意思是模拟具有与主网相同的状态的网络,但它将作为本地开发网络工作。 这样你就可以与部署的协议进行交互,并在本地测试复杂的交互。不用担心分叉主网作为测试链会占很多内存。这些方法都不会将主网信息全部下载到本地,最多进行缓存,加快处理速度。所有关于主网的信息,都会通过 Provider 进行查询,只有新的区块会保存在本地。

所需要用到的工具,具体的安装过程在这篇文章中就不展开,请读者自行安装:

  • ganache-cli
  • remix
  • matemask
  • alchemy

Fork以太链分叉

首先,去alchemy申请一个账号,获取alchemy provider,如下图所示。

然后在ganache-cli的github上可以找到他的参数调用方法:https://github.com/trufflesuite/ganache-cli-archive

其中关于fork分叉的描述为:

-f or --fork: Fork from another currently running Ethereum client at a given block. Input should be the HTTP location and port of the other client, e.g. http://localhost:8545. You can optionally specify the block to fork from using an @ sign: http://localhost:8545@1599200.

我们可以采用以下命令在本地fork以太坊分叉

ganache-cli --fork {alchemy provider}@{block number}

结果如下,现在已经成功fork了以太坊在区块13730855时候的分叉

交互

根据cmd中最后一行给出的地址127.0.0.1:8545,将fork下来的分叉链添加到matemask上,其中链IDmatemask建议为1337



然后在cmd中挑选一个账户(初始金额为100ETH),将其添加到matemask的账户列表中。


账户添加完成后,打开remix,当账户连接到ganache-cli链上时,选择injectd Web3



在matemask上进行连接。


连接成功,现在可以通过remix来操作账户与ganache-cli链进行交互了

随机挑选一位幸运儿进行转账测试,成功!接下来就可以开始你的测试之旅了!

注意事项

当采用infure作为provider,会在进行交互阶段报错Project ID does not have access to archive state

解决方法:https://hardhat.org/hardhat-network/guides/mainnet-forking.html#project-id-does-not-have-access-to-archive-state

"Project ID does not have access to archive state"

When using Infura without the archival add-on, you will only have access to the state of the blockchain from recent blocks. To avoid this problem, you can use either a local archive node or a service that provides archival data, like Alchemy (opens new window).

言简意赅就是:用Alchemy作为provider

最新文章

  1. 如何让win10实现关机确认-暂没确认
  2. 401. Binary Watch
  3. 转载:JProfiler远程监控LINUX上的Tomcat过程细讲
  4. console.log 被重写覆盖以后如何恢复
  5. Failed to run the WC DB work queue associated with 错误的解决
  6. DOS系统功能调用表(INT 21H)
  7. 12100 Printer Queue(优先队列)
  8. Resharper上手指南
  9. Android07-Android广播
  10. SQL Server-聚焦NOLOCK、UPDLOCK、HOLDLOCK、READPAST你弄懂多少?(三十四)
  11. 利用LinkedList生成一副扑克牌
  12. 【Android Developers Training】 96. 运行一个同步适配器
  13. Web前端框架与移动应用开发第八章
  14. DeskMini无传统机械键盘与鼠标接口的情况下使用U盘安装系统经验总结
  15. Python读文本文件
  16. mysql完整版
  17. route命令使用
  18. springmvc+spring+mybatis+maven项目构建
  19. 【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?
  20. Redis设计与实现 (一): 简单动态字符串

热门文章

  1. postman调试工具介绍及常用的快捷键收集
  2. [源码解析] PyTorch 分布式(7) ----- DistributedDataParallel 之进程组
  3. Java数组声明
  4. idea配置MyBatis
  5. 31、下一个排列 | 算法(leetode,附思维导图 + 全部解法)300题
  6. .NET 5的System.Text.Json的JsonDocument类讲解
  7. 洛谷 P5279 - [ZJOI2019]麻将(dp 套 dp)
  8. annovar 注释除人类以外的SNP
  9. 【shell】循环将字符串写入数组中?
  10. SQL-用到的数据库语句总结