summaryrefslogtreecommitdiff
path: root/9b/012238b167febbca9f0e302e4c2b9f597a7855
blob: f1fa1dd324131855f5e7a300abe0675a2661af3a (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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
Return-Path: <jgarzik@gmail.com>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 34C68279
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Tue, 11 Aug 2015 15:46:28 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com
	[209.85.212.177])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id C4DFE1D5
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Tue, 11 Aug 2015 15:46:26 +0000 (UTC)
Received: by wicja10 with SMTP id ja10so80238850wic.1
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Tue, 11 Aug 2015 08:46:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:in-reply-to:references:date:message-id:subject:from:to
	:cc:content-type;
	bh=Qsi7qdFBTm57EFtl09XhJvKntJU8NSPUBiy1OLGFtlw=;
	b=g83S0S4C2XwbkjkKnUOUtn8qxLxYxbo/wBywoouN6wpVSqCs8UFik3J7nQ2L0qNyAr
	vZIojbXBpA6YPJyXR0HeUZyMz1GK/rmsM6wgZU6gu3lrpK1/AZmum69WoNMqdN+Yr/74
	CQTo+82YAy4ZcIWkB5fXj14E0vYRDWxBDSvKvbwuAoEGMQNhozk2bOFWuiRVbU8ZcpW1
	vzqK3ix98J5QAfy9c1D/+rsiXjDBuoENUPLLh8e74QlavmpUR6gTcl9T+bZzmUfUMNhw
	mRi1p4drKW5AQEBFKsBnaRAJYD+S1i5JopZsEWT9ZYi4EeWKv5ww8WRp49oJtTKA0noh
	Wx5g==
MIME-Version: 1.0
X-Received: by 10.194.176.201 with SMTP id ck9mr56584147wjc.108.1439307985338; 
	Tue, 11 Aug 2015 08:46:25 -0700 (PDT)
Received: by 10.28.140.196 with HTTP; Tue, 11 Aug 2015 08:46:25 -0700 (PDT)
In-Reply-To: <55C9BA0F.60408@jonasschnelli.ch>
References: <55C9BA0F.60408@jonasschnelli.ch>
Date: Tue, 11 Aug 2015 11:46:25 -0400
Message-ID: <CADm_Wcb2CXLJjuO_7kTmAHKxYhSs53pjecQoWKfM7wKE4GsRdQ@mail.gmail.com>
From: Jeff Garzik <jgarzik@gmail.com>
To: Jonas Schnelli <dev@jonasschnelli.ch>
Content-Type: multipart/alternative; boundary=089e013d1eb4304928051d0b016c
X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,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
Cc: bitcoin-dev@lists.linuxfoundation.org
Subject: Re: [bitcoin-dev] Future Of Bitcoin-Cores Wallet
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Bitcoin Development 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: Tue, 11 Aug 2015 15:46:28 -0000

--089e013d1eb4304928051d0b016c
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

+1  Glad to see this work.

The Bitcoin Core wallet is a bit neglected these days - maintained but not
advancing.



