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
|
Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191]
helo=mx.sourceforge.net)
by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76)
(envelope-from <pieter.wuille@gmail.com>) id 1YqCmT-0006U6-AI
for bitcoin-development@lists.sourceforge.net;
Thu, 07 May 2015 03:47:25 +0000
Received-SPF: pass (sog-mx-1.v43.ch3.sourceforge.com: domain of gmail.com
designates 209.85.217.169 as permitted sender)
client-ip=209.85.217.169; envelope-from=pieter.wuille@gmail.com;
helo=mail-lb0-f169.google.com;
Received: from mail-lb0-f169.google.com ([209.85.217.169])
by sog-mx-1.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128)
(Exim 4.76) id 1YqCmR-0006br-9v
for bitcoin-development@lists.sourceforge.net;
Thu, 07 May 2015 03:47:25 +0000
Received: by lbbuc2 with SMTP id uc2so21736264lbb.2
for <bitcoin-development@lists.sourceforge.net>;
Wed, 06 May 2015 20:47:16 -0700 (PDT)
MIME-Version: 1.0
X-Received: by 10.152.203.162 with SMTP id kr2mr1418292lac.68.1430970436773;
Wed, 06 May 2015 20:47:16 -0700 (PDT)
Received: by 10.112.19.7 with HTTP; Wed, 6 May 2015 20:47:16 -0700 (PDT)
In-Reply-To: <554A91BE.6060105@bluematt.me>
References: <554A91BE.6060105@bluematt.me>
Date: Thu, 7 May 2015 05:47:16 +0200
Message-ID: <CAPg+sBgKqsb7NRj4kxbqkbhJac12GeOMY-oJbZyS1zZMuDhA4g@mail.gmail.com>
From: Pieter Wuille <pieter.wuille@gmail.com>
To: Matt Corallo <bitcoin-list@bluematt.me>
Content-Type: multipart/alternative; boundary=001a11346326916f47051575c45c
X-Spam-Score: -0.6 (/)
X-Spam-Report: Spam Filtering performed by mx.sourceforge.net.
See http://spamassassin.org/tag/ for more details.
-1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for
sender-domain
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
(pieter.wuille[at]gmail.com)
-0.0 SPF_PASS SPF: sender matches SPF record
1.0 HTML_MESSAGE BODY: HTML included in message
-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from
author's domain
0.1 DKIM_SIGNED Message has a DKIM or DK signature,
not necessarily valid
-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
X-Headers-End: 1YqCmR-0006br-9v
Cc: Bitcoin Dev <bitcoin-development@lists.sourceforge.net>
Subject: Re: [Bitcoin-development] Block Size Increase
X-BeenThere: bitcoin-development@lists.sourceforge.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: <bitcoin-development.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
<mailto:bitcoin-development-request@lists.sourceforge.net?subject=unsubscribe>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development>
List-Post: <mailto:bitcoin-development@lists.sourceforge.net>
List-Help: <mailto:bitcoin-development-request@lists.sourceforge.net?subject=help>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
<mailto:bitcoin-development-request@lists.sourceforge.net?subject=subscribe>
X-List-Received-Date: Thu, 07 May 2015 03:47:25 -0000
--001a11346326916f47051575c45c
Content-Type: text/plain; charset=ISO-8859-1
On Thu, May 7, 2015 at 12:12 AM, Matt Corallo <bitcoin-list@bluematt.me>
wrote:
> Recently there has been a flurry of posts by Gavin at
> http://gavinandresen.svbtle.com/ which advocate strongly for increasing
> the maximum block size. However, there hasnt been any discussion on this
> mailing list in several years as far as I can tell.
>
Thanks for bringing this up. I'll try to keep my arguments brief, to avoid
a long wall of text. I may be re-iterating some things that have been said
before, though.
I am - in general - in favor of increasing the size blocks: as technology
grows, there is no reason why the systems built on them can't scale
proportionally. I have so far not commented much about this, in a hope to
avoid getting into a public debate, but the way seems to be going now,
worries me greatly.
* Controversial hard forks. I hope the mailing list here today already
proves it is a controversial issue. Independent of personal opinions pro or
against, I don't think we can do a hard fork that is controversial in
nature. Either the result is effectively a fork, and pre-existing coins can
be spent once on both sides (effectively failing Bitcoin's primary
purpose), or the result is one side forced to upgrade to something they
dislike - effectively giving a power to developers they should never have.
Quoting someone: "I did not sign up to be part of a central banker's
committee".
* The reason for increasing is "need". If "we need more space in blocks" is
the reason to do an upgrade, it won't stop after 20 MB. There is nothing
fundamental possible with 20 MB blocks that isn't with 1 MB blocks.
Changetip does not put their microtransactions on the chain, not with 1 MB,
and I doubt they would with 20 MB blocks. The reason for increase should be
"because we choose to accept the trade-offs".
* Misrepresentation of the trade-offs. You can argue all you want that none
of the effects of larger blocks are particularly damaging, so everything is
fine. They will damage something (see below for details), and we should
analyze these effects, and be honest about them, and present them as a
trade-off made we choose to make to scale the system better. If you just
ask people if they want more transactions, of course you'll hear yes. If
you ask people if they want to pay less taxes, I'm sure the vast majority
will agree as well.
* Miner centralization. There is currently, as far as I know, no technology
that can relay and validate 20 MB blocks across the planet, in a manner
fast enough to avoid very significant costs to mining. There is work in
progress on this (including Gavin's IBLT-based relay, or Greg's block
network coding), but I don't think we should be basing the future of the
economics of the system on undemonstrated ideas. Without those (or even
with), the result may be that miners self-limit the size of their blocks to
propagate faster, but if this happens, larger, better-connected, and more
centrally-located groups of miners gain a competitive advantage by being
able to produce larger blocks. I would like to point out that there is
nothing evil about this - a simple feedback to determine an optimal block
size for an individual miner will result in larger blocks for better
connected hash power. If we do not want miners to have this ability, "we"
(as in: those using full nodes) should demand limitations that prevent it.
One such limitation is a block size limit (whatever it is).
* Ability to use a full node. I very much dislike the trend of people
saying "we need to encourage people to run full nodes, in order to make the
network more decentralized". Running 1000 nodes which are otherwise unused
only gives some better ability for full nodes to download the block chain,
or for SPV nodes to learn about transactions (or be Sybil-attacked...).
However, *using* a full node for validating your business (or personal!)
transactions empowers you to using a financial system that requires less
trust in *anyone* (not even in a decentralized group of peers) than
anything else. Moreover, using a full node is what given you power of the
systems' rules, as anyone who wants to change it now needs to convince you
to upgrade. And yes, 20 MB blocks will change people's ability to use full
nodes, even if the costs are small.
* Skewed incentives for improvements. I think I can personally say that I'm
responsible for most of the past years' performance improvements in Bitcoin
Core. And there is a lot of room for improvement left there - things like
silly waiting loops, single-threaded network processing, huge memory sinks,
lock contention, ... which in my opinion don't nearly get the attention
they deserve. This is in addition to more pervasive changes like optimizing
the block transfer protocol, support for orthogonal systems with a
different security/scalability trade-off like Lightning, making full
validation optional, ... Call me cynical, but without actual pressure to
work on these, I doubt much will change. Increasing the size of blocks now
will simply make it cheap enough to continue business as usual for a while
- while forcing a massive cost increase (and not just a monetary one) on
the entire ecosystem.
* Fees and long-term incentives. I put this last, not because I don't think
it is not serious, but because I don't understand nearly enough about it.
I'll let others comment.
I don't think 1 MB is optimal. Block size is a compromise between
scalability of transactions and verifiability of the system. A system with
10 transactions per day that is verifiable by a pocket calculator is not
useful, as it would only serve a few large bank's settlements. A system
which can deal with every coffee bought on the planet, but requires a
Google-scale data center to verify is also not useful, as it would be
trivially out-competed by a VISA-like design. The usefulness needs in a
balance, and there is no optimal choice for everyone. We can choose where
that balance lies, but we must accept that this is done as a trade-off, and
that that trade-off will have costs such as hardware costs, decreasing
anonymity, less independence, smaller target audience for people able to
fully validate, ...
Choose wisely.
Thanks for reading this,
--
Pieter
--001a11346326916f47051575c45c
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Thu, May 7, 2015 at 12:12 AM, Matt Corallo <span dir=3D=
"ltr"><<a href=3D"mailto:bitcoin-list@bluematt.me" target=3D"_blank">bit=
coin-list@bluematt.me</a>></span> wrote:<br><div class=3D"gmail_extra"><=
div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin=
:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"=
>Recently there has been a flurry of posts by Gavin at<br>
<a href=3D"http://gavinandresen.svbtle.com/" target=3D"_blank">http://gavin=
andresen.svbtle.com/</a> which advocate strongly for increasing<br>
the maximum block size. However, there hasnt been any discussion on this<br=
>
mailing list in several years as far as I can tell.<br></blockquote><div><b=
r></div><div>Thanks for bringing this up. I'll try to keep my arguments=
brief, to avoid a long wall of text. I may be re-iterating some things tha=
t have been said before, though.<br><br></div><div>I am - in general - in f=
avor of increasing the size blocks: as technology grows, there is no reason=
why the systems built on them can't scale proportionally. I have so fa=
r not commented much about this, in a hope to avoid getting into a public d=
ebate, but the way seems to be going now, worries me greatly.<br><br></div>=
<div>* Controversial hard forks. I hope the mailing list here today already=
proves it is a controversial issue. Independent of personal opinions pro o=
r against, I don't think we can do a hard fork that is controversial in=
nature. Either the result is effectively a fork, and pre-existing coins ca=
n be spent once on both sides (effectively failing Bitcoin's primary pu=
rpose), or the result is one side forced to upgrade to something they disli=
ke - effectively giving a power to developers they should never have. Quoti=
ng someone: "I did not sign up to be part of a central banker's co=
mmittee".<br><br></div><div>* The reason for increasing is "need&=
quot;. If "we need more space in blocks" is the reason to do an u=
pgrade, it won't stop after 20 MB. There is nothing fundamental possibl=
e with 20 MB blocks that isn't with 1 MB blocks. Changetip does not put=
their microtransactions on the chain, not with 1 MB, and I doubt they woul=
d with 20 MB blocks. The reason for increase should be "because we cho=
ose to accept the trade-offs".<br><br></div><div>* Misrepresentation o=
f the trade-offs. You can argue all you want that none of the effects of la=
rger blocks are particularly damaging, so everything is fine. They will dam=
age something (see below for details), and we should analyze these effects,=
and be honest about them, and present them as a trade-off made we choose t=
o make to scale the system better. If you just ask people if they want more=
transactions, of course you'll hear yes. If you ask people if they wan=
t to pay less taxes, I'm sure the vast majority will agree as well.<br>=
<br></div><div>* Miner centralization. There is currently, as far as I know=
, no technology that can relay and validate 20 MB blocks across the planet,=
in a manner fast enough to avoid very significant costs to mining. There i=
s work in progress on this (including Gavin's IBLT-based relay, or Greg=
's block network coding), but I don't think we should be basing the=
future of the economics of the system on undemonstrated ideas. Without tho=
se (or even with), the result may be that miners self-limit the size of the=
ir blocks to propagate faster, but if this happens, larger, better-connecte=
d, and more centrally-located groups of miners gain a competitive advantage=
by being able to produce larger blocks. I would like to point out that the=
re is nothing evil about this - a simple feedback to determine an optimal b=
lock size for an individual miner will result in larger blocks for better c=
onnected hash power. If we do not want miners to have this ability, "w=
e" (as in: those using full nodes) should demand limitations that prev=
ent it. One such limitation is a block size limit (whatever it is).<br><br>=
</div><div>* Ability to use a full node. I very much dislike the trend of p=
eople saying "we need to encourage people to run full nodes, in order =
to make the network more decentralized". Running 1000 nodes which are =
otherwise unused only gives some better ability for full nodes to download =
the block chain, or for SPV nodes to learn about transactions (or be Sybil-=
attacked...). However, *using* a full node for validating your business (or=
personal!) transactions empowers you to using a financial system that requ=
ires less trust in *anyone* (not even in a decentralized group of peers) th=
an anything else. Moreover, using a full node is what given you power of th=
e systems' rules, as anyone who wants to change it now needs to convinc=
e you to upgrade. And yes, 20 MB blocks will change people's ability to=
use full nodes, even if the costs are small. <br><br></div><div>* Skewed i=
ncentives for improvements. I think I can personally say that I'm respo=
nsible for most of the past years' performance improvements in Bitcoin =
Core. And there is a lot of room for improvement left there - things like s=
illy waiting loops, single-threaded network processing, huge memory sinks, =
lock contention, ... which in my opinion don't nearly get the attention=
they deserve. This is in addition to more pervasive changes like optimizin=
g the block transfer protocol, support for orthogonal systems with a differ=
ent security/scalability trade-off like Lightning, making full validation o=
ptional, ... Call me cynical, but without actual pressure to work on these,=
I doubt much will change. Increasing the size of blocks now will simply ma=
ke it cheap enough to continue business as usual for a while - while forcin=
g a massive cost increase (and not just a monetary one) on the entire ecosy=
stem.<br><br></div><div>* Fees and long-term incentives. I put this last, n=
ot because I don't think it is not serious, but because I don't und=
erstand nearly enough about it. I'll let others comment.<br><br></div><=
div>I don't think 1 MB is optimal. Block size is a compromise between s=
calability of transactions and verifiability of the system. A system with 1=
0 transactions per day that is verifiable by a pocket calculator is not use=
ful, as it would only serve a few large bank's settlements. A system wh=
ich can deal with every coffee bought on the planet, but requires a Google-=
scale data center to verify is also not useful, as it would be trivially ou=
t-competed by a VISA-like design. The usefulness needs in a balance, and th=
ere is no optimal choice for everyone. We can choose where that balance lie=
s, but we must accept that this is done as a trade-off, and that that trade=
-off will have costs such as hardware costs, decreasing anonymity, less ind=
ependence, smaller target audience for people able to fully validate, ...<b=
r><br></div><div>Choose wisely.<br><br></div><div>Thanks for reading this,<=
br><br></div><div>-- <br></div><div>Pieter<br><br></div></div></div></div>
--001a11346326916f47051575c45c--
|