diff --git a/README.md b/README.md index a24c9517deef0125dd1e728cd4e5607752610e45..442596d43e334ab76669c0010d9d67d7f877e38a 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ All documents should be implementation agnostic, as specific documentations shou * RFC_0011: [Duniter_Blockchain_Protocol_V13](https://git.duniter.org/documents/rfcs/blob/dubp_v13/rfc/0011_Duniter_Blockchain_Protocol_V13.md) * RFC_0012: [Duniter Key File Format](https://git.duniter.org/documents/rfcs/blob/authentication_file_format/rfc/0012_duniterkey_authentication_file_format_v1.md) * RFC_0015: [HD wallet](https://git.duniter.org/documents/rfcs/blob/hd_wallet/rfc/0015_Dubp_HD_Wallet.md) +* RFC_0018: [Multilang Mnemonic](https://git.duniter.org/tuxmain/rfcs/-/blob/rfc18_multilang_mnemonic/rfc/0018_Multilang_Mnemonic.md) ### Discontinued RFCs diff --git a/rfc/0018_Multilang_Mnemonic.md b/rfc/0018_Multilang_Mnemonic.md new file mode 100644 index 0000000000000000000000000000000000000000..5d9432c5ecfacd4960708f3b8c22680978b9162a --- /dev/null +++ b/rfc/0018_Multilang_Mnemonic.md @@ -0,0 +1,50 @@ +# #18 Multilang Mnemonic + +```txt +RFC: 18 +Title: Multilang Mnemonic +Type: Convention +Status: WIP +Author: tuxmain <tuxmain@zettascript.org> +Created: 2024-10-16 +Last edited: 2024-10-16 +License: AGPL-3 +``` + +This RFC defines how to use multilang mnemonics in an alternative way than defined by [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) while staying compatible with it. + +## Motivation + +Vanilla BIP39 discourages using non-English mnemonics and only few libraries and applications handle them. Users who want a non-English mnemonic thus loose compatibility with most of the ecosystem. + +## English mnemonics + +Mnemonics in English follow BIP39. + +## Non-English mnemonics + +BIP39 defines multilang (non-English) mnemonics using the hash of the sentence in the mnemonic's language. + +A dictionary `D` of size `N` is an ordered list that contains the distinct words `D(1), ..., D(N)`. + +All dictionaries have the same size `N`. + +Let `E` be the English dictionary, and `M` a multilang dictionary. + +The only change of the present RFC with respect to BIP39 is that in the hash's input, each word `M(i)` is replaced with the corresponding English word `E(i)`. + +Applications SHOULD allow the user to export their multilang mnemonic to English (using the inverse bijection) to allow full compatibility with BIP39. + +## Example + +| index | English Dictionary | French Dictionary | +| ----- | ------------------ | ----------------- | +| 0 | energy | dotation | +| 1 | curve | commande | +| 0 | energy | dotation | +| 2 | pepper | naufrage | +| 3 | sort | révulsif | +| 4 | weasel | ventouse | +| 5 | yellow | voyelle | + +The French mnemonic `dotation ventouse naufrage` generates the same seed as the English mnemonic `energy weasel pepper`.