/nethermind

Primary LanguageC#GNU General Public License v3.0GPL-3.0

Nethermind

Nethermind Ethereum client

Tests Chat on Discord Follow us on Twitter Ask on Discourse

Nethermind is a high-performance, highly configurable full Ethereum protocol execution client built on .NET that runs on Linux, Windows, and macOS, and supports Clique, Aura, and Ethash. Nethermind offers very fast sync speeds and support for external plugins. Enjoy reliable access to rich on-chain data thanks to high-performance JSON-RPC based on the Kestrel web server. Healthy node monitoring is secured with Grafana analytics and Seq logging.

Documentation

Nethermind documentation is available at docs.nethermind.io.

Supported networks

Mainnet Goerli Rinkeby Ropsten Sepolia Gnosis (xDai) Energy Web Volta Kovan

Download and run

Release builds are available on the Releases page and at downloads.nethermind.io.

On Linux using PPA

  1. sudo add-apt-repository ppa:nethermindeth/nethermind
    If command not found: sudo apt install software-properties-common
  2. sudo apt install nethermind
  3. To run the launcher: nethermind
  4. To run the runner: nethermind -c mainnet

On macOS using Homebrew

  1. brew tap nethermindeth/nethermind
  2. brew install nethermind
  3. To run the launcher: nethermind-launcher
  4. To run the runner: nethermind -c mainnet

Docker image

The official Docker images of Nethermind are available on Docker Hub.

Get the digest of the Docker image

In case of any Docker image need to be updated in the repository, you can update the digest of these images as follows:

docker inspect --format='{{index .RepoDigests 0}}' <image_name>

The output should show the image digest, and then you can copy that to the FROM tag in the Dockerfile.

Build from source

Prerequisites

Windows

macOS

  • Install .NET

  • Install dependencies:

    brew install gmp snappy lz4 zstd

Ubuntu

  • Install .NET

  • Install dependencies:

    sudo apt-get install libsnappy-dev libc6-dev libc6

    An extra dependency for aarch64 (arm64):

    sudo apt-get install libgflags-dev

Debian

  • Install .NET

  • Install dependencies:

    sudo apt-get install libsnappy-dev libc6-dev libc6

CentOS

  • Install .NET

  • Install dependencies:

    sudo yum install -y glibc-devel bzip2-devel libzstd
    
    # Link libraries
    sudo ln -s `find /usr/lib64/ -type f -name "libbz2.so.1*"` /usr/lib64/libbz2.so.1.0

Fedora

  • Install .NET

  • Install dependencies:

    sudo yum install -y glibc-devel snappy libzstd
    
    # Link libraries
    sudo ln -s `find /usr/lib64/ -type f -name "libbz2.so.1*"` /usr/lib64/libbz2.so.1.0

Build and run

git clone https://github.com/nethermindeth/nethermind --recursive
cd nethermind/src/Nethermind/Nethermind.Runner
dotnet run -c release -- -c mainnet

Test

Run the Nethermind and/or Ethereum Foundation tests as follows:

dotnet test Nethermind.sln -c debug
dotnet test EthereumTests.sln -c debug

Contributing

BEFORE you start work on a feature or fix, please read and follow our contribution guide to help avoid any wasted or duplicate effort.

License

Nethermind is an open-source software licensed under the LGPL-3.0.