ステークプール登録
概要
こちらの手順は初回プール登録時のみ有効です。
プール登録後にメタ情報、誓約、固定費、変動費、リレー情報を変更する場合は、運用証明書(pool.cert)の更新の変更手順を実施してください。
プール登録料
ステークプール登録には、 500ADA の登録料が必要です。
payment.addrに入金されている必要があります。
1. メタデータの作成
ホームページを持っていない場合
「JSONファイルをGitHubでホストする方法」を実施してください。
Example
- GitHubアカウントを作成し、ログイン https://github.com/
ユーザー名を最大13文字以内で作成してください。
-
Repositoriesタブを選択し、右上のNew を選択
-
リポジトリ作成
- Repository nameに任意のリポジトリ名 最大13文字以内 を入力
- Publicを選択
- Create repositoryを選択
- 小さい文字で書かれたcreating a new fileを選択
- ファイル名を poolMetaData.json として入力し、JSON コンテンツを貼り付け
{
"name": "MyPoolName",
"description": "My pool description",
"ticker": "MPN",
"homepage": "https://myadapoolnamerocks.com"
}作成時の注意
- 下記は参考フォーマットとなります。ご自身のプール名、Ticker名に書き換えてください
- まだホームページURLが無い場合は、ご自身のX(Twitter)アドレスでも大丈夫です。
- ticker名の長さは3~5文字以内で、
A-Zと0-9のみで構成する必要があります。 - descriptionの長さは255文字以内(
255byte)となります。(ひらがな、漢字、カタカナは1文字2byte)
- Commit Changesを選択
- 上部のメニューからSettingsを選択
- GitHub Pages設定
- 左メニューからPagesを選択
- Branchのプルダウンからmain /rootを選択
- Saveを選択
- URLの生成
- 左メニューからPagesを選択
- 上部にこのリポジトリの公開URLが表示されたことを確認
- 赤枠のURLをコピー
- メタデータURLの生成
9でコピーしたURLにpoolMetaData.jsonを繋げてください
このURLの文字列が64文字以内であることを確認してください
- BPでJSONファイルをダウンロードし、ハッシュ値を計算
URLを書き換えてから実行してください
10で作成したメタデータURLを用いてください。
cd $NODE_HOME
wget -O poolMetaData.json https://xxx.github.io/xxx/poolMetaData.json Example
Hint
下記は参考フォーマットとなります。ご自身のプール名、Ticker名に書き換えてください
作成ルール
ticker名の長さは3~5文字にする必要があります。文字はA-Zと0-9のみで構成する必要があります。
descriptionの長さは255文字以内(255byte)となります。(ひらがな、漢字、カタカナは1文字2byte)
メタデータファイルの作成
cd $NODE_HOME
cat > poolMetaData.json << EOF
{
"name": "MyPoolName",
"description": "My pool description",
"ticker": "MPN",
"homepage": "https://myadapoolnamerocks.com"
}
EOF注意
poolMetaData.json をご自身の公開用Webサーバへアップロードしてください。
メタデータJSONの確認
jq . $NODE_HOME/poolMetaData.json戻り値にエラーが表示される場合
戻り値にparse error:が表示される場合は、JSON構文に誤りがあります。
作成したメタデータJSONファイルを確認してください。
メタデータファイルのハッシュ値を計算します。
cd $NODE_HOME
cardano-cli latest stake-pool metadata-hash --pool-metadata-file poolMetaData.json > poolMetaDataHash.txt2. プール登録証明書の作成
ファイル転送
BPにあるvrf.vkeyとpoolMetaDataHash.txt をエアギャップのcnodeディレクトリにコピーしてください。
BPとエアギャップでvrf.vkeyファイルハッシュを比較
cd $NODE_HOME
sha256sum vrf.vkeyヒント
BPとエアギャップで表示された戻り値を比較して、ハッシュ値が一致していれば問題ありません。
cd $NODE_HOME
sha256sum vrf.vkey最小プールコスト(最低固定費)を出力してください。
minPoolCost=$(cat $NODE_HOME/params.json | jq -r .minPoolCost)
echo minPoolCost: ${minPoolCost}Info
出力例: minPoolCost が 170000000 lovelace の場合、170 ADA です。
エアギャップでpool.certを作成してください
pool.cert とサンプル値
pool.cert はステークプールの登録内容を書き込んだ証明書です。
この後のサンプルコマンドでは、主に次の 3 つが設定されています。
実運用の値に読み替えてから実行してください。
- 誓約(Pledge) …
--pool-pledge(例: 100 ADA に相当します) - 固定手数料(固定費 / cost) …
--pool-cost(例: 170 ADA。チェーンのminPoolCost以上が必要です) - 変動手数料(マージン / margin) …
--pool-margin(例: 5% →0.05。0~1 の小数になります)
誓約(Pledge)について
誓約(Pledge)とは、プール運営者がご自身のプールに対して保持を宣言するADA量です。
- 支払い用アドレス(
payment.addr)の残高は、Pledge額よりも大きい必要があります。 - 設定した誓約数より
payment.addrに入金されているADAが下回っている場合、プール報酬が0になります。 - 誓約金はロックされません。いつでも自由に取り出せますが、プール登録証明書を再提出する必要があります。
下記はサンプルです。実行前に、ご自身のプール設定へ置き換えてから実行してください。
実行前に変更する値
--pool-pledge:誓約額--pool-cost:固定手数料--pool-margin:変動手数料***.***.***.***:リレー1、リレー2のパブリックIPアドレスhttps://xxx.github.io/xxx/poolMetaData.json:ご自身のメタデータURL
cd $NODE_HOME
cardano-cli latest stake-pool registration-certificate \
--cold-verification-key-file $HOME/cold-keys/node.vkey \
--vrf-verification-key-file vrf.vkey \
--pool-pledge 100000000 \
--pool-cost 170000000 \
--pool-margin 0.05 \
--pool-reward-account-verification-key-file stake.vkey \
--pool-owner-stake-verification-key-file stake.vkey \
$NODE_NETWORK \
--pool-relay-ipv4 ***.***.***.*** \
--pool-relay-port 6000 \
--pool-relay-ipv4 ***.***.***.*** \
--pool-relay-port 6000 \
--metadata-url https://xxx.github.io/xxx/poolMetaData.json \
--metadata-hash $(cat poolMetaDataHash.txt) \
--out-file pool.certご自身のステークプールに委任する証明書(deleg.cert)を作成します。
cardano-cli latest stake-address stake-delegation-certificate \
--stake-verification-key-file stake.vkey \
--cold-verification-key-file $HOME/cold-keys/node.vkey \
--out-file deleg.certファイル転送
エアギャップのpool.certとdeleg.certをBPのcnodeディレクトリにコピーしてください。
3. プール登録トランザクションの送信
最新のスロット番号を取得します。
cd $NODE_HOME
currentSlot=$(cardano-cli latest query tip $NODE_NETWORK | jq -r '.slot')
echo Current Slot: $currentSlotpayment.addrの残高を出力します。
cardano-cli latest query utxo \
--address $(cat payment.addr) \
$NODE_NETWORK \
--output-text \
--out-file fullUtxo.out
tail -n +3 fullUtxo.out | sort -k3 -nr > balance.out
cat balance.outUTXOを算出します。
tx_in=""
total_balance=0
while read -r utxo; do
in_addr=$(awk '{ print $1 }' <<< "${utxo}")
idx=$(awk '{ print $2 }' <<< "${utxo}")
utxo_balance=$(awk '{ print $3 }' <<< "${utxo}")
total_balance=$((${total_balance}+${utxo_balance}))
echo TxHash: ${in_addr}#${idx}
echo ADA: ${utxo_balance}
tx_in="${tx_in} --tx-in ${in_addr}#${idx}"
done < balance.out
txcnt=$(cat balance.out | wc -l)
echo Total ADA balance: ${total_balance}
echo Number of UTXOs: ${txcnt}poolDepositを出力します。
poolDeposit=$(cat $NODE_HOME/params.json | jq -r '.stakePoolDeposit')
echo poolDeposit: $poolDepositトランザクション仮ファイルを作成します。
cardano-cli latest transaction build-raw \
${tx_in} \
--tx-out $(cat payment.addr)+$(( ${total_balance} - ${poolDeposit})) \
--invalid-hereafter $(( ${currentSlot} + 10000)) \
--fee 200000 \
--certificate-file pool.cert \
--certificate-file deleg.cert \
--out-file tx.tmp最低手数料を計算します。
fee=$(cardano-cli latest transaction calculate-min-fee \
--tx-body-file tx.tmp \
--witness-count 3 \
--output-text \
--protocol-params-file params.json | awk '{ print $1 }')
echo fee: $fee計算結果を出力します。
txOut=$((${total_balance}-${poolDeposit}-${fee}))
echo txOut: ${txOut}トランザクションファイルを作成します。
cardano-cli latest transaction build-raw \
${tx_in} \
--tx-out $(cat payment.addr)+${txOut} \
--invalid-hereafter $(( ${currentSlot} + 10000)) \
--fee ${fee} \
--certificate-file pool.cert \
--certificate-file deleg.cert \
--out-file tx.rawファイル転送
BPのtx.rawをエアギャップのcnodeディレクトリにコピーします。
トランザクションに署名します。
cd $NODE_HOME
cardano-cli latest transaction sign \
--tx-body-file tx.raw \
--signing-key-file payment.skey \
--signing-key-file $HOME/cold-keys/node.skey \
--signing-key-file stake.skey \
$NODE_NETWORK \
--out-file tx.signedファイル転送
エアギャップのtx.signedをBPのcnodeディレクトリにコピーします。
トランザクションを送信します
cardano-cli latest transaction submit \
--tx-file tx.signed \
$NODE_NETWORKTransaction successfully submittedと表示されれば成功
4. プール登録確認
ステークプールIDは以下のように出力できます。
chmod u+rwx $HOME/cold-keys
cardano-cli latest stake-pool id --cold-verification-key-file $HOME/cold-keys/node.vkey --output-format bech32 --out-file pool.id-bech32
cardano-cli latest stake-pool id --cold-verification-key-file $HOME/cold-keys/node.vkey --output-format hex --out-file pool.id
chmod a-rwx $HOME/cold-keysファイル転送
エアギャップのpool.id-bech32とpool.idをBPのcnodeディレクトリにコピーします。
以下のコマンドを実行し、プール情報が表示されればブロックチェーンに登録されています。
curl -s -X POST "https://api.koios.rest/api/v1/pool_info" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"_pool_bech32_ids":["'$(cat $NODE_HOME/pool.id-bech32)'"]}' | jq .ご自身のステークプールがCardanoscanに登録されているか確認します。
cd $NODE_HOME
cat pool.id-bech32;echo表示されたPool IDでご自身のステークプールがブロックチェーンに登録されているか、次のサイトで確認できます。
Cardanoscan
Last updated on