summaryrefslogtreecommitdiff
path: root/36/4c82f3fdb04fd92c2c8f7bafe81d5bdb297bc8
blob: 571d3e5f0e659d354200cf8b10080c78c46f3d88 (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
Return-Path: <kalle@rosenbaum.se>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 6579415D8
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Mon, 28 Sep 2015 08:30:44 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-ig0-f173.google.com (mail-ig0-f173.google.com
	[209.85.213.173])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 7518E1D6
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Mon, 28 Sep 2015 08:30:43 +0000 (UTC)
Received: by igbkq10 with SMTP id kq10so47866258igb.0
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Mon, 28 Sep 2015 01:30:43 -0700 (PDT)
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=xrqwaDGO0qtO421Fb0h3/BQJmdqAupnLnbht86ZtYZo=;
	b=LWFDct2Wp63M+sFmBU6M8AKA/2vLv8TMk2qNOHsUN0veTMuohVTJPYB8xHIcYhB2wl
	EdcwkYsbfGMyHcYgxVAHHNRIzQbLRc3ORePoMP+Q/m+rxyjRm6w35Iuq/bvcVrU+kBGX
	XaIln9otWIDCso7PkocjOZqxPLAbNn86IG3R3/ppZBzgoLpBwKNa8h6CIPjl+/mDsy67
	+uvBwRlBu6XoiYB8XVNw/SO/iOiS22hfhvsawwEsNWwhMQuwrKUYKCwB98CbqnA0aC3h
	QAY3HxHQ61W/CL6j6L4RNu2O4FotYP/HY52GDrOiGA3OKTezlhYRyN0uxjU8Ck1P9o9d
	njMA==
X-Gm-Message-State: ALoCoQmmEK699GgPwE5N2j1qGxIJKqXixGNEh2zRrQZ+zH1grB89DI31T7TnQ0A8Qix+EBIIsRDi
MIME-Version: 1.0
X-Received: by 10.50.43.134 with SMTP id w6mr4574657igl.74.1443429042880; Mon,
	28 Sep 2015 01:30:42 -0700 (PDT)
Received: by 10.107.189.195 with HTTP; Mon, 28 Sep 2015 01:30:42 -0700 (PDT)
In-Reply-To: <CAAS2fgRX-LLiNwcmbHtF6ymEX+uUx3SNjqAe4iyxouhHj=4Abw@mail.gmail.com>
References: <CABsx9T2+dG0AE+MgKRAU97KhkHTU1MuxXuwHKv3BgpJswZ5vVg@mail.gmail.com>
	<CABaSBaxcDRzw0X7-fAfxPJyLcWxTHigpHuAPb4aNQ5zk5NoDCQ@mail.gmail.com>
	<CAAS2fgTr-OuL3T6mXX-4xFC_LHnAiogTTcPMbcjsM7WtRisQEQ@mail.gmail.com>
	<CABsx9T3NFRO5nw3z=jrs0Hu3caVNkkTTTb1ibqR7LMWsoou9RQ@mail.gmail.com>
	<CAAS2fgRj+fE+znXZzFsXXBivKSxnJ2Lheo_g9us4FXN_yCLhgw@mail.gmail.com>
	<CAE-z3OU50cZBR27QrQsRT5Gtb0AVkE6K33XR0GebsyNWNrbf+w@mail.gmail.com>
	<CAPswA9xFNgdbH1JXBx+CqjT5HbkK0WGaWQLrJzm+BJCmrXRQcA@mail.gmail.com>
	<CAAS2fgRX-LLiNwcmbHtF6ymEX+uUx3SNjqAe4iyxouhHj=4Abw@mail.gmail.com>
Date: Mon, 28 Sep 2015 10:30:42 +0200
Message-ID: <CAPswA9xei1UNMeNqi=XzSnZU=SeroaeKN_6xHJ0HfhgXBzY_mw@mail.gmail.com>
From: Kalle Rosenbaum <kalle@rosenbaum.se>
To: Gregory Maxwell <gmaxwell@gmail.com>
Content-Type: multipart/alternative; boundary=089e01184b0c5c3fea0520ca8369
X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,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] Weak block thoughts...
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: Mon, 28 Sep 2015 08:30:44 -0000

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

2015-09-27 21:50 GMT+02:00 Gregory Maxwell <gmaxwell@gmail.com>:

