メインコンテンツまでスキップ

ステークプール報酬の請求

備考

報酬はstake.addrアドレスに蓄積されます。

概要
  1. stake.addr代表者に委任されていること。
  2. 1トランザクションで引き出せる報酬は全額のみ。
  3. トランザクション手数料は、payment.addrのUTxOから支払われます。
  4. 報酬引き出しトランザクションでは、payment.skeystake.skeyの2署名が必須です。
注意事項
  • 入力ミスなどの失敗については自己責任ですのでよく確認して実施してください。

任意のアドレス宛に送金する場合

ステーク報酬残高を取得

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ディレクトリにコピーします。

署名されたトランザクションを送信します。

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....