summaryrefslogtreecommitdiff
path: root/04/68f9cbd7590ccbf66509f8788d40e474a6258c
blob: 0423b3f21041588d57e95819e9a53896953fbc21 (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
Return-Path: <hearn@vinumeris.com>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 97A9148C
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Wed, 29 Jul 2015 09:59:45 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-io0-f174.google.com (mail-io0-f174.google.com
	[209.85.223.174])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 79AFD7C
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Wed, 29 Jul 2015 09:59:44 +0000 (UTC)
Received: by iodd187 with SMTP id d187so15958906iod.2
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Wed, 29 Jul 2015 02:59:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=vinumeris.com; s=google;
	h=mime-version:in-reply-to:references:date:message-id:subject:from:to
	:cc:content-type;
	bh=KTfW6aZr4a0zu5V6jotJW6FuHlWfbA8w5NevCzWtoCE=;
	b=mwlRF4YsYag2AjdaKJrP+jicgJ/RdzBvt6rY3lLQErx0vaEDbiEETV8DHhEasYakPJ
	hH01gTP//3gD1iXmYbSG4drWYtSZhUGEQiG5tjdEgdDkQz+e7WMH1T69T/SsGrCq+nr7
	6+Xv8VFAvX9Hqq3xqGqOZ8aKVJH3ClxpqKA3U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:mime-version:in-reply-to:references:date
	:message-id:subject:from:to:cc:content-type;
	bh=KTfW6aZr4a0zu5V6jotJW6FuHlWfbA8w5NevCzWtoCE=;
	b=QVgCvMwfudBytLusb6gO3NwVBPk5F7+QQGyXa6auIh+paOqTFOpQMzXkNBi+OVI4F+
	ActkYn2FVLNP5nlE9q4Xg0LUc4pWgxRtROW73XzrEUdqnKYtVuvlc7uQXGc0ijs1wSNO
	WDe8XLqbXjjSzrCg/8I6G7N9CrrgVHdpiFd42Zy9B77QrRQq6OmzkSvLT0kq05GY/B2t
	SmoJWV4ngHnJntuKe4+G+19CbrAsMX/Oq4pPUT9P3mGxdzsdwEateGaAIi0XfNC5JFEi
	yI7QjN3UjwbcKhqfZl9j9b7IUjy/KdJMmPgJc2j/jBjmsHNo34MgTYEAAFIapsCQdG+u
	q5Zg==
X-Gm-Message-State: ALoCoQldYqufItkQfalhtyNifo6TWxeFeOAByIAEtOwXtFwhxyALF4Qg7n3ocrsSjf68uTInNMqz
MIME-Version: 1.0
X-Received: by 10.107.129.215 with SMTP id l84mr66679ioi.78.1438163983919;
	Wed, 29 Jul 2015 02:59:43 -0700 (PDT)
Received: by 10.50.108.111 with HTTP; Wed, 29 Jul 2015 02:59:43 -0700 (PDT)
In-Reply-To: <1B7F00D3-41AE-44BF-818D-EC4EF279DC11@gmail.com>
References: <1B7F00D3-41AE-44BF-818D-EC4EF279DC11@gmail.com>
Date: Wed, 29 Jul 2015 11:59:43 +0200
Message-ID: <CA+w+GKTfPXkVPaCC+3ZsQv=_DPMHoRwbigS40Testpyq4rZxsw@mail.gmail.com>
From: Mike Hearn <hearn@vinumeris.com>
To: Eric Lombrozo <elombrozo@gmail.com>
Content-Type: multipart/alternative; boundary=001a113ec6ac6406cb051c00a573
X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_40,DKIM_SIGNED,
	DKIM_VALID,DKIM_VALID_AU,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] Why Satoshi's temporary anti-spam measure isn't
	temporary
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: Wed, 29 Jul 2015 09:59:45 -0000

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

I do love history lessons from people who weren't actually there.

Let me correct your misconceptions.


Initially there was no block size limit - it was thought that the fee
> market would naturally develop and would impose economic constraints on
> growth.


The term "fee market" was never used back then, and Satoshi did not ever
postulate economic constraints on growth. Back then the talk was (quite
sensibly) how to grow faster, not how to slow things down!



