コンテンツへスキップ

Nethermind(実行クライアント)

Nethermindは.NETで構築されたイーサリアムの実行クライアントです。

初期設定

  1. インストールに必要なパッケージをインストールする。
sudo apt install -y unzip curl libsnappy-dev libc6-dev libc6
  1. Nethermindの公式GitHubを開き、最新リリースのURLをコピーしてダウンロードする。
cd ~

curl -LO https://github.com/NethermindEth/nethermind/releases/download/X.XX.X/nethermind-X.XX.X-XXXXXXXX-linux-x64.zip
  1. 解凍して/usr/local/binにコピーし、不要になったファイルを削除する。
unzip nethermind-X.XX.X-XXXXXXXX-linux-x64.zip -d nethermind

sudo cp -a nethermind /usr/local/bin/nethermind

rm nethermind-1.XX.X-XXXXXXXX-linux-x64.zip

rm -r nethermind
  1. Nethermind実行用のユーザーnethermindを作成し、ディレクトリ権限を与える。
sudo useradd --no-create-home --shell /bin/false nethermind

sudo mkdir -p /var/lib/nethermind

sudo chown -R nethermind:nethermind /var/lib/nethermind
  1. サーバー起動時にNethermindが自動的に開始されるためのserviceファイルを作成する。
sudo nano /etc/systemd/system/nethermind.service
  1. 以下を入力し、保存する。(Ctrl + O で保存、Ctrl + X で閉じる)
[Unit]
Description=Nethermind
After=network.target
Wants=network.target

[Service]
User=nethermind
Group=nethermind
Type=simple
Restart=always
RestartSec=5
WorkingDirectory=/var/lib/nethermind
Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=/var/lib/nethermind"
ExecStart=/usr/local/bin/nethermind/nethermind \
  --config mainnet \
  --datadir /var/lib/nethermind \
  --Sync.SnapSync true \
  --Sync.AncientBodiesBarrier 11052984 \
  --Sync.AncientReceiptsBarrier 11052984 \
  --JsonRpc.JwtSecretFile /var/lib/jwtsecret/jwt.hex \
  --JsonRpc.Enabled true \
  --JsonRpc.Host 0.0.0.0 \
  --Network.ActivePeersMaxCount 30 \
  --Pruning.CacheMb 2000

[Install]
WantedBy=default.target

--Sync.SnapSync trueで高速同期が可能なsnap syncを有効化しています。

--sync.AncientBodiesBarrier--sync.AncientReceiptsBarrierはどのブロックまで同期するか指定しています。11052984はビーコンチェーンが開始したブロックです。

--Network.ActivePeersMaxCount 30を追加すると、通信先のノード数を減らして通信量を抑えることができます。標準は100です。

※ メモリを多く搭載している場合は、Nethermindの利用するメモリ容量を--Pruning.CacheMb 2000を追加して増やしてあげるといいです。標準は1024です。高くしすぎると、Pruning処理中にAttestationに影響する場合があります。

Holeskyテストネット用
[Unit]
Description=Nethermind
After=network.target
Wants=network.target

[Service]
User=nethermind
Group=nethermind
Type=simple
Restart=always
RestartSec=5
WorkingDirectory=/var/lib/nethermind
Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=/var/lib/nethermind"
ExecStart=/usr/local/bin/nethermind/nethermind \
  --config holesky \
  --datadir /var/lib/nethermind \
  --Sync.SnapSync true \
  --JsonRpc.JwtSecretFile /var/lib/jwtsecret/jwt.hex \
  --JsonRpc.Enabled true \
  --JsonRpc.Host 0.0.0.0 \
  --Network.ActivePeersMaxCount 30 \
  --Pruning.CacheMb 2000

[Install]
WantedBy=default.target
  1. daemonをリロードし、Nethermindを起動する。今後上記のserviceファイルに変更を加えることがあれば、毎回daemonをリロードして変更を適応するようにしてください。
sudo systemctl daemon-reload

sudo systemctl start nethermind
  1. サーバー再起動時にNethermindが自動的に開始されるようにする。
    ※サーバーをシャットダウンまたは再起動する際は、必ずsudo systemctl stop nethermindでnethermindを正常に終了させてからにしてください。
sudo systemctl enable nethermind
  1. ログで同期状態を確認する。(Ctrl + Cで閉じる)
sudo journalctl -fu nethermind

※ビーコンノードが設定されていないと同期は開始しません。

※ログにOld HeadersOld Receiptsが表示されなくなれば同期完了です。

アップデート方法

  1. サーバーのバージョンと公式GitHubのバージョンを確認し、アップデートの必要があるか確認する。
/usr/local/bin/nethermind/nethermind --version
  1. 最新リリースのURLをコピーしてダウンロードする。
cd ~

curl -LO https://github.com/NethermindEth/nethermind/releases/download/X.XX.X/nethermind-X.XX.X-XXXXXXXX-linux-x64.zip
  1. 実行中のNethermindを止め、古いバージョンを削除し、最新のバージョンを/usr/local/binにコピーする。
sudo systemctl stop nethermind

sudo rm -r /usr/local/bin/nethermind

unzip nethermind-X.XX.X-XXXXXXXX-linux-x64.zip -d nethermind

sudo cp -a nethermind /usr/local/bin/nethermind

rm nethermind-1.XX.X-XXXXXXXX-linux-x64.zip

rm -r nethermind
  1. バージョンがアップデートされていることを確認し、Nethermindを起動する。
/usr/local/bin/nethermind/nethermind --version

sudo systemctl start nethermind
  1. Nethermindが正常に動いていることを確認する。
sudo journalctl -fu nethermind