Skip to main content

ノードのアップグレード

はじめに

IntersectMBOは、cardano-nodeをGitHubリポジトリを通じて、Cardano Nodeの新しいバージョンを定期的にリリースしています。
リポジトリで入手可能なリリースノートをよく読んで、新しい機能、構成、既知の問題、技術仕様、関連ダウンロード、ドキュメント、変更ログ、アセット、および各新しいリリースのその他の詳細を確認してください。

ノードのアップグレードのトピックでは、Cardano Nodeを最新バージョンにアップグレードする方法について説明します。
アップグレードを完了するには、必要に応じて、ステークプールを構成する各ブロックプロデューサーとリレーノードで次の手順を完了します。

info

ステークプールを以前のCardano バージョンにダウングレードする手順については、アーカイブを参照してください。

tip

トラブルシューティング アップグレードが失敗した場合は、必要に応じて、破損したブロックチェーンの修正インストールのリセットを試してください。

GHCCabal等のバージョン確認

各Cardano Nodeのリリースでは、IntersectMBOは、、特定のバージョンのGHCCabalを使用してバイナリをコンパイルすることを推奨しています。
たとえば、Cardano開発者ポータルのソースからのcardano-nodecardano-cliのインストールを参照して、現在のCardano Nodeのリリースに必要なGHCCabalのバージョンを確認してください。
表1は、現在のCardano NodeのリリースのGHCCabalのバージョン要件を示しています。

表1 : 現在の Cardano ノード バージョン要件

リリース日Cardano ノード バージョンCardano CLI バージョンGHC バージョンCabal バージョンCNCLI バージョン
2026 年 3 月10.7.010.15.1.09.6.73.12.1.06.7.0

パッケージの最新化

  1. パッケージを最新化します。
sudo apt update && sudo apt upgrade -y

各種バージョン確認

  1. GHCのバージョン確認
ghc --version

The Glorious Glasgow Haskell Compilation System, version 9.6.7
※リリースノートを確認し、ghcup tuiコマンドで推奨を確認すること

  1. cabalのPATH確認
which cabal

/home/USER-NAME/.ghcup/bin/cabal

  1. cabalのバージョン確認
cabal --version

cabal-install version 3.12.1.0 compiled using version 3.12.1.0 of the Cabal library
※リリースノートを確認し、ghcup tuiコマンドで推奨を確認すること

  1. libsodiumのコミット値確認
cd $HOME/git/libsodium
git rev-parse --short=8 HEAD

dbb48cce

  1. libsecp256k1のバージョン確認
cd $HOME/git/secp256k1
git tag --points-at HEAD

v0.3.2

  1. blstライブラリのバージョン確認
cat /usr/local/lib/pkgconfig/libblst.pc | grep Version

Version: 0.3.14

上記、バージョンが違う場合はGlasgow Haskell コンパイラと Cabal のインストールをしてください。

新しい設定ファイルのダウンロード

必要に応じて構成ファイルの再取得

新しいCardano Nodeのリリースには、更新された構成ファイルが含まれている場合があります。
リリース用の構成ファイルが更新された場合は、ノードをアップグレードするときに新しい構成ファイルをダウンロードしてインストールする必要があります。

  1. 新しいCardano Nodeの構成ファイルをダウンロードしてインストールします。

  2. Cardano Nodeを停止するには、ターミナルウィンドウに次のコマンドを入力します。

sudo systemctl stop cardano-node.service
  1. ノードが現在使用している構成ファイルをバックアップするには、必要に応じて次のコマンドを入力します。
cd $NODE_HOME
mkdir -p backup
mv mainnet-config.json $NODE_HOME/backup/${NODE_CONFIG}-config.bak
mv mainnet-byron-genesis.json $NODE_HOME/backup/${NODE_CONFIG}-byron-genesis.bak
mv mainnet-shelley-genesis.json $NODE_HOME/backup/${NODE_CONFIG}-shelley-genesis.bak
mv mainnet-alonzo-genesis.json $NODE_HOME/backup/${NODE_CONFIG}-alonzo-genesis.bak
mv mainnet-conway-genesis.json $NODE_HOME/backup/${NODE_CONFIG}-conway-genesis.bak
mv mainnet-topology.json $NODE_HOME/backup/${NODE_CONFIG}-topology.bak
  1. バックアップを取得したら、全ノードで設定ファイルのダウンロードをすべて実行し、トポロジーの構成を実行します。

