コンテンツにスキップ

カルダノステークプール運用ガイド

サポート

サポートが必要な場合は、SPO JAPAN GUILDコミュニティで現役のSPOに質問できます

パラメーターを理解する

項目 用途
optimal_pool_count(K) 500 飽和閾値設定用
a0 0.3 誓約報酬係数 
max_tx_size 81920 最大トランザクションサイズ 
epochLength 432000 1エポックのスロット数 
slotsPerKESPeriod 129600 1KES当たりのスロット数 
maxKESEvolutions 62 KES有効期間 
activeSlotsCoeff 0.05 1エポック内の有効スロット率 

スロットを理解する

  • Slot = ジェネシススロットからのスロット
  • Slot epoch = エポック内のスロット

  • 1スロット=1秒

  • 1エポック=432000スロット(epochLength)
    (432000 / 60 = 7200分 / 60 = 120時間 / 24 = 5日)

ブロック生成スロットリーダー

1エポック内のブロック生成有効スロットは5%(432000スロット × 5% = 約21600スロット)
委任量に応じて、スロットリーダーがランダムに決定されます。

1エポックで1ブロック割り当てられるために必要な委任量の目安は以下の通りです。

  • 1M 60%
  • 2M 85%
  • 3M 95%

スロットリーダーの割り当ては、プール間同士で調整されないため以下のタイプのバトルが発生します。

スロットバトル(stolen)

他プールと同じスロットに割り当てられた際に発生
vrf値によるサイコロゲームが行われ出た目の小さいプールのブロックが採用されます。(ステーク量が少ないプールが有利)

ハイトバトル(Ghosted / missed)

他プールと5秒以内に割り当てられた際に発生
ブロック伝播遅延による発生で、現在のネットワークは5秒以内にブロック伝播が行われれば問題ないため、1秒~2秒前後にスロットリーダーが重なった場合ブロック伝播遅延が発生。地理的不利を解消するため、vrf値によるサイコロゲームが行われ出た目の小さいプールのブロックが採用されます。(ステーク量が少ないプールが有利)

KESとは?

KES=Key-Evolving Signatures

ブロック生成署名用鍵ファイル。過去のブロック署名を書き換えることが出来ないよう90日ごとに更新が必要。

VRFとは?

VRF=Verifiable Random Function

Ouroboros Praosは、VRF(Verifiable Random Function)キーによって、ブロック生成にさらなるセキュリティ層を追加しています。 Ouroboros Praosのスロットリーダーのスケジュールは非公開となっており、VRFキーを使ってスロットリーダーの検証を行っております。

各ファイルの役割と保管場所

証明書とペアキー

🔒・・・ロック必須・再作成不可・紛失不可
🔄・・・更新時書き換え・再作成可能
🔴・・・BP起動で使用
🔷・・・ブロックログで使用

ファイル 用途 推奨保管場所 重要度
payment.vkey paymentアドレス公開鍵 エアギャップ / USB 🔒
payment.skey paymentアドレス秘密鍵 エアギャップ / USB 🔒
stake.vkey ステークアドレス公開鍵 エアギャップ / USB 🔒
stake.skey ステークアドレス秘密鍵 エアギャップ / USB 🔒
vrf.vkey🔷 VRF公開鍵 BP / エアギャップ / USB 🔒
vrf.skey🔴 VRF秘密鍵 BP / エアギャップ / USB 🔒
node.vkey コールド公開鍵 エアギャップ / USB 🔒
node.skey コールド秘密鍵 エアギャップ / USB 🔒
payment.addr paymentアドレスファイル BP / エアギャップ / USB 🔃
stake.addr ステークアドレス秘密鍵 BP / エアギャップ / USB 🔃
kes.vkey KES公開鍵 エアギャップ / USB 🔃
kes.skey🔴 KES秘密鍵 BP / エアギャップ / USB 🔃
node.cert🔴 プール運用証明書 BP / エアギャップ / USB 🔃
pool.cert プール登録証明書 エアギャップ / USB 🔃
node.counter カウンターファイル エアギャップ / USB 🔃

ノード起動用設定ファイル

ファイル 用途
mainnet-byron-genesis.json Byron設定ファイル
mainnet-shelley-genesis.json Shelley設定ファイル
mainnet-alonzo-genesis.json Alonzo設定ファイル
mainnet-config.json ノード設定ファイル
mainnet-topology.json トポロジーファイル

スクリプトファイルやその他

ファイル 用途 推奨保管場所 重要度
startRelayNode1.sh リレー用ノード起動スクリプト リレー 🔃
startBlockProducingNode.sh BP用ノード起動スクリプト BP 🔃
gLiveView.sh ノードGUI用スクリプト リレー/BP 🔃
topologyUpdater.sh トポロジーフェッチ登録スクリプト リレー 🔃
relay-topology_pull.sh トポロジーファイル生成スクリプト リレー 🔃
params.json パラメーターファイル BP 🔃
poolMetaData.json プール情報JSON BP 🔃
poolMetaDataHash.txt poolMetaData.jsonハッシュ値ファイル BP 🔃
fullUtxo.out UTXO出力ファイル 使用後削除可 -
balance.out ウォレット残高出力ファイル 使用後削除可 -
tx.tmp 仮トランザクションファイル 使用後削除可 -
tx.raw トランザクションファイル 使用後削除可 -
tx.signed トランザクション署名付きファイル 使用後削除可 -

作業内容チェックリスト

日次作業

  • ノード稼働状況チェック(Grafana等)

エポック毎作業

3か月毎作業

不定期作業

  • ノードアップデート
  • サードパーティ製アプリアップデート
  • サーバー障害対応
  • プール設定変更など

トポロジーファイルの更新

概要

トポロジーファイルに記載されてるリレーノードは常に最新状態を保つことが望ましいため、1エポックに1回は書き換えることを推奨します。

cd $NODE_HOME
./relay-topology_pull.sh

ヒント

relay-topology_pull.shを実行すると新しいトポロジーファイル(mainnet-topology.json)を生成します。 新しいトポロジーファイルはノード再起動後に有効になります。

sudo systemctl reload-or-restart cardano-node

リレーノードでgLiveView を確認

ノードが同期するか確認します。

cd $NODE_HOME/scripts
./gLiveView.sh

スケジュール算出

概要

次のスロットリーダースケジュールはエポック終了までにノードを再起動することによって算出され、把握できます。(1.5日前から算出可能)
エポックが切り替わった後でも算出できますが、スケジュールが分からない状態でのノード再起動となり、リスクを伴うため事前に把握することを推奨します。