Creating a Secure Bitcoin Wallet, using Dice
Overview
Each Bitcoin wallet can be uniquely described by a seed phrase. So if you make a seed phrase, you have a wallet address (the odds of you generating a seed phrase for an existing wallet are tiny).
A 24 word BIP39 seed consists of 23 words, randomly selected from this list, and a 24th word. The 24th word is a βcheck wordβ. The constraints on this final word make it a little trickier to come up with. If you have an air-gapped computer, you can use the python code in our GitHub Repository.
Because of this, our problem is reduced to choosing 23 truly random words that cannot have been influenced by a computer. These words will never be exposed to a computer that connects to the internet, so canβt be hacked.
(disclaimer: if youβre trusting a hardware wallet, you should probably also trust the random seed it generates. However this is fun, and there is something reassuring about relying on the clatter of dice for a bit of analog entropy)
Youβll need:
six-sided dice (ideally precision dice)
a pencil and paper
the ability to add numbers, or a pocket calculator
a printout of the bitcoin BIP39 list, or a browser pointed at the list on Github (scroll to find wordsβ¦.. no βfindβ command - remember the typing stuff into the computer rule?)
IMPORTANT: Do not type the words into an internet-connected computer. Do not photograph the words using your phone.
Method
Throw your dice and follow the method in the diagram 23 times. Write those 23 words down on your piece of paper.
The 24th word is a checksum word, and must be calculated from the 23 random words. Follow the instructions on our GitHub repository.
The 24 words that you generate should never be entered on a computer that is connected to the internet.
Conclusion
Generating a genuinely random wallet seed is massively important. Now that youβve got your random seed, you need to keep it safe. Next step: Etching the seed words onto metal.

