Registering Your Stake Address - solidsnakedev/cardano_commands GitHub Wiki

NODE_HOME=...
POOL_KEYS=${NODE_HOME}/pool-keys
DATA=${POOL_KEYS}/data
currentSlot=$(cardano-cli query tip --mainnet | jq -r '.slot')
echo Current Slot: $currentSlot
cardano-cli query utxo \
    --address $(cat ${POOL_KEYS}/payment.addr) \
    --mainnet > ${DATA}/fullUtxo.out

tail -n +3 ${DATA}/fullUtxo.out | sort -k3 -nr > ${DATA}/balance.out

cat ${DATA}/balance.out

tx_in=""
total_balance=0
while read -r utxo; do
    type=$(awk '{ print $6 }' <<< "${utxo}")
    if [ ${type} == 'TxOutDatumNone' ](/solidsnakedev/cardano_commands/wiki/-${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 < ${DATA}/balance.out
txcnt=$(cat ${DATA}/balance.out | wc -l)
echo Total available ADA balance: ${total_balance}
echo Number of UTXOs: ${txcnt}
cardano-cli query protocol-parameters \
  --mainnet \
  --out-file ${DATA}/protocol.json
stakeAddressDeposit=$(cat ${DATA}/protocol.json | jq -r '.stakeAddressDeposit')
echo stakeAddressDeposit : $stakeAddressDeposit
cardano-cli transaction build-raw \
    ${tx_in} \
    --tx-out $(cat ${POOL_KEYS}/payment.addr)+0 \
    --invalid-hereafter $(( ${currentSlot} + 10000)) \
    --fee 0 \
    --out-file ${DATA}/tx.tmp \
    --certificate ${POOL_KEYS}/stake.cert
fee=$(cardano-cli transaction calculate-min-fee \
    --tx-body-file ${DATA}/tx.tmp \
    --tx-in-count ${txcnt} \
    --tx-out-count 1 \
    --mainnet \
    --witness-count 2 \
    --byron-witness-count 0 \
    --protocol-params-file ${DATA}/protocol.json | awk '{ print $1 }')
echo fee: $fee
fee=$((fee + 100000))
echo fee: $fee
txOut=$((${total_balance}-${stakeAddressDeposit}-${fee}))
echo Change Output: ${txOut}
cardano-cli transaction build-raw \
    ${tx_in} \
    --tx-out $(cat ${POOL_KEYS}/payment.addr)+${txOut} \
    --invalid-hereafter $(( ${currentSlot} + 10000)) \
    --fee ${fee} \
    --certificate-file ${POOL_KEYS}/stake.cert \
    --out-file ${DATA}/tx.raw

Air gapped

cardano-cli transaction sign \
    --tx-body-file tx.raw \
    --signing-key-file payment.skey \
    --signing-key-file stake.skey \
    --mainnet \
    --out-file tx.signed

BP

cardano-cli transaction submit \
    --tx-file ${DATA}/tx.signed \
    --mainnet