Claiming Stake Pool Rewards
Let's walk through an example to claim your stake pools rewards.
First, find the tip of the blockchain to set the invalid-hereafter parameter properly.
currentSlot=$(cardano-cli query tip --mainnet | jq -r '.slot')
echo Current Slot: $currentSlotSet the amount to send in lovelaces. ✨ Remember 1 ADA = 1,000,000 lovelaces.
rewardBalance=$(cardano-cli query stake-address-info \
--mainnet \
--address $(cat stake.addr) | jq -r ".[0].rewardAccountBalance")
echo rewardBalance: $rewardBalanceSet the destination address which is where you're moving your reward to. This address must have a positive balance to pay for transaction fees.
destinationAddress=$(cat payment.addr)
echo destinationAddress: $destinationAddressFind your payment.addr balance, utxos and build the withdrawal string.
cardano-cli query utxo \
--address $(cat payment.addr) \
--mainnet > fullUtxo.out
tail -n +3 fullUtxo.out | sort -k3 -nr > balance.out
cat balance.out
tx_in=""
total_balance=0
while read -r utxo; do
type=$(awk '{ print $6 }' <<< "${utxo}")
if [[ ${type} == 'TxOutDatumNone' ]]
then
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}"
fi
done < balance.out
txcnt=$(cat balance.out | wc -l)
echo Total available ADA balance: ${total_balance}
echo Number of UTXOs: ${txcnt}
withdrawalString="$(cat stake.addr)+${rewardBalance}"Run the build-raw transaction command.
Calculate the current minimum fee:
Calculate your change output.
Build your transaction.
Copy tx.raw to your cold environment.
Sign the transaction with both the payment and stake secret keys.
Copy tx.signed to your hot environment.
Send the signed transaction.
Check if the funds arrived.
You should see output similar to this showing your updated Lovelace balance with rewards.