I have read online that hardware wallets can generate new public keys to facilitate transactions. Ie if someone has BTC on an exchange and they want to send that BTC in different installments to a single private key/hardware wallet, that hardware wallet can generate a different public key for each transaction. I'm a bit confused on how this works? Would the ledger not indicate that each of those installments now belongs to a different address? Or is it simply that each time a new public key is generated, the private key in the hardware wallet has the ability to sign for all of those? (Thus creating a persistent, growing list of public keys associated with one private key?).

Additionally, what is displayed on the ledger if that hardware wallet, after multiple installments with different public keys, now wants to send BTC elsewhere? Which of the previous public keys is used? Does it create a new one? Wouldn't this show up on the ledger as a public key sending more BTC than it ever acquired?


The answer is in Hierarchical Deterministic (HD) wallets. These create a tree-like repeatable sequence of key pairs (private and public) from a master private key.

Each public key is associated with one private key.

See BIP-32

Standard ways of spending Bitcoin involve reference to an output of a previous transaction and hence to a previously used public key. It typically needs the corresponding private key to be used to generate a number that will satisfy the spending script.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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