コンテンツにスキップ

ノードアップデートマニュアル

このガイドは ノードバージョン10.4.1に対応しています。
最終更新日:2025年5月26日  

バージョン対応表

  • 各依存関係もバージョンアップしてますのでよくお読みになって進めてください
Node CLI GHC Cabal CNCLI
10.4.1 10.8.0.0 9.6.7 3.12.1.0 6.5.1

■アップデートパターンDB再構築有無

バージョン DB再構築有無 設定ファイル更新有無 トポロジーファイル更新有無
~10.3.1→10.4.1 あり 更新あり 更新なし
  • 作業前にブロック生成スケジュールを確認し余裕のある作業をお願いします
  • 複数行のコードをコードボックスのコピーボタンを使用してコマンドラインに貼り付ける場合は、最後の行が自動実行されないため確認の上Enterを押してコードを実行してください。
主な変更点と新機能および検証結果

cardano-node v10.4.1

  • UTxO-HD統合
    現時点ではプール運営のノードではディスクバックエンドは非推奨のため、当マニュアルではインメモリバックエンドセットアップで構築されています
    UTxO-HDの概要についてはこちらをご参照ください
  • config.json内 LedgerDB新しいキーを設定

cardano-cli v10.8.0.0

  • query stake-pools JSON出力形式修正
  • トランザクションの構築と署名のコマンドにCBORの正規出力トグルを追加
  • query utxoコマンドの出力形式デフォルトをJSON形式に変更

検証結果

■検証環境 Ubuntu22.04 / PreProd-Testnet / cardano-node 10.4.1 / cardano-cli 10.8.0.0 / SJG-TOOL 3.9.4

検証項目 結果
ソースコートビルド
ブロック生成
リソース監視
報酬出金
ウォレット送金
KES更新
ガバナンス投票

1.依存環境アップデート

1-1. システムアップデート

システムアップデート

sudo apt update -y && sudo apt upgrade -y

【重要】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バージョン確認
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.5.1

cncli v6.5.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.5.1になったことを確認する

2.ノードアップデート

バイナリファイルインストール方法の違いについて

  • ビルド済みバイナリ・・・IntersectMBOリポジトリソースコードからビルドされたバイナリファイルをダウンロードします。ビルド不要のためビルド時間を短縮できます。

  • ソースコードからビルド・・・ご自身のサーバーでソースコードからビルドしてバイナリファイルを作成します。検証目的やソースコードからビルドしたい場合に利用できます。ビルドに30分前後かかります。Raspberry Piを使用してプールを構築する場合は、ARM用コンパイラでコンパイルする必要があります。

2-1.バイナリダウンロード

現在インストール中のノードバージョンを控える

current_node=$(cardano-node version | grep cardano-node)
echo $current_node

旧バイナリを削除する

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.4.1/cardano-node-10.4.1-linux.tar.gz

解凍する

tar zxvf cardano-node-10.4.1-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.8.0.0 - linux-x86_64 - ghc-9.6
420c94fbb075146c6ec7fba78c5b0482fafe72dd

cardano-node 10.4.1 - linux-x86_64 - ghc-9.6
420c94fbb075146c6ec7fba78c5b0482fafe72dd

ノードをストップする

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.8.0.0 - linux-x86_64 - ghc-9.6
420c94fbb075146c6ec7fba78c5b0482fafe72dd

cardano-node 10.4.1 - linux-x86_64 - ghc-9.6
420c94fbb075146c6ec7fba78c5b0482fafe72dd

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.4.1
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.8.0.0 - linux-x86_64 - ghc-9.6
420c94fbb075146c6ec7fba78c5b0482fafe72dd

cardano-node 10.4.1 - linux-x86_64 - ghc-9.6
420c94fbb075146c6ec7fba78c5b0482fafe72dd

ビルド用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.8.0.0 - linux-x86_64 - ghc-9.6
420c94fbb075146c6ec7fba78c5b0482fafe72dd

cardano-node 10.4.1 - linux-x86_64 - ghc-9.6
420c94fbb075146c6ec7fba78c5b0482fafe72dd

snapshot-converterをダウンロードする

cd $HOME/git/cardano-node2
wget -q https://github.com/IntersectMBO/cardano-node/releases/download/10.4.1/cardano-node-10.4.1-linux.tar.gz
解答する
tar zxvf cardano-node-10.4.1-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.4.1/${NODE_CONFIG}-config.json -O ${NODE_CONFIG}-config.json
wget -q https://spojapanguild.net/node_config/10.4.1/${NODE_CONFIG}-checkpoints.json -O ${NODE_CONFIG}-checkpoints.json

設定ファイルダウンロード

cd $NODE_HOME
wget -q https://spojapanguild.net/node_config/10.4.1/${NODE_CONFIG}-config-bp.json -O ${NODE_CONFIG}-config.json
wget -q https://spojapanguild.net/node_config/10.4.1/${NODE_CONFIG}-checkpoints.json -O ${NODE_CONFIG}-checkpoints.json
起動スクリプト更新
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

2-4.LMDB変換

LMDB変換について

10.4.1の元帳データではLMDB構造を使用しているため、10.3.1以前のバージョンからアップグレードする場合リプレイ(再構築)が発生します。この再構築を避けるために以下の設定を実施して元帳データを変換してください。

ledgerディレクトリをバックアップ

cp -r $NODE_HOME/db/ledger $NODE_HOME/db/ledgerbackup
スナップショットスロットNo取得
cd $NODE_HOME/db/ledgerbackup
snapshot_slotno=$(ls -1 | grep -v '\.checksum$' | sort -r | head -n 1)
DB変換
$HOME/git/cardano-node2/bin/snapshot-converter Legacy ${snapshot_slotno} Mem ${snapshot_slotno}_mem cardano --config $NODE_HOME/${NODE_CONFIG}-config.json
DB置換
rm -rf $NODE_HOME/db/ledger/*
cp -r ${snapshot_slotno}_mem $NODE_HOME/db/ledger/${snapshot_slotno}

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,40s!UPDATE_CHECK="N"!UPDATE_CHECK="Y"!'

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,40s!UPDATE_CHECK="Y"!UPDATE_CHECK="N"!'

gliveバージョン確認

glive

Koios gLiveView v1.30.4

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
100% sync'dになるまでお待ち下さい

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.8.0.0 - linux-x86_64 - ghc-9.6
420c94fbb075146c6ec7fba78c5b0482fafe72dd

確認

エアギャップではcardano-nodeは使用しないため転送してもしなくてもOKです。