我正试图用加纳奇( ganache )为干式运行事务分发一条链。但我还是不太明白,下面是我的问题:
Q1:它会下载整个区块链吗?或者只是一个很小的版本,还是根本不下载?
Q2:它是否继续与原始节点联系,以便在分叉之后获取一些数据?
我似乎在官方文件里找不到关于这些问题的任何东西。
发布于 2021-07-17 16:01:19
它依赖于外部源(从)获取分叉前的信息,然后依赖于自己的块生成器,并在分叉之后追加新的块。它将继续依赖外部源获取有关预分叉状态的信息。
您可以使用它来测试交互。例如,如果您希望运行与流动性池交互的单元测试,并且希望测试尽可能真实。您可以在这些东西已经存在的地方分叉一个链,然后部署您的契约并运行交互场景。
希望能帮上忙。
发布于 2021-07-19 18:30:36
Ganache叉允许依赖外部源来获得通过链状态。这允许查询必要的数据,而且只有这一点。把它想象成一个轻量级的客户。
创建叉子时,它意味着它将依赖RPC来获取不可用的过去状态( merkle根),但是如果在ganache中有某种状态可用,那么它将依赖于它。例如,在启动时,它将为10个用户地址种子,每个地址为100 Eth。转移资金只会对地方政府产生明显的影响。每个新的块只是一个有符号的状态转换。
A1:它不是全部下载,它只查询执行tx所需的状态部分。如果您想要与合同进行交互,它将得到合同代码。
A2:由于它不下载块,所以每当需要某些过去的状态并且在本地不可用时,它就会继续调用RPC。本地存储的过去状态的数量由forkCacheSize
参数定义。
根据您使用的RPC,如果您一直请求大量数据,它可能会很慢。如果您一次又一次地与相同的契约进行交互,那么数据已经在本地缓存,并且没有更多的查询来自RPC。
至于为什么在启动时,ganache可以创建一个新的块种子100 Eth到10个地址,对于dev来说,ganache有一个特殊的规则使这样的块有效。
https://ethereum.stackexchange.com/questions/103184
复制相似问题