pull down to refresh

Since the Coldcard incident, many people have been rolling dice to generate new seed phrases

If you are going to create a new one anyway, let’s roll the dice while understanding how it actually works.

Mnemonic words are connected to numbers

Each seed word is assigned a number.

0: abandon
1: ability
2: able
...

Computers process all information using 0s and 1s.

Therefore, each seed word can also be represented by eleven 0s and 1s.

00000000000: abandon (0, the first word)
00000000001: ability (1)
00000000010: able (2)

...

Ultimately, the key to creating a seed phrase is how randomly you can generate a combination of 0s and 1s.

1. Creating a Seed Phrase with a coin

A coin has two sides: heads or tails.

This means that flipping a coin allows you to build bits one by one in the most intuitive way.

Heads: 0
Tails: 1

For example, suppose you get the following results:

Heads, heads, heads, tails, tails, heads, tails, tails, heads, tails, tails

Converting them into 0s and 1s gives:

00011011011: bread

If you flip the coin 128 times, you can create a 12-word seed phrase.

If you flip it 256 times, you can create a 24-word seed phrase.

Advantage

It is very intuitive, and the person flipping the coin can easily verify the results directly.

Disadvantage

It is inconvenient because the coin must be flipped many times.

2. Creating a Seed Phrase with dice

A standard die has six sides.

However, because six is not a power of two, it is difficult to create perfect entropy simply by converting die numbers into binary.

Therefore, methods using dice can broadly be divided into two types.

2-1. Using die numbers directly as entropy

This method converts die numbers into 0s and 1s as follows and accumulates them:

1: 01
2: 10
3: 11
4: 0
5: 1
6: 00

You need to roll the die a minimum of around six times and a maximum of around eleven times to create enough bits for one seed word.

For example, suppose you roll the die and get the following results:

6, 1, 2, 3, 1, 2

Converting them gives:

00, 01, 10, 11, 01, 10

Putting them together produces the following bits:

000110110110

The first eleven bits, 00011011011, become “bread,” and the final 0 is used when creating the next seed word.

This method is used by Ian Coleman and Coconut Vault.

Advantage

You can directly see and verify how the dice results are converted into 0s and 1s.

Disadvantage

You need to roll the dice many times to obtain sufficient entropy.

2-2. Hashing the dice results

This method collects enough dice results and then puts those values into the SHA-256 hash function.

For example, suppose you have the following dice results:

012345

When this value is entered into the SHA-256 function, it produces a result consisting of 256 0s and 1s.

For a 12-word seed phrase, half of them—128 bits—are used.

For a 24-word seed phrase, all 256 bits are used.

This method is used by SeedSigner and Krux.

Advantage

It allows you to generate a seed phrase more conveniently than directly converting and accumulating dice results as bits.

Disadvantage

Because it is difficult for a person to verify the hash calculation result directly with their own eyes, you must trust the device or program performing the calculation.

3. Which of the two methods is better?

Some people ask us to compare the following two methods of generating a seed phrase with dice:

  • Using die numbers directly as entropy
  • Hashing the dice results to create entropy

The first method directly converts the dice results into bits while allowing you to verify them with your own eyes.

The second method processes the dice results using a digital hash function.

Coconut, thinks about it this way:

If both methods use a sufficient number of dice results and are implemented correctly, they can both produce cryptographically very secure results.

However, we roll dice ourselves because we cannot completely trust machines.

If the results of those dice rolls must then depend on a machine’s calculations again, it can feel somewhat ironic.

For that reason, we believe the first method using dice numbers directly as entropy and allowing the process to be visually verified is slightly better.

Coconut Vault therefore uses the method of using die numbers directly as entropy.

At present, Coconut Vault is the only Bitcoin wallet that allows users to generate a seed phrase using dice instead of relying on a machine's random number generator. All other wallets use the same approach as Coldcard for seed generation.

Of course, the choice of method is yours.

However, before choosing, we believe it is better to understand how each method works and what you are required to trust.

Coconut: A new standard for self-custody

i have recently rolled dice and inputted it on both a seedsigner as well as a coldcard and got the same exact seedphrase. Based off this article shouldnt this not be the case?

reply

i misread the article,

what would you consider sufficient dice rolls for the first method?

reply

🪙 or 🎲 🤔