Cryptocurrency Wallets: Wallet Generation Protocols
Wallets are generated on an offline computer with a combination of wallet generation software written by Howard Wu and software made available by blockchain projects and open-source developers. All codebases used to generate these addresses are vetted by Howard Wu to ensure they used standard, well-audited, open-source cryptographic libraries, and do not attempt to implement cryptographic primitives on their own.
The wallet generation protocol is performed once to generate one set of hot wallets. After
running the wallet generation protocol for hot wallets, the hot wallet private keys are printed
once on paper and deleted from the offline computer. The offline computer is then restarted to
flush any memory or remaining caches of the process from the machine.
The wallet generation protocol is performed once to generate one set of cold wallets. After running the wallet generation protocol for cold wallets, the cold wallet private keys are sharded using Shamir’s secret sharing scheme, creating an n-of-m scheme, where n = 3 and m = 7.
One of the seven shards is then chosen at random and sharded again using Shamir’s secret sharing scheme, creating another n-of-m scheme, where n = 3 and m = 3. We designate these three shards as contingency shards.
The set of shards is generated using a standard, well-audited, open-source implementation of Shamir’s secret sharing scheme. As in the hot wallet case, the generated wallets are deleted from the offline computer and the machine is restarted.
HOT & COLD WALLET TESTING
Every hot and cold wallet is tested, by sending a fixed token amount to the public address and using the private key to sign a transaction back to the sender’s public address.
In the hot wallet case, private keys are imported into wallet software written by Howard Wu or by open-source blockchain developers. As in the wallet generation protocol, these libraries are vetted to ensure they used standard, well-audited, open-source cryptographic libraries. The wallet software is then used to sign a test transaction.
In the cold wallet case, there are 35 possible combinations for producing the wallet private keys, given the set of seven shards (7 choose 3). All 35 combinations are tested for all cold wallets to ensure they produce the same private keys. Each private key is then imported into the same wallet software and used to sign a test transaction.
If you would like to learn more about Cryptocurrency Wallets and Blockchain Technology, please read our blog. We would love to hear what projects you are working on, so please feel free to email whitepapers for us to review!
Source: Ken Sangha from Open Money