From 5188a86d2bd97a61b156966205465a5fb4447b3d Mon Sep 17 00:00:00 2001 From: Ferdinando Ametrano Date: Fri, 18 Sep 2026 15:45:02 +0200 Subject: [PATCH] BIP-39: say what separates two words The BIP never says it. The rule is on the wordlist page, which requires the ideographic space for Japanese, and it is not quoted here; the note there also holds a caveat that ASCII and ideographic spaces are the same "as long as your code ... [does not try] to split the phrase input by the user". The reference implementation's to_entropy() does split it, on U+0020 and with no prior normalization, and so cannot read back the Japanese sentences to_mnemonic() writes; check() and to_seed() normalize first and are unaffected. No test vector changes. --- bip-0039.mediawiki | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bip-0039.mediawiki b/bip-0039.mediawiki index 2a6118b26a..ffd5517a3a 100644 --- a/bip-0039.mediawiki +++ b/bip-0039.mediawiki @@ -48,6 +48,10 @@ are split into groups of 11 bits, each encoding a number from 0-2047, serving as an index into a wordlist. Finally, we convert these numbers into words and use the joined words as a mnemonic sentence. +Words are joined using a single space character (U+0020), except in Japanese, +where the ideographic space (U+3000) is used; see +[[bip-0039/bip-0039-wordlists.md#wordlists-special-considerations|Wordlists (Special Considerations)]]. + The following table describes the relation between the initial entropy length (ENT), the checksum length (CS), and the length of the generated mnemonic sentence (MS) in words. @@ -110,6 +114,10 @@ mnemonic" section is possible, this is not advised and software must compute a checksum for the mnemonic sentence using a wordlist and issue a warning if it is invalid. +Computing that checksum requires splitting the sentence into words, and the +split must accept either separator described in +[[#generating-the-mnemonic|Generating the mnemonic]]. + The described method also provides plausible deniability, because every passphrase generates a valid seed (and thus a deterministic wallet) but only the correct one will make the desired wallet available.