bitcoin-dev
BIP- & SLIP-0039 -- better multi-language support
Posted on: November 19, 2018 19:54 UTC
The BIP-0039 seed generation process depends on the language chosen for the mnemonic sentence.
This means that users are limited to using a specific language and only a few native languages are supported. The proposed solution is to have the mnemonic code represent the underlying entropy or pre-master secret, allowing for the same seed/secret to be displayed in any language. Additionally, the seed/secret could be represented in decimal numbers to support users who have difficulty with words in other languages. While the wordlists for each language differ at the same index values, the underlying entropy is the same when comparing mnemonics generated across languages sourced from the same initial entropy. The wallet or software should deal with these nuances, without requiring revision to the BIP39 protocol. Users can back up their pre-image (initial entropy) to check the validity of the mnemonic and ensure correct mapping. However, two mnemonics generated with the same entropy will produce different BIP39 seeds depending on the language chosen. There are different options to address this issue, such as having the wallet/client-side software recognize the language and show the corresponding index value per wordlist, or revising how the BIP39 seed is generated by hashing the entropy instead of the words. The BIP39 spec could also add greater detail regarding standards/best-practices for computing checksum values.