新しいCardanoバイナリのインストール

Cardano NodeのGitHubリポジトリからダウンロード可能なビルド済みのCardano Nodeバイナリをインストールすることも、ソースコードをダウンロードして自分でバイナリをコンパイルすることもできます。

ビルド済みバイナリの使用

ビルド済みのCardano Nodeバイナリをインストールします。

  1. 旧バイナリの削除
rm -rf $HOME/git/cardano-node-old-binaries
  1. ビルド済みのバイナリを保存するための一時ディレクトリを作成し、移動します。
mkdir -p $HOME/git/cardano-node-temporary
cd $HOME/git/cardano-node-temporary
  1. バイナリをダウンロードします。

バージョンについては以下で確認してください。
Cardano Nodeのリリースページ
Cardano CLIのリリースページ

release_tag=$(curl -s https://api.github.com/repos/IntersectMBO/cardano-node/releases/latest | jq -r .tag_name)
echo "Release tag : ${release_tag}"
wget https://github.com/IntersectMBO/cardano-node/releases/download/${release_tag}/cardano-node-${release_tag}-linux-amd64.tar.gz
  1. 解凍します。
tar zxvf cardano-node-${release_tag}-linux-amd64.tar.gz ./bin/cardano-node ./bin/cardano-cli ./bin/snapshot-converter ./bin/db-truncater
  1. バージョンの確認をします。
$(find $HOME/git/cardano-node-temporary -type f -name "cardano-node") version
$(find $HOME/git/cardano-node-temporary -type f -name "cardano-cli") version

以下の戻り値を確認する
cardano-node 10.7.0 - linux-x86_64 - ghc-9.6
git rev 1e6d8228693ab2aa4e1d7305e7bdcc57cdd278e4

cardano-cli 10.15.1.0 - linux-x86_64 - ghc-9.6
git rev 1e6d8228693ab2aa4e1d7305e7bdcc57cdd278e4

  1. ノードを停止します。
sudo systemctl stop cardano-node
  1. 新しいノードとCLIバイナリをインストールするには、次のように入力します。
sudo cp $(find $HOME/git/cardano-node-temporary -type f -name "cardano-node") /usr/local/bin/cardano-node
sudo cp $(find $HOME/git/cardano-node-temporary -type f -name "cardano-cli") /usr/local/bin/cardano-cli
  1. システムに反映されたバージョンの確認をします。
cardano-node version
cardano-cli version

以下の戻り値を確認する
cardano-node 10.7.0 - linux-x86_64 - ghc-9.6
git rev 1e6d8228693ab2aa4e1d7305e7bdcc57cdd278e4

cardano-cli 10.15.1.0 - linux-x86_64 - ghc-9.6
git rev 1e6d8228693ab2aa4e1d7305e7bdcc57cdd278e4

Mithril-Clientを使用する場合
  • Mithril-Clientのインストール
cd $HOME/git
mithril_release="$(curl -s https://api.github.com/repos/input-output-hk/mithril/releases/latest | jq -r '.tag_name')"
echo "Mithril : ${mithril_release}"

リリースノートで利用可能な最新バージョンを確認してください。

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
  • ダウンロードファイルの削除
rm mithril.tar.gz mithril-client
  • バージョンの確認
mithril-client -V
  • 最新のスナップショットをダウンロードするため作業用セッションを展開
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を削除し、最新のスナップショットのダウンロードおよび解凍
rm -rf $NODE_HOME/db
mithril-client cardano-db download \
--network "${NETWORK}" \
--aggregator-endpoint "${AGGREGATOR_ENDPOINT}" \
--genesis-verification-key "${GENESIS_VERIFICATION_KEY}" \
--ancillary-verification-key "${ANCILLARY_VERIFICATION_KEY}" \
--include-ancillary \
--download-dir "${NODE_HOME}" \
"${SNAPSHOT_DIGEST}"

1/5~5/5が終了するまで待機

  • 完了後、Tmuxを閉じます。
exit
  1. snapshot-converterを用いて、DB同期を短縮するため、スナップショットを変換します。
cp -rf $NODE_HOME/db/ledger $NODE_HOME/db/ledgerbackup
sleep 1
cd $NODE_HOME/db/ledgerbackup
sleep 1
latest_snapshot=$(ls -1 | grep -E '^[0-9]+$' | sort -n | tail -n 1)
sleep 1
$HOME/git/cardano-node-temporary/bin/snapshot-converter Legacy ${latest_snapshot} Mem ${latest_snapshot}_mem cardano --config $NODE_HOME/${NODE_CONFIG}-config.json
rm -rf $NODE_HOME/db/ledger/*
cp -r ${latest_snapshot}_mem $NODE_HOME/db/ledger/${latest_snapshot}
  1. 作業ディレクトリ名を変更し、サーバーの再起動
cd $HOME/git
mv cardano-node/ cardano-node-old-binaries/
mv cardano-node-temporary/ cardano-node/
sudo reboot
  1. ノードの同期確認
sudo journalctl --unit=cardano-node --follow | grep -e 'Progress:' -e 'Chain extended, new tip:'

Chain extended, new tip: xxxxxxxx at slot xxxxxx

Guild LiveView

Guild Operatorsは、Guild LiveViewを含む、Cardanoステークプールの操作を簡素化する一連のツールを維持しています。
gLiveViewスクリプトを使用する場合は、Cardano Nodeをアップグレードする前に、最新バージョンを使用していることを確認してください。

info

Guild Operatorスクリプトの共通envファイルでは、デフォルトでUPDATE_CHECKがユーザー変数に設定されており、gLiveView.shの起動時にスクリプトの更新をチェックします。
実装でgLiveViewの起動時に「スクリプトの更新を確認しています」というメッセージが表示されたら利用可能な更新がインストールされます。

  1. Guild LiveViewツールを手動でアップグレードします。
sed -i $NODE_HOME/scripts/env \
-e '1,40s!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!'
  1. gliveを起動します。
glive

更新メッセージが表示されるのでyesenterを押下
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 ..

  1. UPDATE_CHECKNに変更します。
sed -i $NODE_HOME/scripts/env \
-e '1,40s!UPDATE_CHECK="Y"!UPDATE_CHECK="N"!'

Koios gLiveView v1.32.0

サードパーティ製ソフトウェアのアップグレード

CNCLI

Cardanoコミュニティによって開発されたCNCLIコマンドラインユーティリティを使用する場合は、新しいバージョンが利用可能な場合は最新バージョンにアップグレードしてください。

warning

Cardano コミュニティのCNCLIユーティリティと、Guild Operatorsが管理するステークプールオペレーター向けのcncli.shコンパニオンスクリプトを混同しないでください。

CardanoコミュニティのCNCLIバイナリをアップグレードします。

  1. ターミナルウィンドウで、次のコマンドを入力します。
cd $HOME
release_tag=$(curl -s https://api.github.com/repos/cardano-community/cncli/releases/latest | jq -r .tag_name)
version=$(echo ${release_tag} | cut -c 2-)
echo "Release tag : ${release_tag}"
echo "Release version : ${version}"
curl -sLJ https://github.com/cardano-community/cncli/releases/download/${release_tag}/cncli-${version}-ubuntu22-x86_64-unknown-linux-gnu.tar.gz -o $HOME/cncli-${version}-ubuntu22-x86_64-unknown-linux-gnu.tar.gz
tar xzvf $HOME/cncli-${version}-ubuntu22-x86_64-unknown-linux-gnu.tar.gz -C $HOME/.cargo/bin/
rm $HOME/cncli-${version}-ubuntu22-x86_64-unknown-linux-gnu.tar.gz

CNCLIのリリースページ

  1. CNCLIのバージョン確認
cncli -V
  1. 変数node_portにBPのノードポート番号を代入します。
port=`grep "PORT=" $NODE_HOME/startCardanoNodeBP.sh`
node_port=${port#"PORT="}
echo "BPポート : ${node_port}"
  1. 変数pool_hexpool_bech32pool-hex.idpool-bech32.idの内容を代入します。
pool_hex=`cat $NODE_HOME/pool-hex.id`
pool_bech32=`cat $NODE_HOME/pool-bech32.id`
printf "\nPoolID-hex : \e[32m${pool_hex}\e[m \n\n"
printf "\nPoolID-bech32 : \e[32m${pool_bech32}\e[m \n\n"
  1. 変数pt_api_keyにPoolToolのAPI KEYを代入します。
pt_api=$(grep "PT_API_KEY=" $NODE_HOME/scripts/cncli.sh)
pt_api_key=$(echo "${pt_api}" | sed -E 's/^PT_API_KEY="([^"]+)".*/\1/')
echo "PoolTool API Key : ${pt_api_key}"
  1. ライブラリの更新
cd $NODE_HOME/scripts
wget https://raw.githubusercontent.com/cardano-community/guild-operators/master/scripts/cnode-helper-scripts/cntools.library -O cntools.library
  1. cncli.shの更新
cd $NODE_HOME/scripts
wget https://raw.githubusercontent.com/cardano-community/guild-operators/master/scripts/cnode-helper-scripts/cncli.sh -O ./cncli.sh
  1. cncli.shファイルの修正
sed -i $NODE_HOME/scripts/cncli.sh \
-e '1,30s!#POOL_ID=""!POOL_ID="'${pool_hex}'"!' \
-e '1,30s!#POOL_ID_BECH32=""!POOL_ID_BECH32="'${pool_bech32}'"!' \
-e '1,30s!#POOL_VRF_SKEY=""!POOL_VRF_SKEY="${CNODE_HOME}/vrf.skey"!' \
-e '1,30s!#POOL_VRF_VKEY=""!POOL_VRF_VKEY="${CNODE_HOME}/vrf.vkey"!' \
-e '1,73s!#PT_API_KEY=""!PT_API_KEY="'${pt_api_key}'"!' \
-e '1,73s!#POOL_TICKER=""!POOL_TICKER="'$(echo `jq -r '.ticker' $NODE_HOME/pool-metadata.json`)'"!' \
-e '1,73s!#PT_HOST="127.0.0.1"!PT_HOST="127.0.0.1"!' \
-e '1,73s!#PT_PORT="${CNODE_PORT}"!PT_PORT="'${node_port}'"!' \
-e '1,73s!#PT_SENDSLOTS_START=30!PT_SENDSLOTS_START=30!' \
-e '1,73s!#PT_SENDSLOTS_STOP=60!PT_SENDSLOTS_STOP=60!' \
-e '1,73s!#SLEEP_RATE=60!SLEEP_RATE=60!'
  1. ブロックログサービスの再起動
sudo systemctl restart cnode-cncli-sync.service
エラー対処法: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%になるまで待機

エアギャップのアップデート

  1. Relayにて次のコマンドを実行します。
sudo cp $(find $HOME/git/cardano-node -type f -name "cardano-cli") ~/cardano-cli
  1. Filezillaを用いてcardano-cliを共有フォルダにダウンロードします。
  1. フォルダ作成
mkdir -p $HOME/git/cardano-node-temporary
  1. cardano-node-temporarycardano-cliを移動します。

  2. システムフォルダにコピーします。

sudo cp $(find $HOME/git/cardano-node-temporary -type f -name "cardano-cli") /usr/local/bin/cardano-cli
sudo chmod +x /usr/local/bin/cardano-cli
  1. バージョンを確認します。
cardano-cli version

cardano-cli 10.15.1.0 - linux-x86_64 - ghc-9.6
git rev 1e6d8228693ab2aa4e1d7305e7bdcc57cdd278e4