bitcoin-dev
Combined summary - BIP- & SLIP-0039 -- better multi-language support
In a bitcoin-dev discussion, Steven Hatzakis proposed revising the process for generating BIP39 seed by feeding the initial entropy into the PBKDF2 function instead of using words.
Weiji suggested incorporating Shamir's Secret Sharing (SSS) into the design to maintain language independence and enable mnemonics in multiple languages simultaneously. The proposed revision includes a language id for each defined wordlist in the SSS share, as well as other parameters such as share id, threshold, index, share value, and checksum. Weiji also suggested using two languages or one language + numbers to cross-check for errors in handprinting. Another discussion on the use of mnemonics in different languages highlighted the issue that while words cannot be directly translated, the underlying entropy is the same when comparing mnemonics generated across different languages from the same initial entropy. Two options were suggested to solve this problem: either have the wallet recognize the language and re-map the entropy accordingly or revise how the BIP39 seed is generated by hashing the entropy instead of the words. It was also suggested to include the identifier of the chosen wordlist as part of the mnemonic and maintain an official list of named dictionaries for user selection.The BIP39 seed generation process currently depends on the language chosen for the mnemonic sentence, limiting users to specific languages. The proposed solution is to represent the mnemonic code as the underlying entropy or pre-master secret, allowing for the same seed/secret to be displayed in any language. Decimal numbers could also be used to represent the seed/secret for users who struggle with words in other languages. However, it should be noted that two mnemonics generated with the same entropy will produce different BIP39 seeds depending on the language chosen.In a conversation between Neill Miller and Jonathan Underwood, it was mentioned that Electrum treats BIP39 recovery in the same way as non-BIP39 mnemonics. Jonathan mentioned that Electrum follows the BIP39 specifications for recovery, but Neill pointed out that Electrum mnemonics are not based on BIP39.Jonathan Underwood further discussed how Electrum handles BIP39 recovery according to the specifications, while mentioning that not all apps follow the BIP39 spec. He expressed the difficulty of expecting every app to support multiple languages due to the lack of adherence to the spec. However, he noted that Electrum allows for restoring random strings with a warning. Neill Miller confirmed that Electrum mnemonics are not based on BIP39.Jonathan Underwood emphasized that while multiple languages in BIP39 make sense, it is unreasonable to expect every app to load every language due to the lack of adherence to the spec. He clarified that Electrum follows the BIP39 recovery process but warned about restoring random strings. Neill confirmed this information.BIP39 provides flexibility in wordlists for generating mnemonic sentences, but it is advised to use mnemonics generated by the algorithm described in the specification. Software must compute a checksum for the mnemonic sentence using a wordlist and issue a warning if it is invalid. The BIP39 multi-language feature is important for non-English speakers, but many wallets only support the English wordlist. Electrum seeds are language/wordlist agnostic and allow for restoration of random strings. The need to address the language issue in BIP39 has led to proposals such as representing the mnemonic code as underlying entropy or using decimal numbers instead of words.Weiji Guo highlighted that BIP-0039 is language dependent, limiting users who prefer non-English languages. While SLIP-0039 offers SSS capability with an English wordlist, it does not provide a user-friendly solution. Weiji proposed two solutions: representing the mnemonic code as underlying entropy or allowing the seed/secret to be represented in decimal numbers for users who struggle with words in other languages. Implementation details for these proposals are uncertain, and community input is sought.In summary, there have been discussions and proposals to address the language dependence of BIP39 mnemonics. Suggestions include revising the seed generation process, incorporating Shamir's Secret Sharing, and representing the mnemonic code as underlying entropy or using decimal numbers. Electrum follows the BIP39 recovery process but also supports non-BIP39 mnemonics. The lack of adherence to the BIP39 spec by other apps has made it challenging to support multiple languages. Further exploration and input from the community are needed to find a suitable solution.