ステークプールの登録
プールメタデータの作成
プールメタデータの作成方法
メタデータは メインネットで使用しているものを流用可能です。
プールメタデータの登録準備
メターデータのダウンロード
- BPノード
プールメタデータJSONのURLを入力してコマンドをコピーしてください
cd $NODE_HOME
wget https://example.com/poolMetaData.json -O poolMetaData.json
メタデータの構文をチェック
- BPノード
cat $NODE_HOME/poolMetaData.json | jq .
メタデータのハッシュ値を算出
- BPノード
cd $NODE_HOME
cardano-cli conway stake-pool metadata-hash --pool-metadata-file poolMetaData.json > poolMetaDataHash.txt
プール登録証明書の作成
ファイル転送
BPノードの vrf.vkey と poolMetaDataHash.txt をエアギャップマシンの cnode ディレクトリにコピーします。
プール登録証明書を作成
- エアギャップマシン
各項目を入力してコマンドをコピーしてください
cd $NODE_HOME
cardano-cli conway 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 0.0.0.0 \
--pool-relay-port 6000 \
--metadata-url https://example.com/poolMetaData.json \
--metadata-hash $(cat poolMetaDataHash.txt) \
--out-file pool.cert
委任証明書を作成
- エアギャップマシン
cardano-cli conway 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 ディレクトリにコピーします
プール登録
プール登録トランザクションを送信します。
スロットを取得
- BPノード
cd $NODE_HOME
currentSlot=$(cardano-cli conway query tip $NODE_NETWORK | jq -r '.slot')
echo Current Slot: $currentSlot
payment.addrの残高を出力
- BPノード
cardano-cli conway 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.out
UTXO を算出
- BPノード
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}
デポジットを出力
- BPノード
poolDeposit=$(cat $NODE_HOME/params.json | jq -r '.stakePoolDeposit')
echo poolDeposit: $poolDeposit
トランザクション仮ファイルを作成
- BPノード
cardano-cli conway 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
最低手数料を計算
- BPノード
fee=$(cardano-cli conway 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
計算結果を出力
- BPノード
txOut=$((${total_balance}-${poolDeposit}-${fee}))
echo txOut: ${txOut}
トランザクションファイルを作成
- BPノード
cardano-cli conway 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 conway 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' ディレクトリにコピーします。
トランザクションを送信
- BPノード
cd $NODE_HOME
cardano-cli conway transaction submit \
--tx-file tx.signed \
$NODE_NETWORK
プール登録確認
ステークプールIDを出力
- エアギャップマシン
chmod u+rwx $HOME/cold-keys
cardano-cli conway stake-pool id --cold-verification-key-file $HOME/cold-keys/node.vkey --output-format bech32 --out-file pool.id-bech32
cardano-cli conway 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' ディレクトリにコピーします。
Koios APIで登録確認
- BPノード
curl -s -X POST "https://preview.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で登録確認
- BPノード