> On Sun, Sep 27, 2015 at 3:10 PM, Kalle Rosenbaum via bitcoin-dev
> <bitcoin-dev@lists.linuxfoundation.org> wrote:
> > I was mansplaining weak blocks to my wife. She asked a simple question:
> >
> > Why would I, as a miner, publish a weak block if I find one?
> >
> > I don't know.
> > Sure, I will get faster propagation for my solved block, should I find
> one.
> > On the other hand everybody else mining a similar block will enjoy the
> same
> > benefit. Assuming that I'm not a huge miner, it's unlikely that I will
> > actually solve the block, so I'm probably just giving away fast
> propagation
> > times to someone else.
> > So how does publishing a weak block benefit the producer of it more than
> the
> > other miners? Please help me understand this.
>
> Keep in mind, because of efficient differential transmission the cost
> to you is effectively nothing if your transaction acceptance policy is
> predictable, it's a hand-full of bytes sent. And by failing to send
> yours you do little to nothing to deny others the improvement.
>
>
Suppose that you've solved a block Z (weak or not) and you want to
propagate it using a previous weak block Y. With "efficient differential
transmission", I assume that you refer to the transmission of the
differences between Y and Z to a peer? What encodings are discussed? I
guess IBLTs are a hot candidate, but are there other schemes in the making?
I suppose that sending something like "weak block Y plus transactions A, B,
C minus transaction ids h(D), h(E)" is not considered an efficient
differential transmission. Then that's part of the answer to my question.


> Lets imagine an alternative weak-blockless weak block implementation:
>
> Every N seconds, every miner send to every other miner what they're
> working on.  This isn't totally crazy-- efficient differential
> transmission will keep the amount transmitted small.
>
> Any block found can be referenced to any of these earlier worklists.
>
> What the effect be of not transmitting yours?
>
> If your block is unlike everyone elses, you would suffer great delays
> in the event you found a block.
> If your block is mostly like everyone elses, you wouldn't suffer as
> much delay-- but the transmission costs would be negligible in that
> case. ... the size sent is proportional to the improvement you get
> when finding a block.
>

"the size sent is proportional to the improvement you get when finding a
block." - This encapsulates the issue quite well! The more exotic block I'm
building, the more I would benefit from publishing a weak block, but my
weak block would also be larger.


>
> In either case, no one else is harmed by you not sending yours... they
> still send their lists.
>
> A problem with that scheme is that unless you've layered an identity
> based access control system on it anyone can DOS attack it, because
> anyone can send as much as they want, they don't even have to be
> actual miners.
>
> What weak blocks adds to that is using hashcash as a rate limiting
> mechanism-- a coordination free lottery weighed by hash-power decides
> who can transmit.
>
> What if you don't participate in the lottery and share your solutions?
>  No major harm for the other users... the other users will just choose
> a somewhat lower weak-block threshold to get the updates at the
> desired rate than they would otherwise. To the extent that what you
> were working on was different from anyone else, you'll suffer because
> you failed to make use of your chance to influence what could be
> efficiently transmitted to include your own blocks.
>

Makes perfect sense. Also, if I'm working on an exotic block, the
probability of someone extending my weak block would be low-ish, so I'm not
necessarily "giving away fast propagation times to someone else" as I first
thought.


> You could also ask a question of why would you transitively relay
> someone elses announcement-- well if it helped their blocks too  (by
> reflecting things they also want to mine) the answer is obvious. But
> what if it was disjoint from the things they wanted to mine and didn't
> help compared to the weak blocks they already relayed?  In that case
> it's still in likely in their interest to relay it because if a block
> similar to it is produced and they extend that block they may end up
> orphaned because of propagation delays their parent block suffered.
> What if they receive an announcement which is so "ugly" that they
> wouldn't extend the chain with the strong block version of it (they'd
> intentionally try to fork it off?)-- in that case they wouldn't want
> to relay it.  So much the same logic as why you relay other parties
> blocks applies, including-- relaying helps the network, but if you
> don't it'll still get along fine without you.
>

Thank you very much for your explanation.

/Kalle

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

<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">2015=
-09-27 21:50 GMT+02:00 Gregory Maxwell <span dir=3D"ltr">&lt;<a href=3D"mai=
lto:gmaxwell@gmail.com" target=3D"_blank">gmaxwell@gmail.com</a>&gt;</span>=
:<br><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:so=
lid;padding-left:1ex"><span class=3D"">On Sun, Sep 27, 2015 at 3:10 PM, Kal=
le Rosenbaum via bitcoin-dev<br>
&lt;<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org">bitcoin-dev@li=
sts.linuxfoundation.org</a>&gt; wrote:<br>
&gt; I was mansplaining weak blocks to my wife. She asked a simple question=
:<br>
&gt;<br>
&gt; Why would I, as a miner, publish a weak block if I find one?<br>
&gt;<br>
&gt; I don&#39;t know.<br>
&gt; Sure, I will get faster propagation for my solved block, should I find=
 one.<br>
&gt; On the other hand everybody else mining a similar block will enjoy the=
 same<br>
