You may have seen the term Hierarchical Determinism in the description of a cryptocurrency wallet, or that a cryptocurrency wallet is a Hierarchical Deterministic (HD) wallet. You then skipped over that to see what coins and tokens were supported, what the user interface look like, and such.
In simple terms, a Hierarchical Deterministic (HD) wallet can create public and private keys from a single master key, in a tree format. For background, a cryptocurrency wallet stores public-private key pairs, not coin balances. Also, a Bitcoin (BTC) best practice is to create a new public key (address) for each new transaction.
A non-deterministic wallet would store a list of randomly generated public-private key pairs and would need to be backed up every time a new pair is generated. With a new pair created for a new transaction, this type of wallet would soon be unwieldy, and, if lost, access to coins associated with that key pair would be lost.
A deterministic wallet generates all public-private key pairs from a single master key, created from a random seed, the private mnemonic seed phrase of 12 or 24 words. With the master key, child keys are created and all these child keys can be recovered with the master key. The master key or seed phrase is all that is needed to be backed up.
A deterministic wallet becomes a Hierarchical Deterministic (HD) wallet when child keys can produce their own child keys, and those child keys can produce grandchildren keys, and so on. This creates a tree-like structure of keys, which has several advantages:
- Only the master key needs to be backed up, usually at wallet creation
- Tree structure allows transactions to be organized, so generating a new public key (address) for each new transaction is more useful
- If one tree is compromised, it doesn't affect trees not on its branch
- Exact wallet balance is spread over several public keys (addresses)
- Allows users to receive funds directly into a cold wallet without having to keep their private keys online
Now that you have some idea of what a HD wallet is, you might be asking yourself, how does a HD wallet help me?
For starters, you need to create a new address (the public key) for each new transaction, or at least each new entity sending you cryptocurrency. Many wallets let you add a label to an address, letting you track who you gave that address to. I was guilty of not using new addresses until I realized the following: ANYONE can see your crypto balance using your address (public key).
That bears repeating in bold caps:
ANYONE CAN SEE YOUR CRYPTO BALANCE USING YOUR ADDRESS
I don't know about you, but I don't post my bank statements on social media. Using the same address for all transactions is essentially the same thing. Your balance is visible to anyone with your public address.
There are many good reasons to keep your wallet balance private. If you run a business, you don't want your competitors to know how much you have. If you are bidding on something, you don't want others to have an idea of your maximum bid. A large wallet balance may make you a target for hackers, thieves, kidnappers, blackmailers, etc.
It's not just bad guys who may target you if it is known that you have a large wallet balance. The large balance may be used against you in some legal proceedings. Even family and friends may treat you differently if they know you have a lot of cryptocurrency.
You may need to change your settings in your wallet to generate new addresses. I found that this is the case for the Exodus wallet, but it only required a simple switch in Advanced Setting to enable multiple addresses. Now it will generate a new address once the old address receives funds.
Tracking your addresses, if your wallet doesn't do that for you, is simple: Create a text file or spreadsheet and enter the addresses, along with a labels for the source and wallet, if using multiple wallets. Back this file up often. Refer to it if you need an old address.
Of course, this is not financial advice. Do Your Own Research (DYOR). Let's be safe out there.