Before funding the payment address on my staking pool, I would like to make sure that the funds can be retrieved by me, as the process of air gapping to create these series of keys and addresses introduces many opportunities for human error.

Would you please let me know if I can use cardano-cli or some other method to ensure the funds won't be lost once sending?

As a sanity-check, I sent a 1 ADA transaction back to my funding source to ensure things were okay. But I would still like a simpler way of checking that my keys are all in line.

1 Answer 1


To make a long story short, in Cardano's environment, you will need 2 sets of keys. One set to control your funds (send and receive $ADA and tokens) and one other set to control your staking activities (to participate in the protocol delegating your ADA to a stake pool or to earn rewards by operating your own stake pool).

These 2 set of keys will allow you to generate a payment address or a stake address or both meaning a payment address with "staking capacity".

As long as you keep these 2 sets of keys (payment keys and stake keys) in a safe and secured place, it's OK you will be able to have access to your funds.

It is recommended to generate these 2 sets of keys on an offline machine to minimize the risk of hack.

Generate your payment keys pair (payment.skey and payment.vkey):

cardano-cli address key-gen \
--verification-key-file payment.vkey \
--signing-key-file payment.skey

Generate your stake keys pair (stake.skey and stake.vkey):

cardano-cli stake-address key-gen \
--verification-key-file stake.vkey \
--signing-key-file stake.skey

Now for your stake pool, you will need a "payment address with stake capacity" so first we will generate a stake address and then a payment address that can delegate to the stake address.

Generate your stake address from the stake address verification key and store it in stake.addr

cardano-cli stake-address build \
--stake-verification-key-file stake.vkey \
--out-file stake.addr \

Finally, create this "payment address with stake capacity"

cardano-cli address build \
--payment-verification-key-file payment.vkey \
--stake-verification-key-file stake.vkey \
--out-file payment.addr \

That's it, now you can do whatever you want with these addresses as long as you keep your 2 sets of keys safe just for you... (especially the payment keys)

However, if you are too stressed, you can send 1 ADA to this address and then send it back with a simple transaction to make sure you have mastered the process.

You can follow this tutorial to understand how to forge and sign a simple transaction by following the instructions in this official video.

Good luck.

  • 1
    I actually made a typo and worried that i overwrote a private key for the payment address, after I had already staked everything. Some times human error is all it takes, fortunately there are snapshots. Sep 18, 2021 at 13:40
  • 1
    This was a very good explanation, thank you! Sep 18, 2021 at 13:53
  • If you overwrote by mistake your private key, well... you shouldn't have done it. It is impossible for the signing key (payment.skey) to be deduced, extracted or reverse engineered from the payment.addr. it's a kind of mathematical function that only goes in a single direction. Just make sure that pairing between the payment address and its corresponding payment key is strict.
    – baocontact
    Sep 18, 2021 at 17:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.