&gt; benefit. Assuming that I&#39;m not a huge miner, it&#39;s unlikely tha=
t I will<br>
&gt; actually solve the block, so I&#39;m probably just giving away fast pr=
opagation<br>
&gt; times to someone else.<br>
&gt; So how does publishing a weak block benefit the producer of it more th=
an the<br>
&gt; other miners? Please help me understand this.<br>
<br>
</span>Keep in mind, because of efficient differential transmission the cos=
t<br>
to you is effectively nothing if your transaction acceptance policy is<br>
predictable, it&#39;s a hand-full of bytes sent. And by failing to send<br>
yours you do little to nothing to deny others the improvement.<br>
<br></blockquote><div>=C2=A0</div><div>Suppose that you&#39;ve solved a blo=
ck Z (weak or not) and you want to propagate it using a previous weak block=
 Y. With &quot;efficient differential transmission&quot;, I assume that you=
 refer to the transmission of the differences between Y and Z to a peer? Wh=
at encodings are discussed? I guess IBLTs are a hot candidate, but are ther=
e other schemes in the making? I suppose that sending something like &quot;=
weak block Y plus transactions A, B, C minus transaction ids h(D), h(E)&quo=
t; is not considered an efficient differential transmission. Then that&#39;=
s part of the answer to my question.<br></div><div>=C2=A0</div><blockquote =
class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1=
px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:=
1ex">
Lets imagine an alternative weak-blockless weak block implementation:<br>
<br>
Every N seconds, every miner send to every other miner what they&#39;re<br>
working on.=C2=A0 This isn&#39;t totally crazy-- efficient differential<br>
transmission will keep the amount transmitted small.<br>
<br>
Any block found can be referenced to any of these earlier worklists.<br>
<br>
What the effect be of not transmitting yours?<br>
<br>
If your block is unlike everyone elses, you would suffer great delays<br>
in the event you found a block.<br>
If your block is mostly like everyone elses, you wouldn&#39;t suffer as<br>
much delay-- but the transmission costs would be negligible in that<br>
case. ... the size sent is proportional to the improvement you get<br>
when finding a block.<br></blockquote><div><br></div><div>&quot;the size se=
nt is proportional to the improvement you get when finding a block.&quot; -=
 This encapsulates the issue quite well! The more exotic block I&#39;m buil=
ding, the more I would benefit from publishing a weak block, but my weak bl=
ock would also be larger.</div><div>=C2=A0</div><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-=
color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
In either case, no one else is harmed by you not sending yours... they<br>
still send their lists.<br>
<br>
A problem with that scheme is that unless you&#39;ve layered an identity<br=
>
based access control system on it anyone can DOS attack it, because<br>
anyone can send as much as they want, they don&#39;t even have to be<br>
actual miners.<br>
<br>
What weak blocks adds to that is using hashcash as a rate limiting<br>
mechanism-- a coordination free lottery weighed by hash-power decides<br>
who can transmit.<br>
<br>
What if you don&#39;t participate in the lottery and share your solutions?<=
br>
=C2=A0No major harm for the other users... the other users will just choose=
<br>
a somewhat lower weak-block threshold to get the updates at the<br>
desired rate than they would otherwise. To the extent that what you<br>
were working on was different from anyone else, you&#39;ll suffer because<b=
r>
you failed to make use of your chance to influence what could be<br>
efficiently transmitted to include your own blocks.<br></blockquote><div><b=
r></div><div>Makes perfect sense. Also, if I&#39;m working on an exotic blo=
ck, the probability of someone extending my weak block would be low-ish, so=
 I&#39;m not necessarily &quot;giving away fast propagation times to someon=
e else&quot; as I first thought.</div><div>=C2=A0</div><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;borde=
r-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
You could also ask a question of why would you transitively relay<br>
someone elses announcement-- well if it helped their blocks too=C2=A0 (by<b=
r>
reflecting things they also want to mine) the answer is obvious. But<br>
what if it was disjoint from the things they wanted to mine and didn&#39;t<=
br>
help compared to the weak blocks they already relayed?=C2=A0 In that case<b=
r>
it&#39;s still in likely in their interest to relay it because if a block<b=
r>
similar to it is produced and they extend that block they may end up<br>
orphaned because of propagation delays their parent block suffered.<br>
What if they receive an announcement which is so &quot;ugly&quot; that they=
<br>
wouldn&#39;t extend the chain with the strong block version of it (they&#39=
;d<br>
intentionally try to fork it off?)-- in that case they wouldn&#39;t want<br=
>
to relay it.=C2=A0 So much the same logic as why you relay other parties<br=
>
blocks applies, including-- relaying helps the network, but if you<br>
don&#39;t it&#39;ll still get along fine without you.<br>
</blockquote></div><br></div><div class=3D"gmail_extra"><div class=3D"gmail=
_extra">Thank you very much for your explanation.</div><div class=3D"gmail_=
extra"><br></div><div class=3D"gmail_extra">/Kalle=C2=A0</div></div><div cl=
ass=3D"gmail_extra"><br></div></div>

--089e01184b0c5c3fea0520ca8369--