Understanding stake keys - setting up new stake pool

Hello community, my first post and on the way to becoming a stake pool operator.

I am a little confused about the purpose and use behind payment keys and address and stake keys and addresses.

The process :

  1. Create payment keys, this creates a payment address
  2. Create stake keys, this creates a stake address which is like a reward address that cannot receive funds other than rewards from a stake pool
  3. Create another payment address which is a combination of the payment signing key listed in (1) and the stake signing key listed in (2).

When I looked at the documentation for withdrawing rewards it noted to use the payment address (1) as the recipient for rewards. This leads me to ask what exactly is the function of the payment address listed in (3). Is there any detailed documentation on the function of each of the 3 addresses used for stake delegation?

Another question I have is about protecting the signing keys generated above. While there is quite a bit of caution advised when dealing with stake pool keys (use cold storage etc), there is little caution about protecting the signing keys generated above. Can you also advise what precautions we should take with these keys?

  1. When you address build just your payment.vkey that is your “Enterprise address”/“Internal address” and does not appear on https://cardanoscan.io/
  2. When you stake-address build just your stake.vkey that is your rewards address and appears on https://cardanoscan.io/
  3. When you address build your payment.vkey and stake.vkey it creates a relationship that also appears on https://cardanoscan.io/ that is your “Base address” - The beauty of this relationship is you can have many payment.vkey keys tied to a single stake.vkey eg: Addresses - Cardanoscan and thus many Base addresses.

It is very important you protect:
Wallet’s payment.skey and stake.skey
Pool’s cold.vkey and cold.skey

Those 4 keys are all you need to protect which will deny any attacker the ability to sign transactions and generate certificates.

Hi, thanks for your reply. It does help clarify things a little.

Instead of creating a payment key in cardano-cli would it be possible to use a hardware wallet like Ledger as the payment key?

Do you normally transfer rewards from your rewards address to your ‘enterprise address’ or your ‘base address’? If you transfer it to your base address do you create a new address every time you transfer rewards?

Absolutely, you can use cardano-hw-cli/poolRegistration.md at develop · vacuumlabs/cardano-hw-cli · GitHub or you can extract the keys, whichever suits you best.

My pool, 0PC, doesn’t have enough stake to earn rewards yet so I’m not 100% sure… But based on the documentation I updated you specify a --tx-out so, in theory, you should be able to specify more than one --tx-out, one for receiving change from the transaction fee --tx-in and the other for receiving the rewards. You will always transfer rewards to a “base address” and you can choose to use the same address or different addresses, it’s really up to you :slight_smile:

1 Like

thanks heaps 0PC and good luck with your stake pool. I see that it’s quite new so no doubt you’ll be earning rewards soon.

Thank you @demetrio. While it is hard to find delegates, I am really enjoying the process. :crossed_fingers: 0PC attracts more delegates and produces blocks in the future! :D!