Forum

Switch from OpenEthereum to Nethermind on Sokol

Hello @poa-validators,

We’d like to make Sokol Nethermind-only chain and asking you to switch your OpenEthereum node to the latest Nethermind (v1.10.74). OpenEthereum recently announced its end of life (Gnosis client development team Joins Erigon (formerly Turbo-Geth) to Release Next-Gen Ethereum Client | by Gnosis | OpenEthereum | Jun, 2021 | Medium), so we are going to gradually switch to Nethermind.

Please, follow the instruction (you can use the same VM instance):

  1. Go to your server instance.

  2. Clone the following repo:

    git clone -b nethermind https://github.com/poanetwork/validator-node-dockerized
    mv validator-node-dockerized nethermind
    cd nethermind
    
  3. To be a validator, you need to have your mining address private key. You will keep it in a .env file.

    If you don’t have the private key in a plain format (a hex string, 64 characters long), but have a JSON Keystore file of it (with a password), please go through the following steps to get your plain private key string:

    • Open your MetaMask.
    • Go to Import Account.
    • In the Select Type drop-down list choose JSON File.
    • Point to your JSON Keystore file, enter the password for it, and click Import button.
    • Switch to the newly imported account and go to Account details. Click Export private key button.
    • On the appeared Show Private Keys section type your MetaMask password and click Confirm.
    • You will see your 64 characters long private key.
  4. Copy .env.example to .env and configure the .env file. There are a few settings you need to define (the values without square brackets):

    ETHSTATS_ID=[validator_name]
    ETHSTATS_CONTACT=[contact_email]
    ETHSTATS_SECRET=[netstat_secret_key]
    KEY=[your_private_key_for_mining_address]
    SEQAPIKEY=[seq_api_key]
    
    • ETHSTATS_ID - The displayed name of your validator in https://sokol-netstat.poa.network/ (please use a bit another name to distinguish it from the current name of OE node)
    • ETHSTATS_CONTACT - Validator’s contact (e.g., e-mail).
    • ETHSTATS_SECRET - Secret key to connect to Netstat (should be provided by POA team, please, request it in PM).
    • KEY - Your mining address private key (should be 64 characters long without leading 0x).
    • SEQAPIKEY - An API key for Seq log collector (should be provided by POA team, please, request it in PM).
  5. Edit docker-compose.yml file with your favorite text editor to change the NETHERMIND_INITCONFIG_ISMINING env variable from true to false:

    NETHERMIND_INITCONFIG_ISMINING: "false"
    

    This will temporarily set your new node as a non-validator.

  6. Also, set the port of the new node to 30313. To do this, edit your docker-compose.yml file and add the following lines under NETHERMIND_INITCONFIG_ISMINING: "false":

    NETHERMIND_NETWORKCONFIG_DISCOVERYPORT: 30313
    NETHERMIND_NETWORKCONFIG_P2PPORT: 30313
    

    And change the port in the ports section of docker-compose.yml file correspondingly:

    ports:
       - "30313:30313"
       - "30313:30313/udp"
    
  7. Start your Nethermind node and wait for it to be fully synced:

    docker-compose up -d
    
  8. Once the new node is fully synced, you will need to stop your old OpenEthereum node on an old instance:

    docker-compose down
    
  9. Once the old instance is stopped, go to your new instance and edit docker-compose.yml file to activate a validator role - change NETHERMIND_INITCONFIG_ISMINING from false to true:

    NETHERMIND_INITCONFIG_ISMINING: "true"
    
  10. Restart your node using the following commands:

    docker-compose down
    docker-compose up -d
    

    Now, your new node should produce blocks.

Please, report here as soon as you go through the above steps.

Thank you!

P.S. If you are running a bootnode, the steps for that are the same, but you need to set NETHERMIND_INITCONFIG_ISMINING to false in docker-compose.yml file.

1 Like

@poa-validators, a friendly reminder. Please, switch your nodes from OpenEthereum to Nethermind following the instruction above.

For those who have already done this, there is a small step to upgrade Nethermind from 1.10.73 to 1.10.74 (which contains a bugfix for eth_getTransactionReceipt JSON RPC request):

docker pull nethermind/nethermind:latest
docker-compose down
docker-compose up -d
1 Like

Vadim – Hope all is with you & yours.

Please remove jlegassic@gmail.com from Validators email distribution list.

Kind regards,
John LeGassic

1 Like

OK, your account was removed from poa-validators distribution list.

Deployed Nethermind on both validator and boot node and spun down OpenEthereum variants. Both nodes caught up to latest block.

2 Likes