ステークプール報酬の請求
備考
報酬はstake.addrアドレスに蓄積されます。
概要
stake.addrが代表者に委任されていること。- 1トランザクションで引き出せる報酬は全額のみ。
- トランザクション手数料は、
payment.addrのUTxOから支払われます。 - 報酬引き出しトランザクションでは、
payment.skeyとstake.skeyの2署名が必須です。
注意事項
- 入力ミスなどの失敗については自己責任ですのでよく確認して実施してください。
任意のアドレス宛に送金する場合
- BP
ステーク報酬残高を取得
cd $NODE_HOME
reward_balance=$(cardano-cli latest query stake-address-info \
${NODE_NETWORK} \
--address "$(cat stake.addr)" \
| jq -r '.[0].rewardAccountBalance')
echo "reward_balance (lovelace): ${reward_balance}"
echo "reward_balance (ADA): $(printf "%.6f" "$(echo "${reward_balance} / 1000000" | bc -l)")"
1 ADA = 1,000,000 lovelace
手数料支払い用UTxOを1つ選択
tx_in=$(
cardano-cli latest query utxo \
--address "$(cat payment.addr)" \
${NODE_NETWORK} \
--output-json \
| jq -r '
to_entries
| map(
select((.value.referenceScript // null) == null)
| select((.value.datum // null) == null)
| select((.value.inlineDatum // null) == null)
| select((.value.inlineDatumRaw // null) == null)
| select((.value.datumhash // null) == null)
)
| sort_by(.value.value.lovelace) | reverse
| if length > 0 then .[0].key else empty end
'
)
if [ -z "${tx_in}" ]; then
echo "WARNING: 使用可能なUTxOが見つかりません(datum / referenceScript なし)。"
echo "このままでは build に失敗するため、payment.addr のUTxOを確認してください。"
else
echo "tx_in: ${tx_in}"
fi
変数に送金先アドレスを入力してください。
destination_address=
if [ -z "${destination_address}" ]; then
echo "WARNING: destination_address が未設定です。変数に送金先アドレスを代入してください。"
elif ! echo "${destination_address}" | grep -Eq '^(addr1|addr_test1)[0-9a-z]+$'; then
echo "WARNING: destination_address の形式が不正です。"
else
echo "destination_address: ${destination_address}"
fi
トランザクションをビルドします。
cardano-cli latest transaction build \
${NODE_NETWORK} \
--tx-in "${tx_in}" \
--tx-out "${destination_address}+${reward_balance}" \
--withdrawal "$(cat stake.addr)+${reward_balance}" \
--change-address "$(cat payment.addr)" \
--witness-override 2 \
--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 stake.skey \
${NODE_NETWORK} \
--out-file tx.signed
ファイル転送
エアギャッ プのtx.signedをBPのcnodeディレクトリにコピーします。
- BP
署名されたトランザクションを送信します。
cardano-cli latest transaction submit \
--tx-file tx.signed \
${NODE_NETWORK}
資金が到着したかどうかを確認します。
cardano-cli latest query utxo \
--address "${destination_address}" \
${NODE_NETWORK}
更新されたLovelace残高と報酬を示す次 のような出力が表示されます。
TxHash TxIx Lovelace
----------------------------------------------------------------------------------------
100322a39d02c2ead....