プール運用マニュアル¶
このマニュアルは、Cardanoステークプールの運用に必要なパラメーター、鍵ファイルの役割、日々の運用タスク、重要な注意点を体系的にまとめたものです。
実践的で安全な運用ができるように構成されています。
サポート
運用に関する質問や不明点があれば、DiscordのSPO JAPAN GUILDコミュニティに参加し、現役SPOに相談できます。
パラメーターの理解¶
主要なパラメーター一覧:
| 項目 | 値 | 用途 |
|---|---|---|
| stakeAddressDeposit | 2 ADA |
ステークキー登録時に必要な保証金 |
| stakePoolDeposit | 500 ADA |
プール登録時に必要な保証金 |
stakePoolTargetNum(K) |
500 |
飽和閾値設定用(理想的なプール数) |
poolPledgeInfluence(a0) |
0.3 |
誓約(pledge)が報酬に与える影響係数 |
| minPoolCost | 170 ADA |
プールが設定できる最小固定費 |
| maxTxSize | 16384 |
トランザクションの最大サイズ |
| maxBlockBodySize | 90112 |
ブロック本体の最大サイズ |
| epochLength | 432000 |
1エポック内のスロット数 |
| slotLength | 1 |
1スロットの長さ(秒) |
| activeSlotsCoeff | 0.05 |
ブロック生成が可能とみなされるアクティブスロット係数 |
| slotsPerKESPeriod | 129600 |
1回分のKES有効期間(スロット数) |
| maxKESEvolutions | 62 |
KESを進化(evolve)できる回数の上限 |
スロットの理解¶
- スロット(Slot) = ジェネシスからの通算スロット番号
- スロットエポック(Slot epoch) = エポック内でのスロット番号
- 1スロット=1秒(slotLength)
- 1エポック=432,000スロット(epochLength)
→ 432,000 / 60 = 7200分 / 60 = 120時間 / 24 = 5日
ブロック生成スロットリーダー¶
スロットリーダーは、委任量(ステーク量)に応じた確率で、各スロットごとにランダムに決定されます。
1エポック内で、ブロック生成が可能なスロットは約5%です。(432,000 * 0.05 = 21,600スロット)
1エポックで「1ブロック」期待値を得るための委任量の目安:
※実際には乱数により前後します。
- 1M ADA: 約60%
- 2M ADA: 約85%
- 3M ADA: 約95%
スロットリーダーはプール間で調整されず、複数プールが同じスロットに選ばれることがあるため、以下のバトルが発生します。
バトル
通称:スロットバトル(SlotBattle / Stolen)
スロットバトルとは、複数のプールに同じスロットが割り当てられた時に発生する現象です。
Cardanoでは、1スロットにつき1ブロックしか採用されないため、どのプールのブロックが選ばれるかをVRFのランダム値で決定します。
各プールが生成するVRF値を比較し、最も値が小さいプールのブロックが採用されます。
VRFの比較は完全にランダムであるため、ステーク量による優位性はなく、運次第で結果が決まります。
通称:ハイトバトル(HeightBattle / Ghosted)
数秒以内に複数のプールがブロックを生成した場合に発生する競合。
伝播のタイミング差により複数のブロックが同時にネットワーク上に現れ、VRF値の比較によって採用ブロックが決定されます。(ランダム性があり、ステーク量の優位はありません)
KES¶
説明
KESは、Key Evolving Signaturesの略です。
ブロック生成に使用する署名鍵で、過去の署名を後から書き換えられないよう鍵を一定期間ごとに進化(evolve)させる仕組みになっています。
メインネットでは、129,600スロット(slotsPerKESPeriod) × 62回(maxKESEvolutions) = 8,035,200秒(約93日)が1つのKES鍵の有効期間であり、期限前に新しいKESを作成して更新する必要があります。
VRF¶
説明
VRFは、Verifiable Random Functionの略です。
Ouroboros Praosでは、VRFキーを使って 各スロットでプールがスロットリーダーに選ばれるかどうかをランダムかつ検証可能な方法で判定 します。
Praosではスロットリーダーのスケジュールが非公開で、ノードはVRFキー(オペレーショナル証明書に含まれる検証鍵)を使って、そのスロットで正当にブロック生成権を得たことを証明します。
各種鍵ファイルの役割と保管場所¶
証明書および鍵ファイルの詳細¶
・・・ロック必須・再作成不可・紛失不可
・・・更新時書き換え・再作成可能
🔴・・・BP起動で使用
🔷・・・ブロックログで使用
鍵ファイルバックアップについて
マークが付いたファイルは、プール運営において極めて重要な鍵ファイルです。
これらを紛失・破損するとプール運営を継続できなくなったり、報酬や資金を引き出せなくなります。
必ず複数のUSBメディアなどに冗長化・分散保管し、安全にバックアップしてください。
| ファイル | 用途 | 推奨保管場所 | 重要度 |
|---|---|---|---|
| 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-conway-genesis.json | Conway設定ファイル |
| mainnet-config.json | ノード設定ファイル |
| mainnet-topology.json | トポロジーファイル |
スクリプトファイルおよびその他のファイル¶
| ファイル | 用途 | 推奨保管場所 | 重要度 |
|---|---|---|---|
| startRelayNode1.sh | リレー用ノード起動スクリプト | リレー | |
| startBlockProducingNode.sh | BP用ノード起動スクリプト | BP | |
| gLiveView.sh | ノードGUI用スクリプト | リレー/BP | |
| params.json | パラメーターファイル | BP | |
| poolMetaData.json | プール情報JSON | BP | |
| poolMetaDataHash.txt | poolMetaData.jsonハッシュ値ファイル | BP | |
| fullUtxo.out | UTXO出力ファイル | 使用後削除可 | - |
| balance.out | ウォレット残高出力ファイル | 使用後削除可 | - |
| tx.tmp | 仮トランザクションファイル | 使用後削除可 | - |
| tx.raw | トランザクションファイル | 使用後削除可 | - |
| tx.signed | トランザクション署名付きファイル | 使用後削除可 | - |
運用タスクチェックリスト¶
各作業
日次作業
- ノード稼働状況チェック(Grafana等)
- ブロック生成ステータスの確認
エポック毎作業
- 次エポックのブロック生成スケジュール確認
(320,000 スロットを超えてからエポック終了までに確認)
3か月毎作業
- KESの更新(KES鍵の再生成および証明書更新)
不定期作業
- Ubuntuパッケージアップデート
- ノードアップデート
- サードパーティ製アプリ(CNCLI、gLiveView 等)のアップデート
- サーバー障害対応
- プール設定変更等