> But this hypothesis failed after a sudden influx of new uses. It was stil=
l
> too easy to attack the network. This idea had to wait until the network w=
as
> more mature to handle things.
>

No such event happened, and the hypothesis of which you talk never existed.



> Enter a =E2=80=9Ctemporary=E2=80=9D anti-spam measure - a one megabyte bl=
ock size limit.


The one megabyte limit was nothing to do with anti spam. It was a quick
kludge to try and avoid the user experience degrading significantly in the
event of a "DoS block", back when everyone used Bitcoin-Qt. The fear was
that some malicious miner would generate massive blocks and make the wallet
too painful to use, before there were any alternatives.

The plan was to remove it once SPV wallets were widespread. But Satoshi
left before that happened.


Now on to your claims:

1) We never really got to test things out=E2=80=A6a fee market never really=
 got
> created, we never got to see how fees would really work in practice.
>

The limit had nothing to do with fees. Satoshi explicitly wanted free
transactions to last as long as possible.


> 2) Turns out the vast majority of validation nodes have little if anythin=
g
> to do with mining - validators do not get compensated=E2=80=A6validation =
cost is
> externalized to the entire network.
>

Satoshi explicitly envisioned a future where only miners ran nodes, so it
had nothing to do with this either.

Validators validate for themselves. Calculating a local UTXO set and then
not using it for anything doesn't help anyone. SPV wallets need filtering
and serving capability, but a computer can filter and serve the chain
without validating it.

The only purposes non-mining, non-rpc-serving, non-Qt-wallet-sustaining
full nodes are needed for with today's network are:

   1. Filtering the chain for bandwidth constrained SPV wallets (nb: you
   can run an SPV wallet that downloads all transactions if you want). But
   this could be handled by specialised nodes, just like we always imagined=
 in
   future not every node will serve the entire chain but only special
   "archival nodes"

   2. Relaying validated transactions so SPV wallets can stick a thumb into
   the wind and heuristically guess whether a transaction is valid or not.
   This is useful for a better user interface.

   3. Storing the mempool and filtering/serving it so SPV wallets can find
   transactions that were broadcast before they started, but not yet includ=
ed
   in a block. This is useful for a better user interface.

Outside of serving lightweight P2P wallets there's no purpose in running a
P2P node if you aren't mining, or using it as a trusted node for your own
operations.

And if one day there aren't enough network nodes being run by volunteers to
service all the lightweight wallets, then we can easily create an incentive
scheme to fix that.


3) Miners don=E2=80=99t even properly validate blocks. And the bigger the b=
locks
> get, the greater the propensity to skip this step. Oops!
>

Miners who don't validate have a habit of bleeding money:   that's the
system working as designed.



> 4) A satisfactory mechanism for thin clients to be able to securely obtai=
n
> reasonably secure, short proofs for their transactions never materialized=
.
>

It did. I designed it. The proofs are short and "reasonably secure" in that
it would be a difficult and expensive attack to mount.

But as is so often the case with Bitcoin Core these days, someone who came
along much later has retroactively decided that the work done so far fails
to meet some arbitrary and undefined level of perfection. "Satisfactory"
and "reasonably secure" don't mean anything, especially not coming from
someone who hasn't done the work, so why should anyone care about that
opinion of yours?

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

<div dir=3D"ltr">I do love history lessons from people who weren&#39;t actu=
ally there.<div><br></div><div>Let me correct your misconceptions.</div><di=
v><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quote"><blockquote=
 class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc soli=
d;padding-left:1ex">Initially there was no block size limit - it was though=
t that the fee market would naturally develop and would impose economic con=
straints on growth. </blockquote><div><br></div><div>The term &quot;fee mar=
ket&quot; was never used back then, and Satoshi did not ever postulate econ=
omic constraints on growth. Back then the talk was (quite sensibly) how to =
grow faster, not how to slow things down!</div><div><br></div><div>=C2=A0</=
div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-lef=
t:1px #ccc solid;padding-left:1ex">But this hypothesis failed after a sudde=
n influx of new uses. It was still too easy to attack the network. This ide=
a had to wait until the network was more mature to handle things.<br></bloc=
kquote><div><br></div><div>No such event happened, and the hypothesis of wh=
ich you talk never existed.</div><div><br></div><div>=C2=A0</div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc sol=
id;padding-left:1ex">Enter a =E2=80=9Ctemporary=E2=80=9D anti-spam measure =
- a one megabyte block size limit.</blockquote><div><br></div><div>The one =
megabyte limit was nothing to do with anti spam. It was a quick kludge to t=
ry and avoid the user experience degrading significantly in the event of a =
&quot;DoS block&quot;, back when everyone used Bitcoin-Qt. The fear was tha=
t some malicious miner would generate massive blocks and make the wallet to=
o painful to use, before there were any alternatives.</div><div><br></div><=
div>The plan was to remove it once SPV wallets were widespread. But Satoshi=
 left before that happened.</div><div><br></div><div>=C2=A0</div><div>Now o=
