メインコンテンツまでスキップ

DB同期のブートストラップ(Mithrilベータ版)

ヒント
  • このマニュアルではMithril-Clientを使用したcardano-node DB同期ブートストラップを実行します。
  • ノード初回起動時のDB同期時間を約2日から約30分以内にまで短縮できます。
  • Mithrilプロトコルはまだベータバージョンのため、ご自身の責任で実施してください。
  • この作業は、ノードの起動まで実施してから行って下さい。
  • スナップショットノードバージョンとサーバーノードバージョンが異なる場合、DB再構築処理が入る場合がありDB同期までに数時間かかります。
  1. 必要ツールのインストール

ノードを停止します。

sudo systemctl stop cardano-node

システムのアップデート

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

必要ツールのインストール

sudo apt install -y libssl-dev build-essential m4 jq
  1. Rustのインストール
備考

Rustがインストールされている場合の実施不要

rustc -V
  1. Rustのインストール
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. Proceed with standard installation (default - just press enter)
    Enterを押下
  1. 環境変数を反映
source $HOME/.cargo/env
  1. 必要なツールとターゲットのインストール
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

  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}
  1. mithril-client-cliのビルド
cd mithril-client-cli
make build
  1. バージョンの確認
./mithril-client -V

リリースノートで最新を確認します。

  1. システムフォルダにコピーします。
sudo mv mithril-client /usr/local/bin/mithril-client

10.バージョンの確認

mithril-client -V
  1. DBのブートストラップ
tmux new -s mithril
  1. 変数を設定します。
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
  1. 最新のスナップショットのダウンロードおよび解凍
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が終了するまで待機

  1. 完了後、Tmuxを閉じます。
exit
  1. ノードを起動します。
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}"