Nethermind
Nethermind is an Execution layer client developed by the Nethermind team.
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:
- Option 1: Using Docker
- Option 2: As a system process
Nethermind can be configured to run different types of nodes:
- Full Node (Recommended)
- Archival Node
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
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:
- execution
- consensus
- validator
docker logs -f --tail 500 execution
docker logs -f --tail 500 consensus
docker logs -f --tail 500 validator
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.
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.
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