📓
Stake Pool Scripts by APEX Stake Pool
  • Stake pool registration
    • Directory structure
    • Wallet
    • Metadata
    • Configuration file
    • Stake pool scripts
      • Cold key
      • VRF key
      • KES key
      • Operational certificate
      • Registration certificate
      • Stake key registration
      • Stake key delegation
    • Transaction
      • Using a remote node
      • Transaction scripts
    • Retiring the stake pool
  • Hardware wallet for Pledge
    • Stake key
    • Registration certificate
    • Stake key registration
    • Stake key delegation
    • Transactions
      • Registration certificate
      • Delegation certificate
  • Running a cardano node
    • Starting a relay node
    • Starting a block producing node
Powered by GitBook
On this page
  1. Hardware wallet for Pledge
  2. Transactions

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}

PreviousTransactionsNextDelegation certificate

Last updated 1 year ago