#StackBounty: #go-ethereum #private-blockchain #hardforks It possible to hard fork a private network without resyncing chain from scrat…

Bounty: 50

I am able to hard fork my private chain into first Constantinople and than to Istanbul, please see the answer for it.

My approach is:

  • I have updated geth to its highest version
  • I have kept the go-ethereum/params/config.go file as it is
  • I have updated the genesis.json file by adding "constantinopleBlock": 2862930, "petersburgBlock": 2862930, and "istanbulBlock": 3831182. Block numbers are selected based on my chain.
  • I have removed the chain. sudo rm -rf chaindata lightchaindata
  • Initialized my chain by started it with geth init
  • Finally, I have started my chain, which started to sync from 0th block

I have tried this without removing the chain but it did not work. So from scratch since genesis block should be updated, I am syncing the chain from 0th, block which is very uniefficient.

[Q] I was wondering is it possible to hard fork a private network without resyncing chain from the 0th block? This approach is inefficient to sync few GB all over again for all the nodes on the network.

Get this bounty!!!

#StackBounty: #go-ethereum #private-blockchain #hardforks #clique Is it possible to hard fork a private network to Constantinople?

Bounty: 50

I have a Proof-of-Authority private Ethereum network that has Byzantium EVM version and created by clique engine. I have a single miner that has Geth version: v1.8.27.

  "config": {
    "chainId": 23422,
    "homesteadBlock": 1,
    "eip150Block": 2,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 3,
    "eip158Block": 3,
    "byzantiumBlock": 4,
    "clique": {
      "period": 15,
      "epoch": 30000

Please see my configuration file: custom.json.

When I start geth I get following output:

INFO [07-10|13:46:36.647] Initialised chain configuration          
config="{ChainID: 23422 Homestead: 1 DAO: <nil> DAOSupport: false EIP150: 2
EIP155: 3 EIP158: 3 Byzantium: 4 Constantinople: <nil>  
Petersburg: <nil> Engine: clique}"

I assume since Constantinople: <nil> in the configuration file and I cannot alter the custom configuration file there is no way I can hard fork the private chain.


The configuration is fixed via constants in the code (see
ChainConfig). A custom configuration can be provided in genesis
specification file, however, this is only applicable when setting up a
new chain.

Hence, currently the only way to make a hard fork in a private network
is to ensure that all participants shutdown/upgrade/restart in a
predefined time slot.

// I have updated the geth version but in general I am not sure to check that whether the private chain is updated.

[Q] I was wondering, is it possible to hard fork a private chain that has different EVM version to Constantinople EVM?

Get this bounty!!!