Stake Pool Operator Rewards

Hi All,

I’m in the process of building a staking pool with some friends and we would like to split the operator rewards evenly. Do we simply register multiple stake keys with the node?

I’m failing to understand the utility of each key and how we should all set it up.

1 Like

The operator rewards go to a single stake key, the one that you register here …

--pool-reward-account-verification-key-file /var/cardano/local/keys/spo/stake.vkey

you can then have a list of owners (including the above stake key) like this …

  --pool-reward-account-verification-key-file /var/cardano/local/keys/spo/stake.vkey \
  --pool-owner-stake-verification-key-file /var/cardano/local/keys/spo/stake.vkey \
  --pool-owner-stake-verification-key-file /var/cardano/local/keys/hww/stake.vkey \

To sign the Tx you will need to have the stake.skey from all the owners. This may be problematic because it also gives you access to the delegator rewards of all the owners. A better solution is to have every owner witness the Tx independently.

# Operator witness - Signed by pool operator (payer of pool deposit and fees)
cardano-cli transaction witness \
  --mainnet \
  --tx-body-file /var/cardano/local/scratch/tx.raw \
  --signing-key-file /var/cardano/local/keys/fees/payment.skey \
  --out-file /var/cardano/local/scratch/operator.witness

# Pool witness - signed by pool's cold key.
cardano-cli transaction witness \
  --mainnet \
  --tx-body-file /var/cardano/local/scratch/tx.raw \
  --signing-key-file /var/cardano/local/keys/pool/cold.skey \
  --out-file /var/cardano/local/scratch/pool.witness

# Owner witness - signed by owners's stake key.
cardano-cli transaction witness \
  --mainnet \
  --tx-body-file /var/cardano/local/scratch/tx.raw \
  --signing-key-file /var/cardano/local/keys/spo/stake.skey \
  --out-file /var/cardano/local/scratch/spo.witness

# Owner witness - One or multiple hardware wallet pool owners
cardano-hw-cli transaction witness \
  --mainnet \
  --tx-body-file ~/cardano/scratch/tx.raw \
  --hw-signing-file ~/cardano/keys/hww/stake.hwsfile \
  --out-file ~/cardano/scratch/hww.witness

and then …

cardano-cli transaction assemble \
  --tx-body-file /var/cardano/local/scratch/tx.raw \
  --witness-file /var/cardano/local/scratch/operator.witness \
  --witness-file /var/cardano/local/scratch/pool.witness \
  --witness-file /var/cardano/local/scratch/spo.witness \
  --witness-file /var/cardano/local/scratch/hww.witness \
  --out-file /var/cardano/local/scratch/tx.signed

Notice how the last witness uses a hardware wallet (i.e. Ledger)

In any case, whoever is registered with --pool-reward-account-verification-key-file will have to distribute the pool rewards manually.

2 Likes

Thanks that’s really useful!

1 Like