Difference between staked payment address and simple un-staked payment address?

I have seen people creating the receive address in 2 different ways. Both are derived from payment public key. However one is additionally derived from stake public key as well (i.e., staked payment address), while the other does not (i.e., the simple payment un-staked address). See the exact commands used to generate them below.

Can someone explain the difference between them? Specifically I have seen people use the staked payment address to pay for pool deposit and perform pool registration. Is staked payment address required for this use case? And is this the only difference between these two kinds of addresses?

I have done some simple experiments and verified either kind of addresses can receive and send ADA. But I have not done some advanced experiments such as registering pool, etc

Also note staked payment address is longer than un-staked simple payment address.

Thanks!

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

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

cardano-cli stake-address build \
    --stake-verification-key-file stake.vkey \
    --out-file stake.addr \
    ${NETWORK_MAGIC}

cardano-cli address build \
    --payment-verification-key-file payment.vkey \
    --stake-verification-key-file stake.vkey \
    --out-file staked-payment.addr \
    ${NETWORK_MAGIC}

cardano-cli address build \
    --payment-verification-key-file payment.vkey \
    --out-file simple-payment.addr \
    ${NETWORK_MAGIC}

$ cat simple-payment.addr 
addr_test1vpmsd7q52h4xp4kate7ff8ugrx4r06llr9kmlwxk5et42jcy6sky0

$ cat staked-payment.addr 
addr_test1qpmsd7q52h4xp4kate7ff8ugrx4r06llr9kmlwxk5et42j67amfq8nasxv0rnx37c7g285mv3uwpzuttt3lxv8gfr5wqdz49uc

The staked address is … well … staked. Funds on that address contribute to the stake for the included stake key. This is, of course, only relevant if that stake key is registered and delegated to a stake pool. So, you would want to do that also.

On the other hand, the simple, enterprise address is shorter, easier to handle, but funds on it do not earn rewards, could be considered “wasted” from a staking point of view.

1 Like

Thanks. that is fascinating to know. So can we deduce that

  • partial staking - some fund are staked and some are not
  • multiple staking - create multiple stake addresses, and derive different staked addresses from them, which will allow some fund staked to one pool while others are staked to other pools.

Also, I have been using the staked address for pool related transactions (as illustrated by many pool tutorials). It now looks like it is not necessary. True?

I imagine a simple, un-staked address might give better privacy, since it is not associated with a stake address. Welcome any thoughts on this.

Yes, that is possible. The wallet apps do not really support much of it. If Eternl is not in single address mode, it also shows you the undelegated addresses in the receive address tab. You can use them to have what you call partial staking, for example to gain a little more privacy. Analysing the flow of ADA is still possible, though, so there are still limits to the privacy obtained by it. Using multiple stake addresses is not supported by any wallet app, as far as I know. But nearly the same effect can, of course, be obtained by multiple wallets or multiple accounts within one wallet.

When you do not use wallet apps, but create your keys with cardano-cli, you can combine payment and stake keys at will to generate your addresses.

If you keep a lot of ADA on your address used for stake pool transactions, it makes sense, I think, to delegate it to the pool together with the stake address that receives the pool’s rewards, so that you use as much stake as possible. But it is not necessary, no.

If the address can be seen paying for the pool certificate registrations, it is still associated to the pool and the privacy gain is not that great. To really get some sort of privacy, you’d have to manage a collection of unstaked addresses and have the ones you do not want to be associated to you funded independently from a different exchange or through (series of) transactions that believably could also be payments to strangers.

Unstaked Cardano addresses are a lot like Bitcoin addresses and there is, I believe, quite a lot of work on (de-)anonymising them.

1 Like