Learn to independently verify Coldcard’s Dice Roll Math – confirm the wallet is doing what it says it is when creating a new seed using dice rolls.
With most hardware wallets, it isn’t possible to independently verify the randomness used to create your unique Bitcoin seed. This could be a potential attack vector, even if you generated the seed completely separate from any internet connected device ( airgapped).
This guide demonstrates how to reproduce the randomness from Coldcard’s dice roll, to create an identical seed on separate hardware for verification. We are verifying that Coldcard does in fact use the randomness from the dice rolls and not a non random, but random looking value.
Unless you understand all potential security issues with exposing a seed on an internet connected device –
NEVER use this method to verify your actual seed.
First we create a new seed using dice rolls on an airgapped Coldcard. For demonstration purposes we use 15 rolls. The minimum number of rolls for a wallet should always be 99.
First we create a new seed using dice rolls on an airgapped Coldcard. For demonstration purposes we use 15 rolls. The minimum number of rolls for a wallet should always be 99.
Keep track of the dice rolls, because we need to use that record for verification in the next step.
Write down the seed words created by the 15 dice rolls and then boot up a fresh instance of Tails.
Tails is a portable operating system that protects against surveillance and censorship. Tails always starts from the same clean state and everything you do disappears automatically when you shut down Tails.
Nothing is written to the hard disk and only runs from the memory of the computer. The memory is entirely deleted when you shutdown Tails, erasing all possible traces.
For the purpose of demonstration we use an internet connected instance of Tails to download rolls.py script, which will verify the dice rolls. Once we download the python script, we turn off all network connections and proceed to verify the dice rolls and seed words.
Command to verify :
echo dice rolls | python3 rolls.py
You can use the guides values to verify against, if you want.
Dice Rolls:
523365252662366
Generated Seed Words:
1 dilemma
2 rural
3 physical
4 exhaust
5 divorce
6 escape
7 nut
8 umbrella
9 lawn
10 midnight
11 prosper
12 prevent
13 employ
14 caught
15 mercy
16 student
17 arctic
18 umbrella
19 feed
20 super
21 mad
22 magic
23 crawl
24 fiscal