Sign inSign up

fiftysix/nethermind

By fiftysix

Updated over 1 year ago

Nethermind execution client for Ethereum nodes written in C#.

Image
0

10K+

fiftysix/nethermind repository overview

Fiftysix Nethermind Docker Image

Maintainer: [email protected]

Overview

This Docker image provides a fully functional Nethermind client built using the Fiftysix base image. Nethermind is an Ethereum execution engine responsible for processing transactions, executing smart contracts, and maintaining the Ethereum state. It is ideal for developers, blockchain enthusiasts, and institutions looking to participate in the Ethereum network. The code can be viewed on the Fiftysix Github.

Tags
  • latest: Points to the latest version of Nethermind.
  • <version>: Points to a specific version of Nethermind. For example, 1.27.0, 1.27.1.
What is Nethermind?

Nethermind is a highly optimized Ethereum client implemented in C#. It operates as an execution engine in Ethereum's Proof of Stake (PoS) network, handling transaction processing, smart contract execution, and maintaining the state of the Ethereum blockchain. Following the merge, Nethermind works in tandem with Ethereum consensus clients to manage the blockchain's consensus mechanism.

Usage
Prerequisites

To run Nethermind effectively as an execution engine, you'll need a system with sufficient storage and memory to handle the Ethereum blockchain. Nethermind is designed to work alongside Ethereum consensus clients, such as Lighthouse, Prysm, Teku, Lodestar, and Nimbus, to form a complete Ethereum node.

Basic Usage

To run a Nethermind node:

docker pull fiftysix/nethermind
docker run --name nethermind -d fiftysix/nethermind

This command will start the Nethermind container, exposing the default RPC and P2P ports.

Note: Nethermind requires an Ethereum consensus client alongside, such as Lighthouse, Prysm, Teku, Lodestar, and Nimbus, to properly sync. Example Nethermind compose files can be found here.

Directory Structure

In this Docker image, the following directories are used:

  • Data Directory (/node/nethermind/data): This is where Nethermind stores the Ethereum blockchain data and other related files. This directory is specified in the Dockerfile and should be mounted if you want to persist data across container restarts.
  • Config Directory (/node/nethermind/configs): This directory is used for storing configuration files for Nethermind. The Dockerfile copies a default config.cfg configuration file here, which can be customized.
  • Scripts Directory (/node/nethermind/scripts): This directory contains the entrypoint script (nethermind-entrypoint.sh) and any other scripts that may be needed for starting or managing Nethermind.
Mounting Directories

You can mount host directories to the container’s data, config, and scripts directories to customize the behavior of the Nethermind software.

Mounting the Data Directory: To persist Nethermind data across container restarts, you can mount a host directory to the container's data directory:

docker run --name nethermind -v /path/to/local/data:/node/nethermind/data -d fiftysix/nethermind

This command mounts the /path/to/local/data directory on your host to /node/nethermind/data in the container, ensuring that blockchain data is preserved between container instances.

Mounting a Config File: To use a custom Nethermind configuration file, mount your configuration file to the container’s config directory and specify it using the --config flag:

docker run --name nethermind -v /path/to/local/config.cfg:/node/nethermind/configs/config.cfg -d fiftysix/nethermind \
  --config="/node/nethermind/configs/config.cfg"

This command mounts your custom config.cfg file to the container’s config directory and instructs Nethermind to use it.

Mounting the Scripts Directory: If you have custom scripts you want to include, you can mount them to the scripts directory. For example, to replace the entrypoint script:

docker run --name nethermind -v /path/to/local/scripts:/node/nethermind/scripts -d fiftysix/nethermind

This command mounts your local scripts directory to /node/nethermind/scripts in the container, allowing you to customize the startup behavior.

Logging Nethermind
docker logs nethermind --tail 100
Using Nethermind
Starting Nethermind with Custom Options

To start Nethermind with custom options, such as enabling RPC or specifying network parameters, you can pass additional flags to the nethermind command:

docker run --name nethermind -d \
  -p 8545:8545 -p 30303:30303/tcp -p 30303:30303/udp \
  fiftysix/nethermind \
  --datadir "/node/nethermind/data" --JsonRpc.JwtSecretFile "/node/nethermind/data/jwt.hex" \
  --JsonRpc.Enabled true --JsonRpc.Host "0.0.0.0" --JsonRpc.Port 8545 --JsonRpc.EnginePort 8551 \
  --Network.Mainnet

This command starts Nethermind with the JSON-RPC server enabled, listening on port 8545, and connected to the Ethereum mainnet.

Exposing Ports

The following ports are commonly used by Nethermind and are exposed in this Docker image:

  • 8545: HTTP-RPC server
  • 8551: Engine API server (used for communication between the execution engine and consensus client)
  • 30303/tcp: P2P communication (TCP)
  • 30303/udp: P2P communication (UDP)
Docker Compose

Nethermind can also be run using Docker Compose. Various Docker Compose files are available to run Nethermind as the execution engine alongside different Ethereum consensus clients, such as Lighthouse, Prysm, Teku, Lodestar, and Nimbus. These setups enable a complete Ethereum node configuration, with Nethermind handling execution and the chosen client managing consensus. Examples of these Docker Compose files can be found on the Fiftysix Github.

Support

For support, please contact [email protected].

About Fiftysix

Fiftysix is committed to making blockchain technology accessible, efficient, and reliable through robust decentralization. Learn more at fiftysix.xyz.

Tag summary

Content type

Image

Digest

sha256:66fa85423

Size

475.2 MB

Last updated

over 1 year ago

docker pull fiftysix/nethermind