Bitcoin Wallets.
In this article, we learn about the major categories of Bitcoin wallets. These are deterministic, non-deterministic and HD wallets.
In blockchain technology, wallets are applications or hardware used as an interface to a blockchain network. They are mainly used in initiating transactions, managing keys and addresses, and controlling access to funds on the blockchain. Note that, wallets don't store wealth, they store keys that can be used to access that stored wealth. This wealth is stored in form of transaction outputs(vout/txout) on a distributed database. For a user to be able to transact, he/she must prove that they own the transaction outputs, in this case, the coins he/she intends to send.
In this article, we learn about the different major types of bitcoin wallets in relation to the management of private keys and how the keys contained in the wallet relate to each other.
Random Wallets - Non-derterminstic.
In this type of wallet, each key is generated from a random number independently, meaning the keys will not be related to each other because of the randomization. This means we need to backup all the previously generated keys and if we make a mistake and lose one, the funds associated with the key are also lost.
These wallets allow for address reuse which is not good for anyone who wishes to maintain anonymity since transactions can be linked to a single source address.
These types of wallets due to the sheer amount of keys generated are difficult to manage, backup, export, and migrate. A deterministic wallet solves these issues by the use of a single easily manageable seed.
The following is a demonstration of a non-deterministic wallet;
Seeded Wallets - Deterministic.
In these types of wallets, all keys are derivatives of a single master key referred to as the seed using hashing functions. This means that if the seed is one, then all keys will be related to each other. The seed is used to generate new keys for every transaction, this allows users to stay anonymous. A seed consists of a random number that is combined with other data such as the chain code or index number. Since the seed is one, in these cases we would just need to back up the seed. This allows easier migration of keys between wallets, wallet exportation, and importation. In deterministic wallets hierarchical determinism is used to derive keys from the master key. This result in deterministic wallets being referred to as HD wallets.
The following is a demonstration of a deterministic wallet;
HD Wallets.
As we learned from the previous two sections, deterministic wallets solve the issue of addressing the reuse and management of multiple keys by using a single seed as the source for all generated keys. HD wallets make it even easier to derive multiple keys from a single seed. Just like its predecessor it uses hierarchical determinism whereby the parent key is used to derive a sequence of children's keys, that in turn are used to generate grandchildren keys, each grandchild can also generate a great-grandchild, this continues infinitely as we go down the tree.
The following is a logical demonstration of HD Wallets;
These wallets provide room to implement additional logic, in that we can specify a branch to receive sent funds and another to receive change from transactions. We can also go further and use this structure in an organizational setting whereby different departments operate using different branches of the tree.
HD wallets also allow users to create a sequence of public keys without needing a corresponding private key. We can use this to our advantage for example, in a case where we only want a wallet to only receive funds or use it in an unsafe manner, for example using an unsecured server. In this case for each transaction, a different public key will be sued which makes it hard for hackers to reverse or corrupt a transaction.
We can extend the power of HD wallets by standardizing the way we create seeds. In this case, we want to generate seeds from a sequence of =english words that can be easily transcribed, imported, or exported across different wallet addresses. This standardization involves the use of mnemonics.
The following is a demonstration of why mnemonics are easier to transcribe, record, read, write, import, and export to different wallet addresses.
Summary
A Bitcoin wallet holds keys rather than actual monies. The wallet is just an interface to the blockchain that holds data that states that X amount of coins belong to a specific wallet address that holds specific keys that can unlock the funds. In Bitcoin, we have three major types of wallets, deterministic, non-deterministic, and HD wallets. HD wallets make it even easier to derive multiple keys from a single source seed. We extend the power of HD wallets by standardizing the way seeds are created.
References
Mastering Bitcoin(Chapter 5) - Andreas M. Antonopoulos