Skip to main content

Nethermind

Nethermind is an Execution layer client developed by the Nethermind team.

note

Nethermind currently holds the supermajority client position on Gnosis Chain. We suggest considering a switch to Erigon.

Nethermind reference:

https://docs.nethermind.io/nethermind/

There are 2 main options for running Nethermind:

Nethermind can be configured to run different types of nodes:

note

Ensure the prerequisite steps have been completed in Step 1: Configure Server.

Option 1: Using Docker

1. Folder Structure

Create your folder structure:

mkdir -p /home/$USER/gnosis/execution
mkdir /home/$USER/gnosis/jwtsecret
/home/$USER/gnosis/
├── jwtsecret/
└── execution/

2. Docker Compose

Create a docker-compose file with your favorite text editor in /home/$USER/gnosis/docker-compose.yml:

Example Docker Compose file
/home/$USER/gnosis/docker-compose.yml
version: "3"
services:

execution:
container_name: execution
image: nethermind/nethermind:latest
restart: always
stop_grace_period: 1m
networks:
- gnosis_net
ports:
- 30303:30303/tcp # p2p
- 30303:30303/udp # p2p
expose:
- 8545 # rpc
- 8551 # engine api
volumes:
- /home/$USER/gnosis/execution:/data
- /home/$USER/gnosis/jwtsecret/jwt.hex:/jwt.hex
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
command: |
--config=gnosis
--datadir=/data
--log=INFO
--Sync.SnapSync=false
--JsonRpc.Enabled=true
--JsonRpc.Host=0.0.0.0
--JsonRpc.Port=8545
--JsonRpc.EnabledModules=[Web3,Eth,Subscribe,Net,]
--JsonRpc.JwtSecretFile=/jwt.hex
--JsonRpc.EngineHost=0.0.0.0
--JsonRpc.EnginePort=8551
--Network.DiscoveryPort=30303
--HealthChecks.Enabled=false
--Pruning.CacheMb=2048
logging:
driver: "local"

networks:
gnosis_net:
name: gnosis_net

3. JWT Secret

The JWT secret is a token that allows the EL client to communicate with the CL client, and is required for Nethermind to operate post-merge. We use rand to create a random string, and store the jwt.hex file in /home/$USER/gnosis/jwtsecret/.

Check create JWT section in Step 1: Configure Server.

4. Start Container

Start the Execution layer client listed in the compose file:

cd /home/$USER/gnosis
docker-compose up -d

5. Monitor Logs

Check your logs with:

docker logs -f --tail 500 execution

6. Updating your Node

To update, just pull the new image, then stop and restart your docker-compose file:

cd /home/$USER/gnosis
docker-compose pull
docker-compose stop
docker-compose up -d

Option 2: Running as System Process

Installing Nethermind

https://downloads.nethermind.io/

Running Nethermind

Nethermind has ‘Nethermind launcher’ an easy GUI where you can configure your node from release.

https://docs.nethermind.io/nethermind/first-steps-with-nethermind/running-nethermind-post-merge#running-release

Windows

# Gnosis Mainnet
./nethermind --config gnosis --JsonRpc.JwtSecretFile=<PATH to jwt.hex>

# Chiado Testnet
./nethermind --config chiado --JsonRpc.JwtSecretFile=<PATH to jwt.hex>

Linux and MAC

# Gnosis Mainnet
nethermind --config gnosis --JsonRpc.JwtSecretFile=<PATH to jwt.hex>

# Chiado Testnet
nethermind --config chiado --JsonRpc.JwtSecretFile=<PATH to jwt.hex>

Nethermind Archival Node

An archival node executes a heavy historical sync verifying all the transactions and keeping all of the historical data. Archive sync is the 'heaviest' and slowest sync mode, and can take 2 - 6 weeks depending on the speed of your IO.

caution

Make sure there's enough disk space to accommodate the archive data, the minimum amount of disk required to run the archive node is +2 TB (Feb 2023).

Edit your /home/$USER/gnosis/docker-compose.yml and change the --config from gnosis to gnosis_archive.

    command: |
--config=gnosis_archive