Use it
Entropy and seeds
How dice become a seed, byte for byte, with a worked example you can reproduce with sha256sum.
This document specifies exactly how nullroute turns physical dice rolls into a
BIP-39 seed phrase, in enough detail that you can reproduce the result by hand
on a different machine with nothing but sha256sum.
That property is the point. A hardware wallet that generates a seed inside a black box asks you to trust the box. nullroute asks you to trust arithmetic you can check yourself.
Spec: packages/core/src/entropy/dice.spec.yaml, packages/core/src/entropy/combine.spec.yaml
In this chapter
- 01Why this document existsA device that generates your seed inside a black box is asking you to trust the box. You cannot inspect it, and a correct generator and a backdoored one look identical from the...
- 02ModesMode A is the only mode where the device can be caught lying with a pocket calculator and a laptop. It is the default for that reason.
- 03Mode A: dice onlyA fair six-sided die yields log2(6) bits per roll.
- 04Mode B: dice plus machine sourcesMode B combines the dice with machine entropy so that a weakness in either one alone does not sink the result.
- 05Mode C: machine onlyAvailable, and refused unless you say what you are giving up.
- 06Mode D: import an existing mnemonicStandard BIP-39 import with checksum validation. Use this to recover a wallet or to bring a seed generated elsewhere onto the device.
- 07PassphrasesBIP-39 supports an optional passphrase, sometimes called the 25th word. It is mixed into the seed derivation, not stored, and not recoverable.
- 08What is deliberately not hereShamir secret sharing (SLIP-39) is not offered for seed generation. It splits a single point of failure into a more complicated single point of failure, the implementations are...
- 09References
Rendered from docs/ENTROPY.md, the same bytes that ship with the code. SHA-256 ce8ad87ef3fbce5b6ff615296b3ec081a840415ae6bc089bff748df3dc6a348d