Deterministic Wallets
Understanding Bitcoin Deterministic Wallets
One of the tenets of Bitcoin privacy is to never reuse the same address. To do so, one would have to create separate, independent key pairs (private/public) for every transaction.
Deterministic wallets are providing a consistent, replicable way of creating child keys starting from a root seed.
There are 2 common deterministic wallet implementations: sequential deterministic (SD) and hierarchical deterministic (HD).
While the SD wallets are conceptually simpler, they have a major limitation: to derive their public addresses, you need access to the root seed. This becomes a security vulnerability when SD wallets are used in internet connected devices.
As we will see further in this article, HD wallets overcome this limitation, making them ideal for use in read-only wallets connected to the internet. For this reason, most modern wallet implementations are using the HD wallet approach, as described in BIP32.
Sequential Deterministic Wallets
An SD wallet derives it's child keys by incrementing the root seed and hashing the result like below.
Hierarchical Deterministic Wallets
As the name implies, HD wallets are creating a hierarchy of child keys.
BIP32 includes the diagram below illustrating how the hierarchy of keys and addresses are derived.

In short, a child key can be derived by using:
- A parent key (public or private)
- A seed called chain code
- An index number
The interesting thing here is that public child keys can be derived from public parent keys, without the need to access the private key.
A good description of this process can be found in the Mastering Bitcoin book.

Thanks to this feature, cold wallets can "linked" to a hot wallet via an "export wallet file", that contains the extended public key (XPUB) and other info required by the hot wallet in order to derive child addresses.
It also allows for sign-only airgapped (cold) wallets, where transactions can be signed without the private key(s) ever leaving the cold wallet.
One practical example using ColdCard and Sparrow Wallet can be found in the ColdCard Documentation article.