On Tue, Aug 11, 2015 at 5:02 AM, Jonas Schnelli via bitcoin-dev <
bitcoin-dev@lists.linuxfoundation.org> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Hi
> (excuse my english; it=E2=80=99s not my native language)
>
> As you might noticed, bitcoin-cores wallet didn=E2=80=99t got that much f=
ocus
> during the last month (even years?).
> Wallet development has mostly moved towards SPV (bitcoinj), thin
> clients (Electrum), centralized web middleware (Copay, Greenaddress,
> etc.).
>
> Obviously this direction was highly appreciated by users who now can
> now run a bitcoin-client (SPV / thin client) on a smartphone or on a
> computer with tiny available resources.
>
> Full validation slowly gets a privilege of people who can manage to
> run bitcoin-core on a VPS or different server like system.
> Thought, i think, running a full node wallet could be end user
> friendly with some changes in the current concept.
>
> Today a standard user can download a 1080p 10GB movie over iTunes (in
> background) and simultaneous play a CPU/GPU extensive 3D game on a
> standard computer.
> Why do people think (and it might is) running a full node is so painful?
>
> Mainly it could be because bitcoin-core has been focused on doing
> validation as quick as possible (okay for a server, not desirable for
> a wallet background service).
>
> I could see the following strategy:
> - - end user focused full node wallet would have enabled pruning by
> default (~2GB disk usage).
> - - throttled validation (flexible CPU usage, user selectable, maybe
> ~20% by default).
> - - throttled block download (bandwidth).
> - - SPV during catch up (initial sync as also when catching up multiple
> days because user/node was offline).
> - - Disable bloom filtering if there is enough bandwith, keep blocks for
> later validation.
> - - when node is in sync, switch from SPV to full validation (maybe
> maintain to lists/dbs of wtx or re-validate after full catchup and
> display potential conflicts).
> - - participate in p2p, but with limits/throttling (service limited
> amount of blocks, tx [TBD]).
>
> Why?
> - - This could increase the amount of participating full nodes while
> giving users more privacy and security.
> - - Create a counterweight against SPV/thin clients (avoid wallet
> development centralization, could be helpful once/if attacks agains
> SPV/thin clients are becoming real).
> - - Slowly complete full validation (can take ~1-2 weeks) and thereforce
> increase privacy (avoid bloomfilters) and security.
>
> What about SPV together with a full node?
> Sounds good in theory. But who can run a full node (see above)? How is
> the channel secured (against MITM, privacy) between the SPV client and
> the trusted full node? How hard is it to setup and maintain a secure
> tunnel between a smartphone SPV and a full node over the p2p (8333)
> channel? How about examine the mempool for fee calculations and
> (maybe) upcoming CPFP like approaches, etc.?
>
> How about smartphones?
> Obviously the above solution won=E2=80=99t probably work on a smartphone =
(to
> much bandwidth and CPU usage). But do you carry your whole saving in
> your physical wallet with you? Maybe a smartphone does hold keys which
> protects low value / daily spendings like a physical wallet (=3DSPV okay)=
.
> My personal long term vision of that use-case is, that groups of
> people who trust each other (a family, etc.) might run one or multiple
> full node(s) on a hardened system (something similar to the bitnodes
> hardware) where the system could serve smartphones over something like
> a stratum server (electrum) or bitpays wallet-service does (index
> blockchain, additional wallet services). Every member still holds it=E2=
=80=99s
> keys but they trust the connected full node (full nodes does address
> index, balance calculation, multisig arrangements and maybe even coin
> selection).
>
> Since about one year i slowly work toward this direction. It took me a
> while to commit myself to a strategy (and i still shake from time to
> time).
> At the moment I am working on a wallet focused bitcoin-core fork with
> the ability to re-merge it to the bitcoin-core branch (keep the fork
> rebased).
> Long term goal is, to decouple the both (wallet / core) by using
> bitcoin-core as a library (static or shared) for the wallet side
> (which is possible already now)
>
> To myself: I work in the bitcoin-space full-time and completely
> independent (not employed or influenced by a bitcoin related company)
> with no business interest, though, i think the acquired know-how can
> be valuable within the next serval years. And i won=E2=80=99t have any re=
grets
> if my work turns out to be unless and ends up in trash.
>
> I have set up this mail to avoid parallelism on a works stream (if
> there is any). Of course i would really appreciate if other developers
> are willing to join the team by reviewing, concept critism or
> contributing code at https://github.com/jonasschnelli/bitcoin.
>
> Any forms of criticism and any ideas are highly appreciated.
>
>
> =E2=80=94
> /jonas
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2
>
> iQIcBAEBCAAGBQJVyboPAAoJECnUvLZBb1PsgkkQAKySrksCclbfwIsf1L4Jwaxp
> nWmUhlXa3lIoxKG3eYZMPVugFX/LFKtmNqypQJ8whUjF2K5ZwIW1Boosl13cBkE9
> 2EIAMcBrpah0pwzomJ9ViLArl+7t6ksLR5qWJsgJsLnWlaW4c/1KwjGkYTZ6++VC
> 8O3M3HrdwT3fnrK35XJXTIhpFfRKRFrWcW98vMFt9xw7MUq+enhloGF6Nw4UiQbi
> nOV85YleBJEBU5cXuIOznG4EwHH77f8336+GY8d6mLCg7rKj7ZZWqqHztqEQf68Q
> mtwJhag3pxyW2jqb/fCxYD27oPqgMcLT1lyUobpzu7SrlKKmAIikf8uNU1+8rH+W
> U1C1IsWzvoPK7g7mqlmpk1/6kvlJOWNshTATfQS2A/hMB1Oec3zZTCz+P5S5g+F7
> FT4tB2sR2nwGkWNVPNSs92o0f8y55/u+fAFcbmHkkNrfEt4IuMwsqJNW9i7GzU6b
> uOznq4ZgYw5OxUJh8uXLaA1OFIdPTEcTA4nNRSA7v6cRbfWeaCSGzafOYdGQKV2Y
> 5R7VCZJZe8ALzSUr03FsZ5bilcjdJ3ZyeQNikqeYnQLP+qoH6oRhDT0B2GI2E4+4
> EvfIZCmaDxYG0FClWOQiiO0WeW2kNBWyD3tWCpM63ri//OnoN65NDKsbIpJ+oD8m
> OwxleWQP0eC/5knZSFwB
> =3D7CG9
> -----END PGP SIGNATURE-----
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>

