summaryrefslogtreecommitdiff
path: root/f5/8927d4ce7a68539c11909053de975dcbcc5b75
blob: 1af76ba4d6797719cb27a780fc4c88bad9affe25 (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
376
377
378
379
380
381
Return-Path: <jameson.lopp@gmail.com>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 6AC0ED23
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Sat, 29 Aug 2015 14:22:05 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-la0-f48.google.com (mail-la0-f48.google.com
	[209.85.215.48])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 9FE6414D
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Sat, 29 Aug 2015 14:22:03 +0000 (UTC)
Received: by labnh1 with SMTP id nh1so22842857lab.3
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Sat, 29 Aug 2015 07:22:01 -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=VBqTUbDu3JVOPUbF5aaN/Nn9mkAw1VwMNdOUvtwiDg0=;
	b=O+dEMOJyqnBGGXREytkUosSgwiGV+iE0WT4/DDjVbrlnLqWG1Q8t1Y4Hify8FLNp7b
	Sdxuvx+boSpRrDMgSS8sRCTfT3A5RgG+EMXgBCAX9UajAP9zMo6VPnf6Kmd+oMbmf/Ig
	lN5XIPrRu/B8dacJ/cBKwocHuh4Wp3vvhD6Z5XgYQH8ziRsX6oWkLnZvu7ABKt2vZ9R2
	JurbWaDnR8q44Zy78qUXBuH49AzD2GOZwpsdDFprW4MeHkwCnNR2WLK8lkIvQhpGqUP4
	JxR8qOspnJUSiZZULmbA3gC8gtE84epoqh7NOzwcCf9UEfuC5cAQq1cmAvZznnTkcGvl
	cstA==
MIME-Version: 1.0
X-Received: by 10.152.6.194 with SMTP id d2mr6923532laa.93.1440858121610; Sat,
	29 Aug 2015 07:22:01 -0700 (PDT)
Received: by 10.25.150.84 with HTTP; Sat, 29 Aug 2015 07:22:01 -0700 (PDT)
In-Reply-To: <55E145EF.3060801@gmail.com>
References: <55E145EF.3060801@gmail.com>
Date: Sat, 29 Aug 2015 10:22:01 -0400
Message-ID: <CADL_X_emr1Dc-+Da4fDnu1DrtK+QHGFX022icV0fzKqqEGZBwg@mail.gmail.com>
From: Jameson Lopp <jameson.lopp@gmail.com>
To: "Justin M. Wray" <wray.justin@gmail.com>
Content-Type: multipart/alternative; boundary=089e013d186a82b3ac051e73ecfa
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 <bitcoin-dev@lists.linuxfoundation.org>
Subject: Re: [bitcoin-dev] Variable Block Size Proposal
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: Sat, 29 Aug 2015 14:22:05 -0000

--089e013d186a82b3ac051e73ecfa
Content-Type: text/plain; charset=UTF-8

I don't think you'll find much support for introducing a mandatory minimum
block size. It's quite wasteful to "pad" blocks with transactions that the
miner is just sending back to themself. If you want to solve the block
propagation issue, I'd recommend instead working on O(1) block propagation.

The Bitcoin Relay Network already allows miners to relay blocks much
faster: http://bitcoinrelaynetwork.org/

The next step would be getting O(1) block propagation into the Bitcoin
protocol. Check out Gavin's proposal:
https://gist.github.com/gavinandresen/e20c3b5a1d4b97f79ac2

- Jameson

On Sat, Aug 29, 2015 at 1:41 AM, Justin M. Wray via bitcoin-dev <
bitcoin-dev@lists.linuxfoundation.org> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA512
>
> Hey Bitcoiners!
>
> While I am an avid Bitcoin supporter, long-term user, and have done
> development work on tools and platforms surrounding Bitcoin, I have
> been very busy these past few weeks and haven't had a chance to fully
> (or closely) monitor the Block Size debate.
>
> I'm familiar with the basics, and have read abstracts about the
> front-running proposals (BIP 100, 101, and 102). Though I've honestly
> not read those in depth either. With that said, I was driving
> the other day and thought of a potential idea. I'll be clear, this is
> just an idea, and I haven't fully fleshed it out. But I thought I'd
> throw it out there and see what people thought.
>
> My Goal:
>
> Provide a variable block size that provides for sustainable, long-term
> growth, and balances the block propagation, while also being mindful
> of potential spam attacks.
>
> The Proposal:
>
> Every 2016 blocks (approximately every two weeks, at the same time the
> difficulty is adjusted), the new block size parameters are calculated.
>
> The calculation determines the average (mean) size of the past 2016
> blocks. This "average" size is then doubled (200%) and used as the
> maximum block size for the subsequent 2016 blocks. At any point, if
> the new maximum size is calculated to be below 1MB, 1MB is used
> instead (which prevents regression from our current state).
>
> Introduce a block minimum, the minimum will be 25% of the current
> maximum, calculated at the same time (that is, every 2016 blocks, at
> the same time the maximum is calculated). All blocks must be at least
> this size in order to be valid, for blocks that do not have enough
> transactions to meet the 25%, padding will be used. This devalues the
> incentive to mine empty blocks in either an attempt to deflate the
> block size, or to obtain a propagation advantage. Miners will be
> incentivized to include transactions, as the block must meet the
> minimum. This should ensure that even miners wishing to always mine
> the minimum are still confirming Bitcoin transactions.
>
> At the block in which this is introduced the maximum would stay at 1MB
> for the subsequent 2016 blocks. With the minimum being enforced of 256KB
> .
>
> Example:
>
>     * Average Block Size for the last 2016 blocks: 724KB
>     * New Maximum: 1448KB
>     * New Minimum: 362KB
>
> Example: (Regression Prevention)
>
>     * Average Block Size for the last 2016 blocks: 250KB
>     * New Maximum: 1MB
>     * New Minimum: 256KB
>
> The Future:
>
> I believe that the 1MB regression prevention might need to be changed
> in the future, to prevent a large mining population from continually
> deflating the block size (and keeping us at the 1MB limit).
>
> For this, the hard limit could be changed in the future manually,
> through a process similar to the current one, though hopefully with
> far less urgency and hysteria.
>
> Another option is to add an additional calculation, preventing the new
> maximum from being lower than 75% of the current maximum. This would
> substantially slow down a block-size deflation attack.
>
>  Example of Block-Size Deflation Attack Prevention:
>
>  * Average Block Size for the last 2016 blocks:  4MB
>  * New Maximum:  8MB
>  * New Minimum:  2MB
>
>  * Average Block Size for the last 2016 blocks:  2MB
>  * New Maximum:  6MB  (2 * 200% = 4, 4< 75% of 8, So use 8 * .75 = 6)
>  * New Minimum:  1.5MB
>
> This would provide a maximum growth of 200% per recalculation, but a
> maximum shrinkage of 75%.
>
> Request For Comments:
>
> I'd love to hear your thoughts. Why wouldn't this work? What portion
> is flawed? Will the miners support such a proposal? Would this even
> solve the block size issue?
>
> I will note that I don't find the 100% and 25% to be hard and fast in
> my idea. Those we're just the values that initially jumped out at me.
> I could easily see the minimum being anything below 50% (above 50% and
> the network can never adjust to smaller block sizes). I could also see
> the maximum being anything over 100%.  Lastly, if a inflation attack
> is a valid concern, a hard upper limit could be set (or the historical
> 32MB limit could remain).
>
> I think the great part about this variable approach is that the
> network can adjust to address spikes in volume and readjust once those
> spikes dissipate.
>
> - --
> Thanks!
>
> - -----
> Justin M. Wray
> -----BEGIN PGP SIGNATURE-----
> Comment: GPGTools - https://gpgtools.org
>
> iQIcBAEBCgAGBQJV4UXvAAoJENo/Q5Xwcn83ZWEP/iXAlNk5p9OlOPNSoHkECcxe
> AcartxMLrmOvAZVudU4+239TEvwPydmYX/ptmBYgrvRJfm/TWmi0ZbTioxbxTIWM
> IlNta1Y8IOHOEgBCtSW01j1PFHIzkBHQGIuqrKHhjcNVGbegXlPm3Da0gjNuTBIe
> IV58gf1OfYK2XjuCMQMvo3VyXUKhqbOvBNnZXr+Qo2sAtanmxHQ+TU/gjA02L9LO
> bb8WqQDj/veGnMexGh/X58tfQ5KCfLO401F7KnConDaFdKVDikp32zaSXZ7JWf/K
> OeseHW1OHHVdYpHvh5VG5GLtYYB5rnq8g7B0/kyx5n4ldB6GkLxzH9CPB0vxpMnZ
> dVCS/+EUe/wkHrpRVNhMwP8XfG+8gv9upKg6H/u39XmpL2H2G4cKeot5xRiWRNqY
> oJclAeIhDTL1bx/9e/VqvM91ESWpBLs+O8Mh9OzgfbN3gKR6BuoWHNwM9jSMDAT1
> YzwdneSvAEFzgELMlae2QIzAUHno9qkHMkDVbdY3bBtSM9Xz4ditGgnq1D40ZZ+J
> zx5WVY7HCebgbk7T35xgKzSKQSEG9zFNW5Dvq66Se3Zpc5vCPw7Q2xwjjPz3zdXQ
> Lub0ohVWTzKr05tN1e/nu6keiY5cXRZ0w2MtHb19jtdWyoHEWWHanfOZjgbVSsuA
> saFCydA7O4E4BFxgtNze
> =JthX
> -----END PGP SIGNATURE-----
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>

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

<div dir=3D"ltr"><div>I don&#39;t think you&#39;ll find much support for in=
troducing a mandatory minimum block size. It&#39;s quite wasteful to &quot;=
pad&quot; blocks with transactions that the miner is just sending back to t=
hemself. If you want to solve the block propagation issue, I&#39;d recommen=
d instead working on O(1) block propagation. <br><br></div>The Bitcoin Rela=
y Network already allows miners to relay blocks much faster: <a href=3D"htt=
p://bitcoinrelaynetwork.org/">http://bitcoinrelaynetwork.org/</a><br><div><=
br>The next step would be getting O(1) block propagation into the Bitcoin p=
rotocol. Check out Gavin&#39;s proposal: <a href=3D"https://gist.github.com=
/gavinandresen/e20c3b5a1d4b97f79ac2">https://gist.github.com/gavinandresen/=
e20c3b5a1d4b97f79ac2</a><br><br></div><div>- Jameson<br></div></div><div cl=
ass=3D"gmail_extra"><br><div class=3D"gmail_quote">On Sat, Aug 29, 2015 at =
1:41 AM, Justin M. Wray via bitcoin-dev <span dir=3D"ltr">&lt;<a href=3D"ma=
ilto:bitcoin-dev@lists.linuxfoundation.org" target=3D"_blank">bitcoin-dev@l=
ists.linuxfoundation.org</a>&gt;</span> wrote:<br><blockquote class=3D"gmai=
l_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left=
:1ex">-----BEGIN PGP SIGNED MESSAGE-----<br>
Hash: SHA512<br>
<br>
Hey Bitcoiners!<br>
<br>
While I am an avid Bitcoin supporter, long-term user, and have done<br>
development work on tools and platforms surrounding Bitcoin, I have<br>
been very busy these past few weeks and haven&#39;t had a chance to fully<b=
r>
(or closely) monitor the Block Size debate.<br>
<br>
I&#39;m familiar with the basics, and have read abstracts about the<br>
front-running proposals (BIP 100, 101, and 102). Though I&#39;ve honestly<b=
r>
not read those in depth either. With that said, I was driving<br>
the other day and thought of a potential idea. I&#39;ll be clear, this is<b=
r>
just an idea, and I haven&#39;t fully fleshed it out. But I thought I&#39;d=
<br>
throw it out there and see what people thought.<br>
<br>
My Goal:<br>
<br>
Provide a variable block size that provides for sustainable, long-term<br>
growth, and balances the block propagation, while also being mindful<br>
of potential spam attacks.<br>
<br>
The Proposal:<br>
<br>
Every 2016 blocks (approximately every two weeks, at the same time the<br>
difficulty is adjusted), the new block size parameters are calculated.<br>
<br>
The calculation determines the average (mean) size of the past 2016<br>
blocks. This &quot;average&quot; size is then doubled (200%) and used as th=
e<br>
maximum block size for the subsequent 2016 blocks. At any point, if<br>
the new maximum size is calculated to be below 1MB, 1MB is used<br>
instead (which prevents regression from our current state).<br>
<br>
Introduce a block minimum, the minimum will be 25% of the current<br>
maximum, calculated at the same time (that is, every 2016 blocks, at<br>
the same time the maximum is calculated). All blocks must be at least<br>
this size in order to be valid, for blocks that do not have enough<br>
transactions to meet the 25%, padding will be used. This devalues the<br>
incentive to mine empty blocks in either an attempt to deflate the<br>
block size, or to obtain a propagation advantage. Miners will be<br>
incentivized to include transactions, as the block must meet the<br>
minimum. This should ensure that even miners wishing to always mine<br>
the minimum are still confirming Bitcoin transactions.<br>
<br>
At the block in which this is introduced the maximum would stay at 1MB<br>
for the subsequent 2016 blocks. With the minimum being enforced of 256KB<br=
>
.<br>
<br>
Example:<br>
<br>
=C2=A0 =C2=A0 * Average Block Size for the last 2016 blocks: 724KB<br>
=C2=A0 =C2=A0 * New Maximum: 1448KB<br>
=C2=A0 =C2=A0 * New Minimum: 362KB<br>
<br>
Example: (Regression Prevention)<br>
<br>
=C2=A0 =C2=A0 * Average Block Size for the last 2016 blocks: 250KB<br>
=C2=A0 =C2=A0 * New Maximum: 1MB<br>
=C2=A0 =C2=A0 * New Minimum: 256KB<br>
<br>
The Future:<br>
<br>
I believe that the 1MB regression prevention might need to be changed<br>
in the future, to prevent a large mining population from continually<br>
deflating the block size (and keeping us at the 1MB limit).<br>
<br>
For this, the hard limit could be changed in the future manually,<br>
through a process similar to the current one, though hopefully with<br>
far less urgency and hysteria.<br>
<br>
Another option is to add an additional calculation, preventing the new<br>
maximum from being lower than 75% of the current maximum. This would<br>
substantially slow down a block-size deflation attack.<br>
<br>
=C2=A0Example of Block-Size Deflation Attack Prevention:<br>
<br>
=C2=A0* Average Block Size for the last 2016 blocks:=C2=A0 4MB<br>
=C2=A0* New Maximum:=C2=A0 8MB<br>
=C2=A0* New Minimum:=C2=A0 2MB<br>
<br>
=C2=A0* Average Block Size for the last 2016 blocks:=C2=A0 2MB<br>
=C2=A0* New Maximum:=C2=A0 6MB=C2=A0 (2 * 200% =3D 4, 4&lt; 75% of 8, So us=
e 8 * .75 =3D 6)<br>
=C2=A0* New Minimum:=C2=A0 1.5MB<br>
<br>
This would provide a maximum growth of 200% per recalculation, but a<br>
maximum shrinkage of 75%.<br>
<br>
Request For Comments:<br>
<br>
I&#39;d love to hear your thoughts. Why wouldn&#39;t this work? What portio=
n<br>
is flawed? Will the miners support such a proposal? Would this even<br>
solve the block size issue?<br>
<br>
I will note that I don&#39;t find the 100% and 25% to be hard and fast in<b=
r>
my idea. Those we&#39;re just the values that initially jumped out at me.<b=
r>
I could easily see the minimum being anything below 50% (above 50% and<br>
the network can never adjust to smaller block sizes). I could also see<br>
the maximum being anything over 100%.=C2=A0 Lastly, if a inflation attack<b=
r>
is a valid concern, a hard upper limit could be set (or the historical<br>
32MB limit could remain).<br>
<br>
I think the great part about this variable approach is that the<br>
network can adjust to address spikes in volume and readjust once those<br>
spikes dissipate.<br>
<br>
- --<br>
Thanks!<br>
<br>
- -----<br>
Justin M. Wray<br>
-----BEGIN PGP SIGNATURE-----<br>
Comment: GPGTools - <a href=3D"https://gpgtools.org" rel=3D"noreferrer" tar=
get=3D"_blank">https://gpgtools.org</a><br>
<br>
iQIcBAEBCgAGBQJV4UXvAAoJENo/Q5Xwcn83ZWEP/iXAlNk5p9OlOPNSoHkECcxe<br>
AcartxMLrmOvAZVudU4+239TEvwPydmYX/ptmBYgrvRJfm/TWmi0ZbTioxbxTIWM<br>
IlNta1Y8IOHOEgBCtSW01j1PFHIzkBHQGIuqrKHhjcNVGbegXlPm3Da0gjNuTBIe<br>
IV58gf1OfYK2XjuCMQMvo3VyXUKhqbOvBNnZXr+Qo2sAtanmxHQ+TU/gjA02L9LO<br>
bb8WqQDj/veGnMexGh/X58tfQ5KCfLO401F7KnConDaFdKVDikp32zaSXZ7JWf/K<br>
OeseHW1OHHVdYpHvh5VG5GLtYYB5rnq8g7B0/kyx5n4ldB6GkLxzH9CPB0vxpMnZ<br>
dVCS/+EUe/wkHrpRVNhMwP8XfG+8gv9upKg6H/u39XmpL2H2G4cKeot5xRiWRNqY<br>
oJclAeIhDTL1bx/9e/VqvM91ESWpBLs+O8Mh9OzgfbN3gKR6BuoWHNwM9jSMDAT1<br>
YzwdneSvAEFzgELMlae2QIzAUHno9qkHMkDVbdY3bBtSM9Xz4ditGgnq1D40ZZ+J<br>
zx5WVY7HCebgbk7T35xgKzSKQSEG9zFNW5Dvq66Se3Zpc5vCPw7Q2xwjjPz3zdXQ<br>
Lub0ohVWTzKr05tN1e/nu6keiY5cXRZ0w2MtHb19jtdWyoHEWWHanfOZjgbVSsuA<br>
saFCydA7O4E4BFxgtNze<br>
=3DJthX<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>

--089e013d186a82b3ac051e73ecfa--