Registration certificate
The transaction for submitting the new stake pool registration certificate needs to be signed with 4 signing keys:
the cold key
the payment key (to pay the transaction fees)
the first stake pool owner stake key
the hardware wallet stake key (the new pool owner)
When not using a hardware wallet, the transaction to submit a stake pool registration certificate can be signed with one command. But because of the way the hardware wallet can sign transactions, the transaction must be witnessed by every signing key, and then all the witness files must be combined into a signed transaction file, which will be submitted to the blockchain.
Create and execute the following scripts in a subfolder of transactions
(for example pool-update
):
transaction.sh
:
#!/bin/bash
source ../../pool-scripts/env
ADDRESS=$(cat ${NODE_HOME}/keys/payment-0.addr)
TRANS=$(cardano-cli query utxo ${NET} --address $ADDRESS | tail -n +3 | sort -k3rn | tail -n 1)
UTXO=$(echo ${TRANS} | awk '{print $1}')
ID=$(echo ${TRANS} | awk '{print $2}')
TXIN="${UTXO}#${ID}"
cardano-cli transaction build \
${NET} \
--cddl-format \
--witness-override 4 \
--tx-in ${TXIN} \
--change-address $(cat ${NODE_HOME}/keys/payment-0.addr) \
--certificate-file ${NODE_HOME}/pool-certificates/pool-registration.cert \
--out-file tx.raw
witness-cold.sh
:
#!/bin/bash
source ../../pool-scripts/env
cardano-cli transaction witness \
--tx-body-file tx.raw \
--signing-key-file ${NODE_HOME}/pool-keys/cold.skey \
${NET} \
--out-file tx-cold.witness
witness-payment.sh
:
#!/bin/bash
source ../../pool-scripts/env
cardano-cli transaction witness \
--tx-body-file tx.raw \
--signing-key-file ${NODE_HOME}/keys/payment-0.skey \
${NET} \
--out-file tx-payment.witness
witness-stake.sh:
#!/bin/bash
source ../../pool-scripts/env
cardano-cli transaction witness \
--tx-body-file tx.raw \
--signing-key-file ${NODE_HOME}/keys/stake.skey \
${NET} \
--out-file tx-stake.witness
witness-hw-stake
(when executing this script, the witness must be confirmed on the hardware wallet):
#!/bin/bash
source ../../pool-scripts/env
cardano-hw-cli transaction witness \
--tx-file tx.raw \
--hw-signing-file ${NODE_HOME}/keys/hw-stake.hwsfile \
${NET} \
--out-file tx-hw-stake.witness
transaction-assemble.sh
:
#!/bin/bash
cardano-cli transaction assemble \
--tx-body-file tx.raw \
--witness-file tx-cold.witness \
--witness-file tx-payment.witness \
--witness-file tx-stake.witness \
--witness-file tx-hw-stake.witness \
--out-file tx.multisign
The transaction-assemble.sh
will create the signed transaction file, which needs to be submitted to the blockchain with the following script (submit-sh
):
#!/bin/bash
source ../../pool-scripts/env
cardano-cli transaction submit \
--tx-file tx.multisign \
${NET}
Last updated