summaryrefslogtreecommitdiff
path: root/f2/4ebfce2f171a85aca0d3ef99b131fa76ca6baf
blob: 4773497eb07494f54d8122b0083159a8ed071a1a (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
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
Return-Path: <akiva.lichtner@gmail.com>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 45CC9EB4
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Thu, 10 Dec 2015 04:04:19 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-qg0-f49.google.com (mail-qg0-f49.google.com
	[209.85.192.49])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 0EE82151
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Thu, 10 Dec 2015 04:04:18 +0000 (UTC)
Received: by qgec40 with SMTP id c40so118245614qge.2
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Wed, 09 Dec 2015 20:04:17 -0800 (PST)
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=669lmVKyRia1hRc6jqj/qqKDXwR76c14MBfV5/uN0js=;
	b=wjUlHWy07RXEvb+Kn9t8R/1vg6ij4/I7fngeyK7t8epeGujj70X4zPoq7pA82CdSPn
	LMlGJKrlOMjkoYLE01U+qzeroyhokGqacrnaxasKo70bFio7cBAH4u5J6tMzV9NzeOxO
	5xTwbUZcbjjgwZWJJACT4Sw2ZQYrJC9+4SR6WELvYTuyjO2+5LCPokI/MuLjNu+D32re
	11xUTfFfIx2GWfYRGBKxAO8eJ3/xozkdU4Vi4EwqLHrvCM94dzqOp65VN/VStgkxJmVj
	8VNloHDryNNuWwYZssHPvriZshPxWNcgLGj/824Ti5ofqOiDicq6Dp842gatjeVoEiql
	G9gA==
MIME-Version: 1.0
X-Received: by 10.140.43.135 with SMTP id e7mr12312056qga.11.1449720257261;
	Wed, 09 Dec 2015 20:04:17 -0800 (PST)
Received: by 10.140.101.112 with HTTP; Wed, 9 Dec 2015 20:04:17 -0800 (PST)
In-Reply-To: <CAJmQggBfYyk3cPAL57NZ3ecPG_ZxffjPftc0-EkTzKagjodgNQ@mail.gmail.com>
References: <CABCnA7Wqz76m8qo5BYT41Z=hBH+fUfOc4xsFAGg=Niv7Jgkqsg@mail.gmail.com>
	<CAJmQggC1X5Lgt4xGoMtBZ_v3hC2GXcYaj2FngV2_7A=TDfSuEg@mail.gmail.com>
	<CABCnA7VAO2XKLwd4axaYcttUHzhvXXEvYrwg7XDKH9nfo1k7RA@mail.gmail.com>
	<CAJmQggBfYyk3cPAL57NZ3ecPG_ZxffjPftc0-EkTzKagjodgNQ@mail.gmail.com>
Date: Wed, 9 Dec 2015 23:04:17 -0500
Message-ID: <CABCnA7VOknCC6j5HAazW31jx8kGqiM0t0+Qo8QydShzESV2HkQ@mail.gmail.com>
From: Akiva Lichtner <akiva.lichtner@gmail.com>
To: Loi Luu <loi.luuthe@gmail.com>
Content-Type: multipart/alternative; boundary=001a113a986ef538bc0526834c44
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
X-Mailman-Approved-At: Thu, 10 Dec 2015 04:33:55 +0000
Cc: Bitcoin Dev <bitcoin-dev@lists.linuxfoundation.org>
Subject: Re: [bitcoin-dev] Scaling by Partitioning
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: Thu, 10 Dec 2015 04:04:19 -0000

--001a113a986ef538bc0526834c44
Content-Type: text/plain; charset=UTF-8

It's an interval (a,b) where a, b are between 0 and 21*10^6*10^8 .

Somebody pointed out that this is not easily accomplished using the current
code because there are no coin ids.


On Wed, Dec 9, 2015 at 4:16 PM, Loi Luu <loi.luuthe@gmail.com> wrote:

> I guess the most basic question is how do you define a coin here?
>
> Thanks,
> Loi Luu
> On 10 Dec 2015 2:26 a.m., "Akiva Lichtner" <akiva.lichtner@gmail.com>
> wrote:
>
>> Thanks for giving serious consideration to my post.
>>
>> With regard to your question "if a transaction spends a "coin" that
>> ends in "1" and creates a new coin that ends in "1", which partition
>> should process the transaction?", I would answer that only one
>> partition is involved. In other words, there are N independent block
>> chains that never cross paths.
>>
>> With regard to your question "what is the prior data needed to
>> validate that kind of TXs?" I do not understand what this means. If
>> you can dumb it down a bit that would be good because there could be
>> some interesting concern in this question.
>>
>> Since partitions are completely segregated, there is no need for a
>> node to work on multiple partitions simultaneously. For attacks to be
>> defeated a node needs to be able to work on multiple partitions in
>> turn, not at the same time. The reason is because if the computing
>> power of the good-faith nodes is unbalanced this gives attackers an
>> unfair advantage.
>>
>> On 12/9/15, Loi Luu via bitcoin-dev
>> <bitcoin-dev@lists.linuxfoundation.org> wrote:
>> > Dear Akiva,
>> >
>> > Its Loi Luu, one of the authors of the SCP protocol (
>> > http://eprint.iacr.org/2015/1168.pdf ).
>> >
>> > Before SCP, we had been thinking hard about how to do sharding
>> efficiently
>> > without degrading any security guarantee. A simple solution which splits
>> > the coins, or TXs in to several partitions will just not work. You have
>> to
>> > answer more questions to have a good solutions. For example, I wonder in
>> > your proposal, if a transaction spends a "coin" that ends in "1" and
>> > creates a new coin that ends in "1", which partition should process the
>> > transaction? What is the prior data needed to validate that kind of TXs?
>> >
>> > The problem with other proposals, and probably yours as well,  that we
>> see
>> > is that the amount of data that you need to broadcast immediately to the
>> > network increases linearly with the number of TXs that the network can
>> > process. Thus, sharding does not bring any advantage than simply using
>> > other techniques to publish more blocks in one epoch (like Bitcoin-NG,
>> > Ghost). The whole point of using sharding/ partition is to localize
>> > the bandwidth used, and only broadcast only a minimal data to the
>> network.
>> >
>> > Clearly we are able to localize the bandwidth used with our SCP
>> protocol.
>> > The cost is that now recipients need to  themselves verify whether a
>> > transaction is double spending. However, we think that it is a
>> reasonable
>> > tradeoff, given the potential scalability that SCP can provides.
>> >
>> > Thanks,
>> > Loi Luu.
>> >
>> > On Wed, Dec 9, 2015 at 12:27 AM, Akiva Lichtner via bitcoin-dev <
>> > bitcoin-dev@lists.linuxfoundation.org> wrote:
>> >
>> >> Hello,
>> >>
>> >> I am seeking some expert feedback on an idea for scaling Bitcoin. As a
>> >> brief introduction: I work in the payment industry and I have twenty
>> >> years'
>> >> experience in development. I have some experience with process groups
>> and
>> >> ordering protocols too. I think I understand Satoshi's paper but I
>> admit
>> >> I
>> >> have not read the source code.
>> >>
>> >> The idea is to run more than one simultaneous chain, each chain
>> defeating
>> >> double spending on only part of the coin. The coin would be partitioned
>> >> by
>> >> radix (or modulus, not sure what to call it.) For example in order to
>> >> multiply throughput by a factor of ten you could run ten parallel
>> chains,
>> >> one would work on coin that ends in "0", one on coin that ends in "1",
>> >> and
>> >> so on up to "9".
>> >>
>> >> The number of chains could increase automatically over time based on
>> the
>> >> moving average of transaction volume.
>> >>
>> >> Blocks would have to contain the number of the partition they belong
>> to,
>> >> and miners would have to round-robin through partitions so that an
>> >> attacker
>> >> would not have an unfair advantage working on just one partition.
>> >>
>> >> I don't think there is much impact to miners, but clients would have to
>> >> send more than one message in order to spend money. Client messages
>> will
>> >> need to enumerate coin using some sort of compression, to save space.
>> >> This
>> >> seems okay to me since often in computing client software does have to
>> >> break things up in equal parts (e.g. memory pages, file system blocks,)
>> >> and
>> >> the client software could hide the details.
>> >>
>> >> Best wishes for continued success to the project.
>> >>
>> >> Regards,
>> >> Akiva
>> >>
>> >> P.S. I found a funny anagram for SATOSHI NAKAMOTO: "NSA IS OOOK AT
>> MATH"
>> >>
>> >>
>> >> _______________________________________________
>> >> bitcoin-dev mailing list
>> >> bitcoin-dev@lists.linuxfoundation.org
>> >> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>> >>
>> >>
>> >
>>
>

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

<div dir=3D"ltr"><div>It&#39;s an interval (a,b) where a, b are between 0 a=
nd 21*10^6*10^8 .<br><br></div><div>Somebody pointed out that this is not e=
asily accomplished using the current code because there are no coin ids.<br=
><br></div></div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">=
On Wed, Dec 9, 2015 at 4:16 PM, Loi Luu <span dir=3D"ltr">&lt;<a href=3D"ma=
ilto:loi.luuthe@gmail.com" target=3D"_blank">loi.luuthe@gmail.com</a>&gt;</=
span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8e=
x;border-left:1px #ccc solid;padding-left:1ex"><p dir=3D"ltr">I guess the m=
ost basic question is how do you define a coin here?</p>
<p dir=3D"ltr">Thanks,<br>
Loi Luu</p>
<div class=3D"gmail_quote">On 10 Dec 2015 2:26 a.m., &quot;Akiva Lichtner&q=
uot; &lt;<a href=3D"mailto:akiva.lichtner@gmail.com" target=3D"_blank">akiv=
a.lichtner@gmail.com</a>&gt; wrote:<br type=3D"attribution"><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pa=
dding-left:1ex">Thanks for giving serious consideration to my post.<br>
<br>
With regard to your question &quot;if a transaction spends a &quot;coin&quo=
t; that<br>
ends in &quot;1&quot; and creates a new coin that ends in &quot;1&quot;, wh=
ich partition<br>
should process the transaction?&quot;, I would answer that only one<br>
partition is involved. In other words, there are N independent block<br>
chains that never cross paths.<br>
<br>
With regard to your question &quot;what is the prior data needed to<br>
validate that kind of TXs?&quot; I do not understand what this means. If<br=
>
you can dumb it down a bit that would be good because there could be<br>
some interesting concern in this question.<br>
<br>
Since partitions are completely segregated, there is no need for a<br>
node to work on multiple partitions simultaneously. For attacks to be<br>
defeated a node needs to be able to work on multiple partitions in<br>
turn, not at the same time. The reason is because if the computing<br>
power of the good-faith nodes is unbalanced this gives attackers an<br>
unfair advantage.<br>
<br>
On 12/9/15, Loi Luu via bitcoin-dev<br>
&lt;<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" target=3D"_bla=
nk">bitcoin-dev@lists.linuxfoundation.org</a>&gt; wrote:<br>
&gt; Dear Akiva,<br>
&gt;<br>
&gt; Its Loi Luu, one of the authors of the SCP protocol (<br>
&gt; <a href=3D"http://eprint.iacr.org/2015/1168.pdf" rel=3D"noreferrer" ta=
rget=3D"_blank">http://eprint.iacr.org/2015/1168.pdf</a> ).<br>
&gt;<br>
&gt; Before SCP, we had been thinking hard about how to do sharding efficie=
ntly<br>
&gt; without degrading any security guarantee. A simple solution which spli=
ts<br>
&gt; the coins, or TXs in to several partitions will just not work. You hav=
e to<br>
&gt; answer more questions to have a good solutions. For example, I wonder =
in<br>
&gt; your proposal, if a transaction spends a &quot;coin&quot; that ends in=
 &quot;1&quot; and<br>
&gt; creates a new coin that ends in &quot;1&quot;, which partition should =
process the<br>
&gt; transaction? What is the prior data needed to validate that kind of TX=
s?<br>
&gt;<br>
&gt; The problem with other proposals, and probably yours as well,=C2=A0 th=
at we see<br>
&gt; is that the amount of data that you need to broadcast immediately to t=
he<br>
&gt; network increases linearly with the number of TXs that the network can=
<br>
&gt; process. Thus, sharding does not bring any advantage than simply using=
<br>
&gt; other techniques to publish more blocks in one epoch (like Bitcoin-NG,=
<br>
&gt; Ghost). The whole point of using sharding/ partition is to localize<br=
>
&gt; the bandwidth used, and only broadcast only a minimal data to the netw=
ork.<br>
&gt;<br>
&gt; Clearly we are able to localize the bandwidth used with our SCP protoc=
ol.<br>
&gt; The cost is that now recipients need to=C2=A0 themselves verify whethe=
r a<br>
&gt; transaction is double spending. However, we think that it is a reasona=
ble<br>
&gt; tradeoff, given the potential scalability that SCP can provides.<br>
&gt;<br>
&gt; Thanks,<br>
&gt; Loi Luu.<br>
&gt;<br>
&gt; On Wed, Dec 9, 2015 at 12:27 AM, Akiva Lichtner via bitcoin-dev &lt;<b=
r>
&gt; <a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" target=3D"_bl=
ank">bitcoin-dev@lists.linuxfoundation.org</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; Hello,<br>
&gt;&gt;<br>
&gt;&gt; I am seeking some expert feedback on an idea for scaling Bitcoin. =
As a<br>
&gt;&gt; brief introduction: I work in the payment industry and I have twen=
ty<br>
&gt;&gt; years&#39;<br>
&gt;&gt; experience in development. I have some experience with process gro=
ups and<br>
&gt;&gt; ordering protocols too. I think I understand Satoshi&#39;s paper b=
ut I admit<br>
&gt;&gt; I<br>
&gt;&gt; have not read the source code.<br>
&gt;&gt;<br>
&gt;&gt; The idea is to run more than one simultaneous chain, each chain de=
feating<br>
&gt;&gt; double spending on only part of the coin. The coin would be partit=
ioned<br>
&gt;&gt; by<br>
&gt;&gt; radix (or modulus, not sure what to call it.) For example in order=
 to<br>
&gt;&gt; multiply throughput by a factor of ten you could run ten parallel =
chains,<br>
&gt;&gt; one would work on coin that ends in &quot;0&quot;, one on coin tha=
t ends in &quot;1&quot;,<br>
&gt;&gt; and<br>
&gt;&gt; so on up to &quot;9&quot;.<br>
&gt;&gt;<br>
&gt;&gt; The number of chains could increase automatically over time based =
on the<br>
&gt;&gt; moving average of transaction volume.<br>
&gt;&gt;<br>
&gt;&gt; Blocks would have to contain the number of the partition they belo=
ng to,<br>
&gt;&gt; and miners would have to round-robin through partitions so that an=
<br>
&gt;&gt; attacker<br>
&gt;&gt; would not have an unfair advantage working on just one partition.<=
br>
&gt;&gt;<br>
&gt;&gt; I don&#39;t think there is much impact to miners, but clients woul=
d have to<br>
&gt;&gt; send more than one message in order to spend money. Client message=
s will<br>
&gt;&gt; need to enumerate coin using some sort of compression, to save spa=
ce.<br>
&gt;&gt; This<br>
&gt;&gt; seems okay to me since often in computing client software does hav=
e to<br>
&gt;&gt; break things up in equal parts (e.g. memory pages, file system blo=
cks,)<br>
&gt;&gt; and<br>
&gt;&gt; the client software could hide the details.<br>
&gt;&gt;<br>
&gt;&gt; Best wishes for continued success to the project.<br>
&gt;&gt;<br>
&gt;&gt; Regards,<br>
&gt;&gt; Akiva<br>
&gt;&gt;<br>
&gt;&gt; P.S. I found a funny anagram for SATOSHI NAKAMOTO: &quot;NSA IS OO=
OK AT MATH&quot;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; bitcoin-dev mailing list<br>
&gt;&gt; <a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" target=3D=
"_blank">bitcoin-dev@lists.linuxfoundation.org</a><br>
&gt;&gt; <a href=3D"https://lists.linuxfoundation.org/mailman/listinfo/bitc=
oin-dev" rel=3D"noreferrer" target=3D"_blank">https://lists.linuxfoundation=
.org/mailman/listinfo/bitcoin-dev</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
</blockquote></div>
</blockquote></div><br></div>

--001a113a986ef538bc0526834c44--