summaryrefslogtreecommitdiff
path: root/6f/407b9e70e57de76b372a795ec966c6543b9695
blob: cf035c534818d351e0570168cbf6c9b04c37d485 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
Return-Path: <nullius@nym.zone>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 91AEA94B
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri,  5 Jan 2018 18:09:19 +0000 (UTC)
X-Greylist: from auto-whitelisted by SQLgrey-1.7.6
Received: from mx2.mailbox.org (mx2.mailbox.org [80.241.60.215])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 797FFA7
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri,  5 Jan 2018 18:09:18 +0000 (UTC)
Received: from smtp2.mailbox.org (smtp2.mailbox.org [80.241.60.241])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by mx2.mailbox.org (Postfix) with ESMTPS id AB6EA4CE25;
	Fri,  5 Jan 2018 19:09:16 +0100 (CET)
X-Virus-Scanned: amavisd-new at heinlein-support.de
Received: from smtp2.mailbox.org ([80.241.60.241])
	by gerste.heinlein-support.de (gerste.heinlein-support.de
	[91.198.250.173]) (amavisd-new, port 10030)
	with ESMTP id vxITXY8ZgcHZ; Fri,  5 Jan 2018 19:09:03 +0100 (CET)
Date: Fri, 5 Jan 2018 18:08:50 +0000
From: nullius <nullius@nym.zone>
To: Sjors Provoost <sjors@sprovoost.nl>,
	Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org>
Message-ID: <55374d9210feebf2f758d4e7b21849ee@nym.zone>
References: <57f5fcd8644c6f6472cd6a91144a6152@nym.zone>
	<BB3FA46E-AA09-4A60-9D0F-8E350015E107@sprovoost.nl>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
	protocol="application/pgp-signature"; boundary="s2gulaj2zoqb3hzc"
Content-Disposition: inline
In-Reply-To: <BB3FA46E-AA09-4A60-9D0F-8E350015E107@sprovoost.nl>
X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW
	autolearn=ham version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
	smtp1.linux-foundation.org
X-Mailman-Approved-At: Fri, 05 Jan 2018 18:17:26 +0000
Cc: arachnid@notdot.net
Subject: Re: [bitcoin-dev] BIP 39: Add language identifier strings for
 wordlists
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Bitcoin Protocol Discussion <bitcoin-dev.lists.linuxfoundation.org>
List-Unsubscribe: <https://lists.linuxfoundation.org/mailman/options/bitcoin-dev>,
	<mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=unsubscribe>
List-Archive: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/>
List-Post: <mailto:bitcoin-dev@lists.linuxfoundation.org>
List-Help: <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=help>
List-Subscribe: <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>,
	<mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=subscribe>
X-List-Received-Date: Fri, 05 Jan 2018 18:09:19 -0000


--s2gulaj2zoqb3hzc
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On 2018-01-05 at 16:04:10 +0000, Sjors Provoost <sjors@sprovoost.nl>=20
wrote:
>I=E2=80=99m not a fan of language specific word lists within the current B=
IP-39=20
>standard. Very few wallets support anything other than English, which=20
>can lead to vendor lock-in and long term loss of funds if a rare=20
>non-English wallet disappears.
>
>However, because people can memorize things better in their native=20
>tongue, supporting multiple languages seems quite useful.
>
>I would prefer a new standard [...] A replacement for BIP-39 [...]
>
>[snip]
>For my above point and some related ideas, see:=20
>https://github.com/satoshilabs/slips/issues/103

You present some interesting ideas; and I will be much interested in the=20
Github issue you referenced=E2=80=94thanks for that.  However, this discuss=
ion=20
is *far* beyond the scope of my simple proposal and request to add=20
standardized native language and short-ASCII identifier strings to the=20
BIP repository.  I suggest that readers solely interested in the=20
existing BIP 39 standard and its direct application to Bitcoin should=20
stop reading right here.

----

That being said, I should briefly address some of the issues you raise=20
(with further discussion best continued elsewhere):

I *strongly* urge the importance of language-specific standardized=20
wordlists.  Even an individual who has secondarily acquired reasonable=20
fluency in English will most likely have the least difficulty=20
memorizing, transcribing, and otherwise handling a =E2=80=9Cmother-tongue=
=E2=80=9D=20
mnemonic.  Such an advantage is important in applications whereby even=20
slight errors can be fatal, and every bit counts.  This is to say=20
nothing of persons who have limited or no English-language knowledge.