--089e013d1eb4304928051d0b016c
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">+1 =C2=A0Glad to see this work.<div><br></div><div>The Bit=
coin Core wallet is a bit neglected these days - maintained but not advanci=
ng.</div><div><br></div><div><br></div></div><div class=3D"gmail_extra"><br=
><div class=3D"gmail_quote">On Tue, Aug 11, 2015 at 5:02 AM, Jonas Schnelli=
 via bitcoin-dev <span dir=3D"ltr">&lt;<a href=3D"mailto:bitcoin-dev@lists.=
linuxfoundation.org" target=3D"_blank">bitcoin-dev@lists.linuxfoundation.or=
g</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margi=
n:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">-----BEGIN PGP SI=
GNED MESSAGE-----<br>
Hash: SHA256<br>
<br>
Hi<br>
(excuse my english; it=E2=80=99s not my native language)<br>
<br>
As you might noticed, bitcoin-cores wallet didn=E2=80=99t got that much foc=
us<br>
during the last month (even years?).<br>
Wallet development has mostly moved towards SPV (bitcoinj), thin<br>
clients (Electrum), centralized web middleware (Copay, Greenaddress,<br>
etc.).<br>
<br>
Obviously this direction was highly appreciated by users who now can<br>
now run a bitcoin-client (SPV / thin client) on a smartphone or on a<br>
computer with tiny available resources.<br>
<br>
Full validation slowly gets a privilege of people who can manage to<br>
run bitcoin-core on a VPS or different server like system.<br>
Thought, i think, running a full node wallet could be end user<br>
friendly with some changes in the current concept.<br>
<br>
Today a standard user can download a 1080p 10GB movie over iTunes (in<br>
background) and simultaneous play a CPU/GPU extensive 3D game on a<br>
standard computer.<br>
Why do people think (and it might is) running a full node is so painful?<br=
>
<br>
Mainly it could be because bitcoin-core has been focused on doing<br>
validation as quick as possible (okay for a server, not desirable for<br>
a wallet background service).<br>
<br>
I could see the following strategy:<br>
- - end user focused full node wallet would have enabled pruning by<br>
default (~2GB disk usage).<br>
- - throttled validation (flexible CPU usage, user selectable, maybe<br>
~20% by default).<br>
- - throttled block download (bandwidth).<br>
- - SPV during catch up (initial sync as also when catching up multiple<br>
days because user/node was offline).<br>
- - Disable bloom filtering if there is enough bandwith, keep blocks for<br=
>
later validation.<br>
- - when node is in sync, switch from SPV to full validation (maybe<br>
maintain to lists/dbs of wtx or re-validate after full catchup and<br>
display potential conflicts).<br>
- - participate in p2p, but with limits/throttling (service limited<br>
amount of blocks, tx [TBD]).<br>
<br>
Why?<br>
- - This could increase the amount of participating full nodes while<br>
giving users more privacy and security.<br>
- - Create a counterweight against SPV/thin clients (avoid wallet<br>
development centralization, could be helpful once/if attacks agains<br>
SPV/thin clients are becoming real).<br>
- - Slowly complete full validation (can take ~1-2 weeks) and thereforce<br=
>
increase privacy (avoid bloomfilters) and security.<br>
<br>
What about SPV together with a full node?<br>
Sounds good in theory. But who can run a full node (see above)? How is<br>
the channel secured (against MITM, privacy) between the SPV client and<br>
the trusted full node? How hard is it to setup and maintain a secure<br>
tunnel between a smartphone SPV and a full node over the p2p (8333)<br>
channel? How about examine the mempool for fee calculations and<br>
(maybe) upcoming CPFP like approaches, etc.?<br>
<br>
How about smartphones?<br>
Obviously the above solution won=E2=80=99t probably work on a smartphone (t=
o<br>
much bandwidth and CPU usage). But do you carry your whole saving in<br>
your physical wallet with you? Maybe a smartphone does hold keys which<br>
protects low value / daily spendings like a physical wallet (=3DSPV okay).<=
br>
My personal long term vision of that use-case is, that groups of<br>
people who trust each other (a family, etc.) might run one or multiple<br>
full node(s) on a hardened system (something similar to the bitnodes<br>
hardware) where the system could serve smartphones over something like<br>
a stratum server (electrum) or bitpays wallet-service does (index<br>
blockchain, additional wallet services). Every member still holds it=E2=80=
=99s<br>
keys but they trust the connected full node (full nodes does address<br>
index, balance calculation, multisig arrangements and maybe even coin<br>
selection).<br>
<br>
Since about one year i slowly work toward this direction. It took me a<br>
while to commit myself to a strategy (and i still shake from time to<br>
time).<br>
At the moment I am working on a wallet focused bitcoin-core fork with<br>
the ability to re-merge it to the bitcoin-core branch (keep the fork<br>
rebased).<br>
Long term goal is, to decouple the both (wallet / core) by using<br>
bitcoin-core as a library (static or shared) for the wallet side<br>
(which is possible already now)<br>
<br>
To myself: I work in the bitcoin-space full-time and completely<br>
independent (not employed or influenced by a bitcoin related company)<br>
with no business interest, though, i think the acquired know-how can<br>
be valuable within the next serval years. And i won=E2=80=99t have any regr=
ets<br>
if my work turns out to be unless and ends up in trash.<br>
<br>
I have set up this mail to avoid parallelism on a works stream (if<br>
there is any). Of course i would really appreciate if other developers<br>
are willing to join the team by reviewing, concept critism or<br>
contributing code at <a href=3D"https://github.com/jonasschnelli/bitcoin" r=
el=3D"noreferrer" target=3D"_blank">https://github.com/jonasschnelli/bitcoi=
n</a>.<br>
<br>
Any forms of criticism and any ideas are highly appreciated.<br>
<br>
<br>
=E2=80=94<br>
/jonas<br>
-----BEGIN PGP SIGNATURE-----<br>
Version: GnuPG v2<br>
<br>
iQIcBAEBCAAGBQJVyboPAAoJECnUvLZBb1PsgkkQAKySrksCclbfwIsf1L4Jwaxp<br>
nWmUhlXa3lIoxKG3eYZMPVugFX/LFKtmNqypQJ8whUjF2K5ZwIW1Boosl13cBkE9<br>
2EIAMcBrpah0pwzomJ9ViLArl+7t6ksLR5qWJsgJsLnWlaW4c/1KwjGkYTZ6++VC<br>
8O3M3HrdwT3fnrK35XJXTIhpFfRKRFrWcW98vMFt9xw7MUq+enhloGF6Nw4UiQbi<br>
nOV85YleBJEBU5cXuIOznG4EwHH77f8336+GY8d6mLCg7rKj7ZZWqqHztqEQf68Q<br>
mtwJhag3pxyW2jqb/fCxYD27oPqgMcLT1lyUobpzu7SrlKKmAIikf8uNU1+8rH+W<br>
U1C1IsWzvoPK7g7mqlmpk1/6kvlJOWNshTATfQS2A/hMB1Oec3zZTCz+P5S5g+F7<br>
FT4tB2sR2nwGkWNVPNSs92o0f8y55/u+fAFcbmHkkNrfEt4IuMwsqJNW9i7GzU6b<br>
uOznq4ZgYw5OxUJh8uXLaA1OFIdPTEcTA4nNRSA7v6cRbfWeaCSGzafOYdGQKV2Y<br>
5R7VCZJZe8ALzSUr03FsZ5bilcjdJ3ZyeQNikqeYnQLP+qoH6oRhDT0B2GI2E4+4<br>
EvfIZCmaDxYG0FClWOQiiO0WeW2kNBWyD3tWCpM63ri//OnoN65NDKsbIpJ+oD8m<br>
OwxleWQP0eC/5knZSFwB<br>
=3D7CG9<br>
-----END PGP SIGNATURE-----<br>
_______________________________________________<br>
bitcoin-dev mailing list<br>
<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org">bitcoin-dev@lists.=
linuxfoundation.org</a><br>
<a href=3D"https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev" =
rel=3D"noreferrer" target=3D"_blank">https://lists.linuxfoundation.org/mail=
man/listinfo/bitcoin-dev</a><br>
</blockquote></div><br></div>

--089e013d1eb4304928051d0b016c--