首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有可能硬把一个专用网络分给君士坦丁堡吗?

有可能硬把一个专用网络分给君士坦丁堡吗?
EN

Ethereum用户
提问于 2019-07-10 21:29:46
回答 1查看 682关注 0票数 4

我有一个由Proof-of-Authority引擎创建的具有Byzantium EVM版本的D1专用Ethereum网络。我有一个矿工有Geth版本:v1.8.27

代码语言:javascript
复制
{
  "config": {
    "chainId": 23422,
    "homesteadBlock": 1,
    "eip150Block": 2,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 3,
    "eip158Block": 3,
    "byzantiumBlock": 4,
    "clique": {
      "period": 15,
      "epoch": 30000
    }
  },
}

请查看我的配置文件:custom.json

当我启动geth时,我得到以下输出:

代码语言:javascript
复制
INFO [07-10|13:46:36.647] Initialised chain configuration          
config="{ChainID: 23422 Homestead: 1 DAO:  DAOSupport: false EIP150: 2
EIP155: 3 EIP158: 3 Byzantium: 4 Constantinople:   
Petersburg:  Engine: clique}"

我假设,由于配置文件中的Constantinople: ,而且我不能更改自定义配置文件,所以我无法硬分私有链。

在此:

配置是通过代码中的常量来固定的(参见ChainConfig)。可以在成因规范文件中提供自定义配置,但是,这仅适用于设置新链时。因此,目前在专用网络中制造硬分叉的唯一方法是确保所有参与者在预定义的时隙中关闭/升级/重新启动。

//我已经更新了geth版本,但总的来说,我不确定是否更新了私有链。

<#>我想知道,是否有可能将具有与Constantinople EVM不同版本的私有链硬分叉?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2019-07-13 12:51:15

简单地说,我们需要为你们链上的网络做同样的事情。

我们有两个选择:

1。首先是像这样回答

如何设置专用ethereum链的constantinople叉

修改源代码中的配置,如下所示:

在以下文件中更新与您的config.json文件相关的配置

更新config.go中的https://github.com/ethereum/go-ethereum/blob/49a7ee460e839499ef41f5110b219ec8c8edc5e8/params/config.go#L66

在您的例子中,config.go应该如下所示

代码语言:javascript
复制
    // MainnetChainConfig is the chain parameters to run a node on the main network.
    MainnetChainConfig = &ChainConfig{
        ChainID:             big.NewInt(23422),
        HomesteadBlock:      big.NewInt(1),
        DAOForkBlock:        nil,
        DAOForkSupport:      true,
        EIP150Block:         big.NewInt(2),
        EIP150Hash:          common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"),
        EIP155Block:         big.NewInt(3),
        EIP158Block:         big.NewInt(3),
        ByzantiumBlock:      big.NewInt(4),
        ConstantinopleBlock: big.NewInt(xxxxxx),
        PetersburgBlock:     big.NewInt(xxxxxx),
        Clique: &CliqueConfig{
            Period: 15,
            Epoch:  30000,
        },
    }

xxxxxx是您希望在您的私有链上执行硬叉的未来块号。

此外,PetersburgBlockConstantinople Fix,这是因为下面链接上的查不安全性发现了Constantinople的安全漏洞。

https://medium.com/chainsecurity/constantinople-enables-new-reentrancy-attack-ace4088297d9

即将到来的君士坦丁堡对ethereum网络的升级为某些SSTORE业务带来了更低的天然气成本。作为一个不想要的副作用,这使重入攻击时使用address.transfer(.)或address.send(.)在可靠、明智的合同中。以前,这些功能被认为是可重入的-安全的,它们不再是。

然后,对于仍然不启用Constantinople的链,ConstantinopleBlockPetersburgBlock将是相同的块号。

我们还需要在genesis_alloc.go中创建成因分配常量,也可以运行mkalloc,如下面指南中的指南所示。

https://github.com/ethereum/go-ethereum/blob/6bd896a97f0c86fdb6d0538f5f839d7ea104e888/core/mkalloc.go#L24

然后修改下面一行中的默认成因块

https://github.com/ethereum/go-ethereum/blob/6bd896a97f0c86fdb6d0538f5f839d7ea104e888/core/genesis.go#L317

您可以通过查看输出日志来进行正常检查;ConstantinoplePetersburg必须显示我们在config.go上设置的块号。

代码语言:javascript
复制
INFO [07-10|13:46:36.647] Initialised chain configuration          
config="{ChainID: 23422 Homestead: 1 DAO:  DAOSupport: false EIP150: 2
EIP155: 3 EIP158: 3 Byzantium: 4 Constantinople:   
Petersburg:  Engine: clique}"

希望这能帮上忙!

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/72786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档