Think it was you I read suggesting inputting to two different devices to see if output same phrase, as an extra check.

Also, can put decent bait on it for a while and watch, if still there later on can feel confident to add more

Reply to this note

Please Login to reply.

Discussion

Yes. Whatever you produce yourself, put in multiple devices to ensure none are lying to you.

In the dice-rolling example, you could get two manufacturers, enter the same rolls and ensure they produce the same seed phrases. The problem is that there aren’t two vendors (just ColdCard, AFAIK) so to verify, you basically have to spin up an offline computer and run the Python source code.

Using an offline computer to reproduce your seed phrase generation process kinda negates the advantage of having eternally quarantined, air gapped hardware in the first place. Plus, it’s not Coinkite’s preferred method anyway. They recommend using a mix of your own words and their in-device entropy, which is entirely unverifiable.

By contrast, many vendors can perform the last word generation, XPUB generation, and address generation. So starting with seed words makes more sense to me.

Ooh didn’t know it was just coinkite, assumed others too.

Could roll once as a test wallet to get confirm with computer calc, if agreement, roll a new seed and trust it, I guess.

I didn’t know about the vendors helping with last word, that’s kinda huge news to me. You could ā€œrollā€ random 1-2048 23 times, and then roll 1-8 for final word. Do I have that right?

> and trust it, I guess.

Exactly. Best you can do is audit, dry-run with offline computer, then trust.

> You could ā€œrollā€ random 1-2048 23 times, and then roll 1-8 for final word. Do I have that right?

Correct. ColdCard, Keystone (formerly Cobo Vault), SeedSigner and Spetre DIY will show you the list of conforming last words, from which you can pick. There may be other devices, I don’t know.

Thanks for info. Now to hopefully retrieve this note down the line when I wanna find it šŸ˜…

Seedsigner lets you enter dice rolls

Does it use the same algorithm as ColdCard? IIRC, the CC algo was to concatenate the rolls as a string and run it through SHA256.

not sure ...

```

def generate_mnemonic_from_dice(roll_data: str, wordlist_language_code: str = SettingsConstants.WORDLIST_LANGUAGE__ENGLISH) -> list[str]:

"""

Takes a string of 50 or 99 dice rolls and returns a 12- or 24-word mnemonic.

Uses the iancoleman.io/bip39 and bitcoiner.guide/seed "Base 10" or "Hex" mode approach:

* dice rolls are treated as string data.

* hashed via SHA256.

Important note: This method is NOT compatible with iancoleman's "Dice" mode.

"""

entropy_bytes = hashlib.sha256(roll_data.encode()).digest()

if len(roll_data) == DICE__NUM_ROLLS__12WORD:

# 12-word mnemonic; only use 128bits / 16 bytes

entropy_bytes = entropy_bytes[:16]

# Return as a list

return bip39.mnemonic_from_bytes(entropy_bytes, wordlist=Seed.get_wordlist(wordlist_language_code)).split()

```

https://github.com/SeedSigner/seedsigner/blob/825a25a5835bfac0fab3d84c07b3c46676348489/src/seedsigner/helpers/mnemonic_generation.py