n to your claims:</div><div><br></div><blockquote class=3D"gmail_quote" sty=
le=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">1) We =
never really got to test things out=E2=80=A6a fee market never really got c=
reated, we never got to see how fees would really work in practice.<br></bl=
ockquote><div><br></div><div>The limit had nothing to do with fees. Satoshi=
 explicitly wanted free transactions to last as long as possible.</div><div=
>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;b=
order-left:1px #ccc solid;padding-left:1ex">2) Turns out the vast majority =
of validation nodes have little if anything to do with mining - validators =
do not get compensated=E2=80=A6validation cost is externalized to the entir=
e network.<br></blockquote><div><br></div><div>Satoshi explicitly envisione=
d a future where only miners ran nodes, so it had nothing to do with this e=
ither.</div><div><br></div><div>Validators validate for themselves. Calcula=
ting a local UTXO set and then not using it for anything doesn&#39;t help a=
nyone. SPV wallets need filtering and serving capability, but a computer ca=
n filter and serve the chain without validating it.</div><div><br></div><di=
v>The only purposes non-mining, non-rpc-serving, non-Qt-wallet-sustaining f=
ull nodes are needed for with today&#39;s network are:</div><div><ol><li>Fi=
ltering the chain for bandwidth constrained SPV wallets (nb: you can run an=
 SPV wallet that downloads all transactions if you want). But this could be=
 handled by specialised nodes, just like we always imagined in future not e=
very node will serve the entire chain but only special &quot;archival nodes=
&quot;<br><br></li><li>Relaying validated transactions so SPV wallets can s=
tick a thumb into the wind and heuristically guess whether a transaction is=
 valid or not. This is useful for a better user interface.<br><br></li><li>=
Storing the mempool and filtering/serving it so SPV wallets can find transa=
ctions that were broadcast before they started, but not yet included in a b=
lock. This is useful for a better user interface.</li></ol><div>Outside of =
serving lightweight P2P wallets there&#39;s no purpose in running a P2P nod=
e if you aren&#39;t mining, or using it as a trusted node for your own oper=
ations.</div></div><div><br></div><div>And if one day there aren&#39;t enou=
gh network nodes being run by volunteers to service all the lightweight wal=
lets, then we can easily create an incentive scheme to fix that.</div><div>=
=C2=A0</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">3) Miners don=E2=
=80=99t even properly validate blocks. And the bigger the blocks get, the g=
reater the propensity to skip this step. Oops!<br></blockquote><div><br></d=
iv><div>Miners who don&#39;t validate have a habit of bleeding money: =C2=
=A0 that&#39;s the system working as designed.</div><div><br></div><div>=C2=
=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;borde=
r-left:1px #ccc solid;padding-left:1ex">4) A satisfactory mechanism for thi=
n clients to be able to securely obtain reasonably secure, short proofs for=
 their transactions never materialized.<br></blockquote><div><br></div><div=
>It did. I designed it. The proofs are short and &quot;reasonably secure&qu=
ot; in that it would be a difficult and expensive attack to mount.</div><di=
v><br></div><div>But as is so often the case with Bitcoin Core these days, =
someone who came along much later has retroactively decided that the work d=
one so far fails to meet some arbitrary and undefined level of perfection. =
&quot;Satisfactory&quot; and &quot;reasonably secure&quot; don&#39;t mean a=
nything, especially not coming from someone who hasn&#39;t done the work, s=
o why should anyone care about that opinion of yours?</div><div><br></div><=
div><br></div></div></div></div></div>

--001a113ec6ac6406cb051c00a573--