We will classify wallets in two directions: storage of private keys and generation of private keys.
Private key storage
We can classify wallets into “centralized wallets” and “decentralized wallets” based on how the private key is stored, i.e. whether the user holds the private key or not.
The storage method refers to the existence of which is called “decentralized” only if the private key is held by the user and imported into the wallet, and the private key is stored only on the user’s device.
If there is no private key, or if the private key is uploaded and stored in the service provider’s server, then it is “centralized” (e.g. exchange wallets).
Decentralized wallets can be divided into “cold wallets” and “hot wallets” based on whether the private key is in contact with the network during storage; here, contact with the network means whether the wallet is connected to the Internet, not whether the private key is transmitted in the network.
The common hot wallets are desktop wallets, mobile wallets and net wallets. Cold wallets are generally paper wallets and hardware wallets that are not networked or cannot be networked.
Types of wallets
Wallets can be classified as full-node wallets, light-node wallets, and centralized wallets based on the degree of decentralization of the wallet.
Full-node wallets synchronize all data on the blockchain to the wallet, which takes up a lot of storage space, so most full-node wallets are desktop wallets. The most representative of these are Bitcoin Core wallet, Geth, Parity, etc. Because full-node wallets need to sync all block data, they can be fully decentralized.
According to DApptotal data, as of September 2019: Ether’s full-node data size is 433GB, EOS’s is 430GB, and Bitcoin’s is 279GB
A light wallet is a wallet that relies on other full nodes in the blockchain network, such as a TP wallet that will run a full node, sync all data, and then divide the data based on different wallet addresses and distribute it on demand so that users can use the wallet both quickly and easily. Common mobile wallets and web wallets are light wallets.
Decentralized wallets are all data on the blockchain, while centralized wallets rely on the wallet service provider’s own ledger for their data. For example, our wallets on the exchange are centralized wallets. We transfer money to an address specified by the exchange, and then the exchange records our top-up records in its own ledger, and every time we make a top-up transfer thereafter, the exchange adds or subtracts directly to his ledger. And this whole process does not happen on the blockchain at all.
Private Key Generation
(This subsection is slightly overloaded)
From the generation of private keys, we can classify wallets into “non-deterministic wallet”, “deterministic wallet” and “layered deterministic wallet”, of which “layered deterministic wallet” is an enhanced version of “deterministic wallet”.
The private keys generated in a wallet have no relationship with each other and are independent of each other.
Private keys are generated by a “seed” algorithm, for example, a “helper word” is a form of seed. The private key generated in this way can be consistent as long as the algorithm is consistent; and one seed can generate unlimited private key addresses.
For better understanding, we can compare a “deterministic wallet” to a branch with different leaves in different positions on the branch.
But as long as you choose the same location, the leaves in that location will always be the same. The leaves here are the “private keys” we mentioned.
Hierarchical deterministic wallet
is an enhanced version of deterministic wallet, introducing the concept of “master private key” for deterministic wallet, i.e. HD wallet. Its hierarchy is such that the private key generated from the master private key can itself become a master private key, and then generate a deterministic wallet by the above method.
Hierarchical deterministic wallet
Similarly, we can compare a “hierarchical deterministic wallet” to a tree trunk.
A tree trunk has many branches, and the leaves on each branch are deterministic.
So, as long as we determine a certain position on a branch, that leaf is deterministic. That is, the private key is deterministic.