Replies (32)

GM @N 🧡 Just wanted to drop a line and say I'm with you spiritually & mentally in this 4.0.1 thing. Bitcoin needs builders who've walked this path longer than anyone. That's you. Standing with you. Onwards. 🫡
bootlace's avatar
bootlace 1 week ago
Some folks may disagree with me, but trusting opaque hardware for generating entropy/seeds/keys is a single point of failure. Last night, I used AI to architect a zero-trust alternative. It bypasses silicon entirely by forcing 128 physical coin flips to generate the master seed. - Deterministic single-file HTML build - CSP locked / offline execution - Full BIP85 index derivation - Airgapped QR code export - Zero hardware trust (Physics only) Have your AI verify my AI:
Five years to fix the code… Five+ years to help your customers… You blew off the warnings… Negligence (with a clear paper trail and pattern) costs mucho, DQ
you can create a random seed phrase (mostly) without software. All you need is the wordlist (with indexes) and a coin. flip the coin 11 times. this will give you 11 bits. transform the bits into decimal number index and lookup the word in the wordlist, boom, first word down repeat 11 times. for the 12th word, flip 7 times. The last 4 bits of the last word are the checksum. Some airgapped signers like jade will provide simplified input, so you don't have to try to find a valid last word 16 times. This is the only step that requires software because it relies on sha256, but this step does nothing to the randomness, so there is no implementation you have to "trust"
now, do you trust the coin? Maybe your coin has a bias to land on head, because of uneven weight distribution. A bias can have a negative effect on the entropy of the bits produced. studies say average coin bias is 51/49, which is low enough to not be an issue. If you still don't trust the coin, you can use von neumann normalization. For each throw, you do 2 throws instead: if heads, heads => rethrow tails, tails => rethrow heads,tails => heads tails, head => tails this will require more than double the throws, but will give you unbiased entropy
Exactly! What would really be great is if all signers (including hot wallets) would provide an embedded tool to accept a 12th (or 24th) word you generated (likely not checksum-valid), discard the invalid checksum bits, and replace them with a valid checksum and tell you what your new valid last word should be (and force you to reenter your entire seed phrase again for checksum verification) Instead, it would seem most developers are more interested in abstracting away user responsibility for the sake of quick and convenient on-boarding of the naive.
Indeed, every signing device or wallet can do these things (checksum, derive address) and if we don't trust a single one to derive the correct addresses, we try multiple. Of course they all have to be airgapped. Your tool i assume could be one of those, to cross check. Some things to watch our for: Browser fields may cache unwanted inputs The delivery html should leave the code uncompressed for auditability browsers can behave differently for me personally i would feel uneasy using the web browser for this... even on an offline device. maybe an unfounded fear, just because browsers are so huge and clunky
if you input the coinflip bits into the browser, it may cache/save the input value. depends on the browser probably