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.
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.
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.