Forum

Switch from Parity-Ethereum 2.7.2 to Nethermind

Hi @d10r @mteufelberger @tze42 (Lab10) and @radotzki @tomteman (Portis),

We’re preparing xDai chain for Berlin hard fork. To do this, validators need to have a new version of client.

We’d like to ask you to switch your validator node from the obsolete Parity-Ethereum 2.7.2 to Nethermind 1.10.56.

Instruction:

  1. Create a separate Ubuntu 20.04 instance.

  2. Install Docker Engine and Docker Compose following the original instructions Get Docker | Docker Documentation and Install Docker Compose | Docker Documentation

  3. Clone the following repo:

    git clone -b nethermind https://github.com/xdaichain/validator-node-dockerized
    mv validator-node-dockerized nethermind
    cd nethermind
    
  4. 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.
  5. Copy .env.example to .env and configure the .env file. There are a few settings you need to define:

    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://dai-netstat.poa.network/
    • ETHSTATS_CONTACT - Validator’s contact (e.g., e-mail).
    • ETHSTATS_SECRET - Secret key to connect to Netstat (should be provided by xDai team, please, request it).
    • 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 xDai team, please, request it).
  6. 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.

  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 Parity-Ethereum node on an old instance:

    sudo systemctl stop poa-parity
    sudo systemctl stop poa-netstats
    
  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!

Hi @varasev, thx for the info.
Is there any chance we could update to latest OpenEthereum instead?
All our knowledge and workflows are based on the Parity/OE client while we have no experience so far with Nethermind, thus we’d prefer to stick to OE unless you plan to completely drop xdai support.
We wouldn’t need any Docker images or Ansible scripts or even OE binary, a working chain spec and a link to a revision of OE ready for xdai Berlin edition would be enough.

Hi @d10r, Sure, then please follow this instruction: Update OpenEthereum to v3.2.2 - this setup is not Berlin ready (as we will need to specify transition blocks in a spec file a bit later), but this version fully supports Berlin EIPs.

1 Like