Nethermindは.NETで構築されたイーサリアムの実行クライアントです。
初期設定
- インストールに必要なパッケージをインストールする。
sudo apt install -y unzip curl libsnappy-dev libc6-dev libc6
- Nethermindの公式GitHubを開き、最新リリースのURLをコピーしてダウンロードする。
cd ~
curl -LO https://github.com/NethermindEth/nethermind/releases/download/X.XX.X/nethermind-X.XX.X-XXXXXXXX-linux-x64.zip
- 解凍して
/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
- 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
- サーバー起動時にNethermindが自動的に開始されるためのserviceファイルを作成する。
sudo nano /etc/systemd/system/nethermind.service
- 以下を入力し、保存する。(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
- daemonをリロードし、Nethermindを起動する。今後上記のserviceファイルに変更を加えることがあれば、毎回daemonをリロードして変更を適応するようにしてください。
sudo systemctl daemon-reload
sudo systemctl start nethermind
- サーバー再起動時にNethermindが自動的に開始されるようにする。
※サーバーをシャットダウンまたは再起動する際は、必ずsudo systemctl stop nethermind
でnethermindを正常に終了させてからにしてください。
sudo systemctl enable nethermind
- ログで同期状態を確認する。(Ctrl + Cで閉じる)
sudo journalctl -fu nethermind
※ビーコンノードが設定されていないと同期は開始しません。
※ログにOld Headers
やOld Receipts
が表示されなくなれば同期完了です。
アップデート方法
- サーバーのバージョンと公式GitHubのバージョンを確認し、アップデートの必要があるか確認する。
/usr/local/bin/nethermind/nethermind --version
- 最新リリースのURLをコピーしてダウンロードする。
cd ~
curl -LO https://github.com/NethermindEth/nethermind/releases/download/X.XX.X/nethermind-X.XX.X-XXXXXXXX-linux-x64.zip
- 実行中の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
- バージョンがアップデートされていることを確認し、Nethermindを起動する。
/usr/local/bin/nethermind/nethermind --version
sudo systemctl start nethermind
- Nethermindが正常に動いていることを確認する。
sudo journalctl -fu nethermind