Yet for multiple reasons, multilanguage support is only feasible with=20
standardization.  Wordlist creation is a highly specialized task. =20
Independent implementation of standards is imperative for avoiding=20
implementation lock-in; and independent implementors (such as I) would=20
be unable to create sets multi-language wordlists on their own, anyway. =20
For a view of the language-specific process involved in creating a=20
wordlist, I invite everybody following this discussion to review BIP=20
repository PRs #92, #130 (Japanese); #100 (Spanish); #114 (Chinese, both=20
variants); #152 (French); #306 (Italian); #544 (Korean, rejected); and=20
#570 (Korean).  The rejection of #544 for Korean, and its superseding=20
with #570 is particularly instructive.

With standardized wordlists, independent implementation is easy.  In my=20
own implementation, the language switching backend (excluding the UI[1])=20
for multilingual mnemonic generation required only relatively small C=20
code changes, as seen here[0]:

[0] https://github.com/nym-zone/easyseed/commit/5b6a6668458d96d6ccc4bf19e4f=
d40fe6ea72fec#diff-20dcf1782b7568b85ea01ed695abeb02

[1] https://github.com/nym-zone/easyseed/commit/1a6e48bbdac9366d9d5d1912dc0=
62dfc3f0db2c6#diff-20dcf1782b7568b85ea01ed695abeb02

Admittedly, the multilingual requirements for seed generation will take=20
a bit more; and my nonstandard, non-BIP39 ideas which require decoding=20
words directly back to bits will take yet more.  But it is still not=20
problematic.

I only began writing this tool one week ago, as of today; and it has=20
been a side project requiring small amounts of time, not a full-time=20
dedicated task.  When I fully complete all aspects of seed generation,=20
then users will have the option of another simple open-source tool which=20
*will* be able to output a binary or BIP-32-formatted (=E2=80=9Cxprv=E2=80=
=9D) 512-bit=20
seed, given input of an existing mnemonic in any language supported by=20
official BIP 39 wordlists.  Output can then be imported to any wallet=20
software which supports BIP 32, regardless of the wallet=E2=80=99s langauge=
=20
support (and whether or not the wallet supports BIP 39 at all).

**The ease of creating such tools squarely answers your concerns about=20
vendor lock-in.**  And yes, it=E2=80=99s easy.  I can attest as a lone code=
r,=20
it=E2=80=99s easy for me to create =E2=80=9Ceasyseed=E2=80=9D as a side pro=
ject!

Finally, aside:  In the discussion at SLIP repository issue #103, I see=20
mention of m-of-n SSSS.  I have been mentally whiteboarding just such an=20
application involving mnemonics.  Watch for it.  <g>  It is likely that=20
I will crib the BIP 39 wordlists, given the impossibility that I could=20
create my own set of wordlists in many languages.  I only wish that the=20
BIP repository had support for more languages.  More!  Adding each new=20
language to my implementation(s) will require approximately one-line=20
code changes for me.

(Aside further:  Why is there not a Dutch wordlist?  I should like to=20
add that, please=E2=80=94meneer Provoost.  More wordlists!)

Aside still yet further:  Should you be interested in more general=20
applications of mnemonic phrases for pseudorandom strings, I think you=20
will like this future feature which currently exists only as an Easter=20
egg, (un)documented in my commit log:

https://github.com/nym-zone/easyseed/commit/ba77be1b1a1f0c6af50ceba5c89f4ad=
ece7e5dff

Further discussion is invited by private mail, in an appropriate public=20
venue, or otherwise not on a bitcoin-dev thread which makes a simple=20
request and proposal as to the existing BIP 39 standard=E2=80=94thanks.

--=20
nullius@nym.zone | PGP ECC: 0xC2E91CD74A4C57A105F6C21B5A00591B2F307E0C
Bitcoin: bc1qcash96s5jqppzsp8hy8swkggf7f6agex98an7h | (Segwit nested:
3NULL3ZCUXr7RDLxXeLPDMZDZYxuaYkCnG)  (PGP RSA: 0x36EBB4AB699A10EE)
=E2=80=9C=E2=80=98If you=E2=80=99re not doing anything wrong, you have noth=
ing to hide.=E2=80=99
No!  Because I do nothing wrong, I have nothing to show.=E2=80=9D =E2=80=94=
 nullius

--s2gulaj2zoqb3hzc
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQSNOMR84IlYpr/EF5vEJ5MVn575SQUCWk+/LwAKCRDEJ5MVn575
SXfHAQDhSEq1659zkl8leF3zg8VJ3lnXA6KxE0N6o18SZDNvyQD+M0RXjCpb/VNp
vnOtlVGqXhg0PM1Jg3NBDloZX8H7Qwk=
=yhxj
-----END PGP SIGNATURE-----

--s2gulaj2zoqb3hzc--