DB同期のブートストラップ(Mithrilベータ版)
ヒント
- このマニュアルでは
Mithril-Clientを使用したcardano-node DB同期ブートストラップを実行します。 - ノード初回起動時のDB同期時間を約2日から約30分以内にまで短縮できます。
- Mithrilプロトコルはまだベータバージョンのため、ご自身の責任で実施してください。
- この作業は、ノードの起動まで実施してから行って下さい。
- スナップショットノードバージョンとサーバーノードバージョンが異なる場合、DB再構築処理が入る場合がありDB同期までに数時間かかります。
- 全ノード
- 必要ツールのインストール
ノードを停止します。
sudo systemctl stop cardano-node
システムのアップデート
sudo apt update -y && sudo apt upgrade -y
必要ツールのインストール
sudo apt install -y libssl-dev build-essential m4 jq
- Rustのインストール
備考
Rustがインストールされている場合の実施不要
rustc -V
- Rustのインストール
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Proceed with standard installation (default - just press enter)
Enterを押下
- 環境変数を反映
source $HOME/.cargo/env
- 必要なツールとターゲットのインストール
rustup install stable
rustup default stable
rustup update
rustup component add clippy rustfmt
rustup target add x86_64-unknown-linux-musl
Details
rustc1.83.0はRust2021Editionまでにしか対応していないので以下を実施する
0.12.1を使うには、mithril-client-cli のビルド時だけ nightly を使う(グローバル切り替え不要)Rust 2024 Edition は まだ安定版に統合されていないため、現時点(1.83.0)では以下のように nightly に切り替える必要があります。
rm -rf $HOME/git/mithril
クリーンビルド前に完全初期化
cargo clean
明示的に出力先を指定してビルド
cargo +nightly build --release --target-dir target
バイナリが生成されたか確認
ls -lh target/release/
出力例:target/release/mithril-client
バイナリをコピー・インストール
sudo cp target/release/mithril-client /usr/local/bin/mithril-client
バージョン確認で完了確認
mithril-client -V
mithril-client 0.12.1
- Mithril-Clientのインストール
cd $HOME/git
git clone https://github.com/input-output-hk/mithril.git
cd mithril
git fetch --all --prune
mithril_release="$(curl -s https://api.github.com/repos/input-output-hk/mithril/releases/latest | jq -r '.tag_name')"
git checkout tags/${mithril_release}
mithril-client-cliのビルド
cd mithril-client-cli
make build
- バージョンの確認
./mithril-client -V
リリースノートで最新を確認します。
- システムフォルダにコピーします。
sudo mv mithril-client /usr/local/bin/mithril-client
10.バージョンの確認
mithril-client -V
- DBのブートストラップ
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
- 最新のスナップショットのダウンロードおよび解凍
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
- ノードを起動します。
sudo systemctl start cardano-node
glive
gliveviewを起動し、最新ブロックと同期していること
その他のmithril-clientコマンド
mithril-clientコマンド
- Cardanoノードをブートストラップできる利用可能なスナップショットを一覧の表示
mithril-client cardano-db snapshot list \
--network "${NETWORK}" \
--aggregator-endpoint "${AGGREGATOR_ENDPOINT}"
- スナップショットの詳細表示
digest_value=""
snapshot list で取得したDigestを指定
mithril-client cardano-db snapshot show "${digest_value}" \
--network "${NETWORK}" \
--aggregator-endpoint "${AGGREGATOR_ENDPOINT}"