ノードアップデートマニュアル¶
このガイドは ノードバージョン10.5.3に対応しています。
最終更新日:2025年11月26日
必ずお読みください
cardano-node v10.1.4をご利用の方はこのアップデートを実施しないでください!!
先日発生したチェーンフォークの調査継続とバージョン多様性を維持する目的です。
バージョン対応表
- 各依存関係もバージョンアップしてますのでよくお読みになって進めてください
| Node | CLI | GHC | Cabal | CNCLI |
|---|---|---|---|---|
| 10.5.3 | 10.11.0.0 | 9.6.7 | 3.12.1.0 | 6.7.0 |
■アップデートパターンDB再構築有無
| バージョン | DB再構築有無 | 設定ファイル更新有無 | トポロジーファイル更新有無 |
|---|---|---|---|
| 10.3.1→10.5.3 | あり | 更新あり | 更新なし |
| 10.4.1→10.5.3 | なし | 更新あり | 更新なし |
- 作業前にブロック生成スケジュールを確認し余裕のある作業をお願いします
- 複数行のコードをコードボックスのコピーボタンを使用してコマンドラインに貼り付ける場合は、最後の行が自動実行されないため確認の上Enterを押してコードを実行してください。
主な変更点と新機能および検証結果
cardano-node
10.5.3 バグ修正緊急リリース
- cardano-crypto-classライブラリ参照先修正
- ソースビルドの場合 blst v0.3.14使用必須
- PraosModeのみ有効
10.5.2 バグ修正緊急リリース
10.3.x, 10.4.x or 10.5.xをご利用中の場合は速やかに10.5.2へアップグレードしてください
1)ハッシュサイズに関する問題
2)ネットワークスタック内の ピア選択の不具合
を修正しています。
特定の条件下では、ネットワークの Periodic Churn(定期的な入れ替え) の仕組みが正しく機能せず、十分な数の「Warm ピア」を降格できない状態になるバグが発見されました。 その結果、長期的に見て アクティブピアのサンプリング(選定)が十分多様化しないことが懸念されます。
SPOはこのリリースへのアップグレードが推奨されます。
- PraosMode推奨
10.5.1
- Windowsのソケットに関する不具合の修正
- DNSルックアップエラーのキャッシュ時間の短縮
- PeerSharing設定動作の改良
--non-producer-nodeの代わりに--start-as-non-producer-nodeを使うようにコマンドラインオプションが変更(旧オプションは非推奨に)
10.5.0
- Ouroboros Genesis の最適化
- GHC 8.10 のサポート削除
10.4.1
- UTxO-HD統合
現時点ではプール運営のノードではディスクバックエンドは非推奨のため、当マニュアルではインメモリバックエンドセットアップで構築されています
UTxO-HDの概要についてはこちらをご参照ください - config.json内
LedgerDB新しいキーを設定
cardano-cli v10.11.0.0
- JSON/YAML 出力の標準化
- 特定コマンドの出力フォーマット変更
検証結果
■検証環境 Ubuntu22.04 / PreProd-Testnet / cardano-node 10.5.3 / cardano-cli 10.11.0.0 / SJG-TOOL 3.9.4
| 検証項目 | 結果 |
|---|---|
| ソースコートビルド | ✅ |
| ブロック生成 | ✅ |
| リソース監視 | ✅ |
| 報酬出金 | ✅ |
| ウォレット送金 | ✅ |
| KES更新 | ✅ |
| ガバナンス投票 | ✅ |
1.依存環境アップデート¶
現在インストール中のノードバージョンを控える
current_node=$(cardano-node version | grep cardano-node)
echo $current_node
必ずお読みください
cardano-node v10.1.4をご利用の方はこのアップデートを実施しないでください!!
先日発生したチェーンフォークの調査継続とバージョン多様性を維持する目的です。
1-1. システムアップデート¶
システムアップデート
sudo apt update -y && sudo apt upgrade -y
10.3.1からアップデートする場合はこちらも実施(クリックして開く)
【重要】LMDBライブラリインストール
sudo apt install liblmdb-dev -y
1-2. 依存関係バージョン確認¶
cabalバージョン確認
cabal --version
正常戻り値
cabal-install version 3.12.1.0
GHCバージョン確認
ghc --version
正常戻り値
The Glorious Glasgow Haskell Compilation System, version 9.6.7
libsodiumコミット確認
cd $HOME/git/libsodium
git branch --contains | grep -m1 HEAD | cut -c 21-28
正常戻り値
dbb48cce
secp256k1バージョン確認
cd $HOME/git/secp256k1
git branch --contains | grep -m1 HEAD | cut -c 21-27
正常戻り値
acf5c55
Blstバージョン確認
インストール済みバージョン
cat /usr/local/lib/pkgconfig/libblst.pc | grep Version
正常戻り値
Version 0.3.14
各アプリのバージョン(戻り値)が異なる場合
cabal 3.8.1.0以下の場合
cabal 3.8.1.0以下の場合のみ実行 cabalバージョンアップ
ghcup upgrade
ghcup install cabal 3.12.1.0
ghcup set cabal 3.12.1.0
cabal --version
戻り値 cabal-install version 3.12.1.0
compiled using version 3.12.1.0 of the Cabal library
GHC 9.6.7以外の場合 (9.6.7より新しい場合を含む)
ghcup upgrade
ghcup install ghc 9.6.7
ghcup set ghc 9.6.7
ghc --version
戻り値
The Glorious Glasgow Haskell Compilation System, version 9.6.7
libsodiumコミット値が違う場合
cd ~/git/libsodium
git fetch --all --prune
git checkout dbb48cc
./autogen.sh
./configure
make
make check
sudo make install
makeコマンド実行後半に出現するwarningは無視して大丈夫です。
secp256k1コミット値が違うまたは戻り値が無い場合
cd $HOME/git/secp256k1/
git fetch --all --prune --recurse-submodules --tags
git checkout acf5c55
./autogen.sh
./configure --prefix=/usr --enable-module-schnorrsig --enable-experimental
make
make check
戻り値確認
Testsuite summary for libsecp256k1 0.3.2
============================================================================
# TOTAL: 3
# PASS: 3
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
============================================================================
PASS:3であることを確認する
インストールコマンドを必ず実行する
sudo make install
Blst 0.3.13以下または「No such file or directory」の場合
cd $HOME/git/blst
git fetch --all --prune --recurse-submodules --tags
git checkout tags/v0.3.14
./build.sh
cd $HOME/git
git clone https://github.com/supranational/blst
cd blst
git checkout v0.3.14
./build.sh
設定ファイル作成
cat > libblst.pc << EOF
prefix=/usr/local
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include
Name: libblst
Description: Multilingual BLS12-381 signature library
URL: https://github.com/supranational/blst
Version: 0.3.14
Cflags: -I\${includedir}
Libs: -L\${libdir} -lblst
EOF
設定ファイルコピー
このボックスは1行ずつコピーして実行してください
sudo cp libblst.pc /usr/local/lib/pkgconfig/
sudo cp bindings/blst_aux.h bindings/blst.h bindings/blst.hpp /usr/local/include/
sudo cp libblst.a /usr/local/lib
sudo chmod u=rw,go=r /usr/local/{lib/{libblst.a,pkgconfig/libblst.pc},include/{blst.{h,hpp},blst_aux.h}}
バージョン確認
cat /usr/local/lib/pkgconfig/libblst.pc | grep Version
Version 0.3.14
1-3.CNCLIバージョン確認(BPのみ)¶
CNCLIバージョン確認
cncli --version
以下の戻り値ならOK
cncli 6.7.0
cncli 6.7.0でcardano-db再同期時において33ブロック以上ロールバックする際のcncli同期エラー(※1)が解消されています。
※1 Missing eta_v for block xxxxxxエラー
cncli v6.6.0以下だった場合(クリックして開く)
CNCLIをアップデートする
cd $HOME
cncli_release="$(curl -s https://api.github.com/repos/cardano-community/cncli/releases/latest | jq -r '.tag_name' | sed -e "s/^.\{1\}//")"
curl -sLJ https://github.com/cardano-community/cncli/releases/download/v${cncli_release}/cncli-${cncli_release}-ubuntu22-x86_64-unknown-linux-musl.tar.gz -o $HOME/cncli-${cncli_release}-x86_64-unknown-linux-musl.tar.gz
tar xzvf $HOME/cncli-${cncli_release}-x86_64-unknown-linux-musl.tar.gz -C $HOME/.cargo/bin/
rm $HOME/cncli-${cncli_release}-x86_64-unknown-linux-musl.tar.gz
バージョン確認
cncli --version
cncli v6.7.0になったことを確認する
2.ノードアップデート¶
バイナリファイルインストール方法の違いについて
-
ビルド済みバイナリ・・・IntersectMBOリポジトリソースコードからビルドされたバイナリファイルをダウンロードします。ビルド不要のためビルド時間を短縮できます。
-
ソースコードからビルド・・・ご自身のサーバーでソースコードからビルドしてバイナリファイルを作成します。検証目的やソースコードからビルドしたい場合に利用できます。ビルドに30分前後かかります。Raspberry Piを使用してプールを構築する場合は、ARM用コンパイラでコンパイルする必要があります。
2-1.バイナリダウンロード¶
旧バイナリを削除する
rm -rf $HOME/git/cardano-node-old/
バイナリファイルをダウンロードする
mkdir $HOME/git/cardano-node2
cd $HOME/git/cardano-node2
wget -q https://github.com/IntersectMBO/cardano-node/releases/download/10.5.3/cardano-node-10.5.3-linux.tar.gz
解凍する
tar zxvf cardano-node-10.5.3-linux.tar.gz ./bin/cardano-node ./bin/cardano-cli ./bin/snapshot-converter
バージョン確認
$(find $HOME/git/cardano-node2 -type f -name "cardano-cli") version
$(find $HOME/git/cardano-node2 -type f -name "cardano-node") version
cardano-cli 10.11.0.0 - linux-x86_64 - ghc-9.6
6c034ec038d8d276a3595e10e2d38643f09bd1f2cardano-node 10.5.3 - linux-x86_64 - ghc-9.6
6c034ec038d8d276a3595e10e2d38643f09bd1f2
ノードをストップする
sudo systemctl stop cardano-node
2-2.バイナリインストール¶
バイナリーファイルをシステムフォルダーへコピーする
sudo cp $(find $HOME/git/cardano-node2 -type f -name "cardano-cli") /usr/local/bin/cardano-cli
sudo cp $(find $HOME/git/cardano-node2 -type f -name "cardano-node") /usr/local/bin/cardano-node
システムに反映されたノードバージョンを確認する
cardano-cli version
cardano-node version
以下の戻り値を確認する
cardano-cli 10.11.0.0 - linux-x86_64 - ghc-9.6
6c034ec038d8d276a3595e10e2d38643f09bd1f2cardano-node 10.5.3 - linux-x86_64 - ghc-9.6
6c034ec038d8d276a3595e10e2d38643f09bd1f2
2-1.ソースコードダウンロード
現在インストール中のノードバージョンを控える
current_node=$(cardano-node version | grep cardano-node)
echo $current_node
新しいTMUXセッションを開く
tmux new -s build
アップデート作業中にSSHが中断した場合は、
tmux a -t buildで再開できます。
旧ビルドを削除する
rm -rf $HOME/git/cardano-node-old/
ソースコードをダウンロードする
cd $HOME/git
git clone https://github.com/IntersectMBO/cardano-node.git cardano-node2
cd cardano-node2/
2-2.ソースコードからビルド
cabal clean
cabal update
git fetch --all --recurse-submodules --tags
git checkout tags/10.5.3
cabal configure --with-compiler=ghc-9.6.7
cabal build all cardano-cli
ヒント
- ビルド完了までに数十分ほどかかります。
- SSH接続が途中で切断された場合、再度接続して
tmux a -t buildで再開してください。 - ビルド中にデタッチ(Ctrl+B D)してバックグラウンド処理へ切り替えられます。
バージョン確認
$(./scripts/bin-path.sh cardano-cli) version
$(./scripts/bin-path.sh cardano-node) version
以下の戻り値を確認する
cardano-cli 10.11.0.0 - linux-x86_64 - ghc-9.6
6c034ec038d8d276a3595e10e2d38643f09bd1f2cardano-node 10.5.3 - linux-x86_64 - ghc-9.6
6c034ec038d8d276a3595e10e2d38643f09bd1f2
ビルド用TMUXセッションを終了する
exit
ノードをストップする
sudo systemctl stop cardano-node
バイナリーファイルをシステムフォルダーへコピーする
cd $HOME/git/cardano-node2
sudo cp $(./scripts/bin-path.sh cardano-cli) /usr/local/bin/cardano-cli
cd $HOME/git/cardano-node2
sudo cp $(./scripts/bin-path.sh cardano-node) /usr/local/bin/cardano-node
システムに反映されたノードバージョンを確認する
cardano-cli version
cardano-node version
以下の戻り値を確認する
cardano-cli 10.11.0.0 - linux-x86_64 - ghc-9.6
6c034ec038d8d276a3595e10e2d38643f09bd1f2cardano-node 10.5.3 - linux-x86_64 - ghc-9.6
6c034ec038d8d276a3595e10e2d38643f09bd1f2
10.3.1以下からアップデートする場合はこちらも実施(クリックして開く)
snapshot-converterをダウンロードする
cd $HOME/git/cardano-node2
wget -q https://github.com/IntersectMBO/cardano-node/releases/download/10.5.3/cardano-node-10.5.3-linux.tar.gz
tar zxvf cardano-node-10.5.3-linux.tar.gz ./bin/snapshot-converter
2-3.設定ファイル更新¶
既存ファイルバックアップ
mkdir -p $NODE_HOME/backup
cp $NODE_HOME/${NODE_CONFIG}-config.json $NODE_HOME/backup/${NODE_CONFIG}-config.json
BPとリレーで実行するコマンドが異なるので、対象サーバーごとにタブを切り替えてください
設定ファイルダウンロード
cd $NODE_HOME
wget -q https://spojapanguild.net/node_config/10.5.3/${NODE_CONFIG}-config.json -O ${NODE_CONFIG}-config.json
wget -q https://spojapanguild.net/node_config/10.5.3/${NODE_CONFIG}-checkpoints.json -O ${NODE_CONFIG}-checkpoints.json
設定ファイルダウンロード
cd $NODE_HOME
wget -q https://spojapanguild.net/node_config/10.5.3/${NODE_CONFIG}-config-bp.json -O ${NODE_CONFIG}-config.json
wget -q https://spojapanguild.net/node_config/10.5.3/${NODE_CONFIG}-checkpoints.json -O ${NODE_CONFIG}-checkpoints.json
10.1.4~10.3.1からアップデートする場合はこちらも実施(クリックして開く)
BPのみ
起動スクリプト更新
PORT=`grep "PORT=" $NODE_HOME/startBlockProducingNode.sh`
b_PORT=${PORT#"PORT="}
echo "BPポートは${b_PORT}です"
↑そのまま実行し、BPのポート番号が表示されることを確認する
cat > $NODE_HOME/startBlockProducingNode.sh << EOF
#!/bin/bash
DIRECTORY=$NODE_HOME
PORT=${b_PORT}
HOSTADDR=0.0.0.0
TOPOLOGY=\${DIRECTORY}/${NODE_CONFIG}-topology.json
DB_PATH=\${DIRECTORY}/db
SOCKET_PATH=\${DIRECTORY}/db/socket
CONFIG=\${DIRECTORY}/${NODE_CONFIG}-config.json
KES=\${DIRECTORY}/kes.skey
VRF=\${DIRECTORY}/vrf.skey
CERT=\${DIRECTORY}/node.cert
/usr/local/bin/cardano-node +RTS -N --disable-delayed-os-memory-return -I0.1 -Iw300 -A32m -n4m -F1.5 -H2500M -RTS run --topology \${TOPOLOGY} --database-path \${DB_PATH} --socket-path \${SOCKET_PATH} --host-addr \${HOSTADDR} --port \${PORT} --config \${CONFIG} --shelley-kes-key \${KES} --shelley-vrf-key \${VRF} --shelley-operational-certificate \${CERT}
EOF
全ノード
DB更新
Mithirlインストール
cd $HOME/git
mithril_release="$(curl -s https://api.github.com/repos/input-output-hk/mithril/releases/latest | jq -r '.tag_name')"
wget https://github.com/input-output-hk/mithril/releases/download/${mithril_release}/mithril-${mithril_release}-linux-x64.tar.gz -O mithril.tar.gz
設定
tar zxvf mithril.tar.gz mithril-client
sudo cp mithril-client /usr/local/bin/mithril-client
sudo chmod +x /usr/local/bin/mithril-client
DLファイル削除
rm mithril.tar.gz mithril-client
バージョン確認
mithril-client -V
Mithril Githubのリリースノート内にある
mithril-client-cliのバージョンをご確認ください。
スナップショット復元
作業用TMUX起動
tmux new -s mithril
変数セット
export NETWORK=mainnet
export AGGREGATOR_ENDPOINT=https://aggregator.release-mainnet.api.mithril.network/aggregator
export GENESIS_VERIFICATION_KEY=$(wget -q -O - https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-mainnet/genesis.vkey)
export ANCILLARY_VERIFICATION_KEY=$(wget -q -O - https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-mainnet/ancillary.vkey)
export SNAPSHOT_DIGEST=latest
旧dbをバックアップしたい方はこちら
空き容量に関しての注意事項
DBをバックアップする場合、サーバーディスクの空き容量をご確認ください。 安定稼働のためには250GB以上の空き容量が必要です。
df -h /usr | awk '{print $4}'
dbをリネームする
mv $NODE_HOME/db/ $NODE_HOME/backup/db9/
ノードバージョンアップ後の作業
稼働に問題がないことが確認でき次第削除することをお勧めします。
rm -rf $NODE_HOME/backup/db9/
既存DB削除
rm -rf $NODE_HOME/db
最新スナップショットDL
mithril-client cardano-db download --download-dir $NODE_HOME --include-ancillary latest
スナップショットダウンロード~解凍まで自動的に行われます。1/5~5/5が終了するまで待ちましょう
DBスナップショットDL/解答完了メッセージ
5/5 - Verifying the cardano db signature…
Cardano db 'xxxxx' has been unpacked and successfully checked against Mithril multi-signature contained in the certificate.
('xxxxx'は作業時期によって変わります。下の文字列は無視して大丈夫です)
tmux作業ウィンドウを終了する
exit
2-5.サーバー再起動¶
作業フォルダリネーム
前バージョンで使用していたバイナリフォルダをリネームし、バックアップとして保持します。最新バージョンを構築したフォルダをcardano-nodeとして使用します。
cd $HOME/git
mv cardano-node/ cardano-node-old/
mv cardano-node2/ cardano-node/
サーバーを再起動する
sudo reboot
SSH接続してノード同期状況を確認する
sudo journalctl --unit=cardano-node --follow
ノードログメッセージ確認
以下のメッセージがログに含まれている場合に同期状況を判断できます。
| メッセージ | ステータス |
|---|---|
Chain extended, new tip: xxxxxxxx at slot xxxxxx |
チェーン同期成功 |
GenesisReadFileError |
ジェネシスファイルエラー |
InvalidYaml |
設定ファイルエラー |
Invalid option |
起動オプションエラー |
Invalid argument |
起動コマンドエラー |
Address in use |
ノード起動ポートが競合しています |
3. 依存関係作業¶
3-1.リレー/BP共通¶
gLiveView更新
sed -i $NODE_HOME/scripts/env \
-e '1,73s!UPDATE_CHECK="N"!UPDATE_CHECK="Y"!' \
-e '1,73s!#PROM_HOST=127.0.0.1!PROM_HOST=127.0.0.1!' \
-e '1,73s!#PROM_PORT=12798!PROM_PORT=12798!'
gliveを起動する
glive
更新メッセージが表示されたらyesを入力してenter
env script update(s) detected, do you want to download the latest version? (yes/no): yes
gLiveView.sh更新完了のメッセージが表示されたら再度enter
gLiveView.sh update successfully applied!
press any key to proceed ..
更新フラグを切り替える
sed -i $NODE_HOME/scripts/env \
-e '1,73s!UPDATE_CHECK="Y"!UPDATE_CHECK="N"!'
gliveバージョン確認
glive
Koios gLiveView v1.32.0
3-2.BPサービス確認¶
ブロック生成ステータス通知またはSPO Block Notifyを未導入(更新)していない方
10-4.サービスファイル作成・登録を再実行してください。(エイリアス設定は不要です)
SPO Block Notify移行マニュアルから新規導入または更新を実施してください。
BPノードが完全に同期した後、サービス起動状態を確認する
- cnclilog
- leaderlog
- validate
- logmonitor
- blocknotify(SPO Block Notifyを導入している場合)
cnclilogでMissing eta_v for block xxxxxx エラーが出る場合の対処法
cncliを再同期してください
sudo systemctl stop cnode-cncli-sync.service
rm $NODE_HOME/guild-db/cncli/*
sudo systemctl restart cnode-cncli-sync.service
cnclilog
4. エアギャップアップデート¶
SFTP機能ソフト導入
R-loginの転送機能が遅いので、大容量ファイルをダウン・アップロードする場合は、SFTP接続可能なソフトを使用すると効率的です。(FileZilaなど)
ファイル転送に便利なSFTP機能ソフトの導入手順はこちら
4-1.バイナリファイルコピー¶
リレーサーバーで以下を実行する
sudo cp $(find $HOME/git/cardano-node -type f -name "cardano-cli") ~/cardano-cli
リレーサーバーで以下を実行する
cd $HOME/git/cardano-node
sudo cp $(./scripts/bin-path.sh cardano-cli) ~/cardano-cli
SFTP機能ソフト(Filezillaなど)で転送元サーバーに接続し、以下をダウンロードする
- /home/usr/cardano-cli
をローカルパソコンにダウンロードします
(エアギャップUbuntuとの共有フォルダ)
エアギャップマシンにファイルを入れる
- $HOME/git/cardano-node2/ に
cardano-cliを入れる
(cardano-node2が無ければ作成する)
4-2.インストール¶
エアギャップマシンで以下を実行する
cardano-cliをシステムフォルダへコピーする
sudo cp $(find $HOME/git/cardano-node2 -type f -name "cardano-cli") /usr/local/bin/cardano-cli
4-3.バージョン確認¶
cardano-cli version
以下の戻り値を確認する
cardano-cli 10.11.0.0 - linux-x86_64 - ghc-9.6
6c034ec038d8d276a3595e10e2d38643f09bd1f2
確認
エアギャップではcardano-nodeは使用しないため転送してもしなくてもOKです。