硬叉子是怎么制成的?
我认为有必要更新genesis.json文件来定义发生hardofrks的块(例如Constantinople: 7 080 000)。但是,如果我们输入“-datadir has newgenesis.json init”,就会产生一个问题,因为块链已经用另一个成因文件初始化了。在论坛中,据说会删除文件夹并从零开始重新启动区块链。但这意味着重新启动块链,这与升级和准备硬叉非常不同。
考虑到这些限制,Ethereum节点如何更新它们的块链?什么是最好的方式来规划硬叉子对以太硬叉子?
非常感谢!
发布于 2023-02-07 17:44:51
不,没有必要将硬叉号放在成因文件中,实际上它们不是从genesis.json文件中读取的。它们是从源代码中读取的,使用成因的hash作为查找值。因此,它读取您的成因散列,并使用if语句加载与您的网络(MainNet、Rposten等)对应的配置文件。
您可以修改geth源代码以添加您自己的成因散列,它将查找您的特定ChainConfig,如下所示:
func (g *Genesis) configOrDefault(ghash common.Hash) *params.ChainConfig {
switch {
case g != nil:
return g.Config
case ghash == params.MainnetGenesisHash:
return params.MainnetChainConfig
case ghash == params.RopstenGenesisHash:
return params.RopstenChainConfig
case ghash == params.SepoliaGenesisHash:
return params.SepoliaChainConfig
case ghash == params.RinkebyGenesisHash:
return params.RinkebyChainConfig
case ghash == params.GoerliGenesisHash:
return params.GoerliChainConfig
default:
return params.AllEthashProtocolChanges
}
}例如,您可以使用成因散列或您自己的私有网络来代替GoerliGenesisHash。(或添加另一条case语句)
考虑到这些限制,Ethereum节点如何更新它们的块链?
使用更新的配置使您的自定义geth源,并在您的私有节点用户之间分发。这就是我的方法
https://ethereum.stackexchange.com/questions/144358
复制相似问题