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
|
Received: from sog-mx-3.v43.ch3.sourceforge.com ([172.29.43.193]
helo=mx.sourceforge.net)
by sfs-ml-3.v29.ch3.sourceforge.com with esmtp (Exim 4.76)
(envelope-from <kgreenek@gmail.com>) id 1YpSWH-0000NU-Nk
for bitcoin-development@lists.sourceforge.net;
Tue, 05 May 2015 02:23:37 +0000
Received-SPF: pass (sog-mx-3.v43.ch3.sourceforge.com: domain of gmail.com
designates 209.85.212.169 as permitted sender)
client-ip=209.85.212.169; envelope-from=kgreenek@gmail.com;
helo=mail-wi0-f169.google.com;
Received: from mail-wi0-f169.google.com ([209.85.212.169])
by sog-mx-3.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128)
(Exim 4.76) id 1YpSWG-00022c-1U
for bitcoin-development@lists.sourceforge.net;
Tue, 05 May 2015 02:23:37 +0000
Received: by widdi4 with SMTP id di4so129311716wid.0
for <bitcoin-development@lists.sourceforge.net>;
Mon, 04 May 2015 19:23:30 -0700 (PDT)
X-Received: by 10.194.90.15 with SMTP id bs15mr47009086wjb.22.1430792609997;
Mon, 04 May 2015 19:23:29 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.27.50.65 with HTTP; Mon, 4 May 2015 19:23:09 -0700 (PDT)
In-Reply-To: <20150504043601.GA14728@savin.petertodd.org>
References: <20150212064719.GA6563@savin.petertodd.org>
<20150504043601.GA14728@savin.petertodd.org>
From: Kevin Greene <kgreenek@gmail.com>
Date: Mon, 4 May 2015 19:23:09 -0700
Message-ID: <CAEY8wq50ETVXX5V22KybiEMXiXVVhsB7OJdvgF_zFjn=KQ-hCg@mail.gmail.com>
To: Peter Todd <pete@petertodd.org>
Content-Type: multipart/alternative; boundary=047d7bfd027044292605154c5d8a
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
(kgreenek[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: 1YpSWG-00022c-1U
Cc: Bitcoin Dev <bitcoin-development@lists.sourceforge.net>
Subject: Re: [Bitcoin-development] New release of replace-by-fee for Bitcoin
Core v0.10.1
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: Tue, 05 May 2015 02:23:37 -0000
--047d7bfd027044292605154c5d8a
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
I feel compelled to re-share Mike Hearn's counter-argument *against *
replace-by-fee:
https://medium.com/@octskyward/replace-by-fee-43edd9a1dd6d
Please carefully consider the effects of replace-by-fee before applying
Peter's patch.
On Sun, May 3, 2015 at 9:36 PM, Peter Todd <pete@petertodd.org> wrote:
> My replace-by-fee patch is now available for the v0.10.1 release:
>
> https://github.com/petertodd/bitcoin/tree/replace-by-fee-v0.10.1
>
> No new features in this version; this is simply a rebase for the Bitcoin
> Core v0.10.1 release. (there weren't even any merge conflicts) As with
> the Bitcoin Core v0.10.1, it's recommended to upgrade.
>
>
> The following text is the copied verbatim from the previous release:
>
> What's replace-by-fee?
> ----------------------
>
> Currently most Bitcoin nodes accept the first transaction they see
> spending an output to the mempool; all later transactions are rejected.
> Replace-by-fee changes this behavior to accept the transaction paying
> the highest fee, both absolutely, and in terms of fee-per-KB. Replaced
> children are also considered - a chain of transactions is only replaced
> if the replacement has a higher fee than the sum of all replaced
> transactions.
>
> Doing this aligns standard node behavior with miner incentives: earn the
> most amount of money per block. It also makes for a more efficient
> transaction fee marketplace, as transactions that are "stuck" due to bad
> fee estimates can be "unstuck" by double-spending them with higher
> paying versions of themselves. With scorched-earth techniques=E2=81=B5 it=
gives
> a path to making zeroconf transactions economically secure by relying on
> economic incentives, rather than "honesty" and alturism, in the same way
> Bitcoin mining itself relies on incentives rather than "honesty" and
> alturism.
>
> Finally for miners adopting replace-by-fee avoids the development of an
> ecosystem that relies heavily on large miners punishing smaller ones for
> misbehavior, as seen in Harding's proposal=E2=81=B6 that miners collectiv=
ely 51%
> attack miners who include doublespends in their blocks - an unavoidable
> consequence of imperfect p2p networking in a decentralized system - or
> even Hearn's proposal=E2=81=B7 that a majority of miners be able to vote =
to
> confiscate the earnings of the minority and redistribute them at will.
>
>
> Installation
> ------------
>
> Once you've compiled the replace-by-fee-v0.10.1 branch just run your
> node normally. With -debug logging enabled, you'll see messages like the
> following in your ~/.bitcoin/debug.log indicating your node is replacing
> transactions with higher-fee paying double-spends:
>
> 2015-02-12 05:45:20 replacing tx
> ca07cc2a5eaf55ab13be7ed7d7526cb9d303086f116127608e455122263f93ea with
> c23973c08d71cdadf3a47bae45566053d364e77d21747ae7a1b66bf1dffe80ea for
> 0.00798 BTC additional fees, -1033 delta bytes
>
> Additionally you can tell if you are connected to other replace-by-fee
> nodes, or Bitcoin XT nodes, by examining the service bits advertised by
> your peers:
>
> $ bitcoin-cli getpeerinfo | grep services | egrep
> '((0000000000000003)|(0000000004000001))'
> "services" : "0000000000000003",
> "services" : "0000000004000001",
> "services" : "0000000004000001",
> "services" : "0000000000000003",
> "services" : "0000000004000001",
> "services" : "0000000004000001",
> "services" : "0000000000000003",
> "services" : "0000000000000003",
>
> Replace-by-fee nodes advertise service bit 26 from the experimental use
> range; Bitcoin XT nodes advertise service bit 1 for their getutxos
> support. The code sets aside a certain number of outgoing and incoming
> slots just for double-spend relaying nodes, so as long as everything is
> working you're node should be connected to like-minded nodes a within 30
> minutes or so of starting up.
>
> If you *don't* want to advertise the fact that you are running a
> replace-by-fee node, just checkout a slightly earlier commit in git; the
> actual mempool changes are separate from the preferential peering
> commits. You can then connect directly to a replace-by-fee node using
> the -addnode command line flag.
>
> 1) https://github.com/bitcoinxt/bitcoinxt
> 2) https://github.com/bitcoin/bitcoin/pull/3883
> 3) https://github.com/bitcoin/bitcoin/pull/3883#issuecomment-45543370
> 4) https://github.com/luke-jr/bitcoin/tree/0.10.x-ljrP
> 5)
> http://www.mail-archive.com/bitcoin-development%40lists.sourceforge.net/m=
sg05211.html
> 6)
> http://www.mail-archive.com/bitcoin-development@lists.sourceforge.net/msg=
06970.html
> 7)
> http://www.mail-archive.com/bitcoin-development%40lists.sourceforge.net/m=
sg04972.html
>
> --
> 'peter'[:-1]@petertodd.org
> 0000000000000000059a3dd65f0e5ffb8fdf316d6f31921fefcf0ef726120be9
>
>
> -------------------------------------------------------------------------=
-----
> One dashboard for servers and applications across Physical-Virtual-Cloud
> Widest out-of-the-box monitoring support with 50+ applications
> Performance metrics, stats and reports that give you Actionable Insights
> Deep dive visibility with transaction tracing using APM Insight.
> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>
>
--047d7bfd027044292605154c5d8a
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"color:rgb(51,102,102=
)">I feel compelled to re-share Mike Hearn's counter-argument <i>agains=
t </i>replace-by-fee:</div><div class=3D"gmail_default"><font color=3D"#336=
666"><a href=3D"https://medium.com/@octskyward/replace-by-fee-43edd9a1dd6d"=
target=3D"_blank">https://medium.com/@octskyward/replace-by-fee-43edd9a1dd=
6d</a></font><br></div><div class=3D"gmail_default"><font color=3D"#336666"=
><br></font></div><div class=3D"gmail_default"><font color=3D"#336666">Plea=
se carefully consider the effects of replace-by-fee before applying Peter&#=
39;s patch.</font></div><div class=3D"gmail_extra"><br><div class=3D"gmail_=
quote">On Sun, May 3, 2015 at 9:36 PM, Peter Todd <span dir=3D"ltr"><<a =
href=3D"mailto:pete@petertodd.org" target=3D"_blank">pete@petertodd.org</a>=
></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0=
0 .8ex;border-left:1px #ccc solid;padding-left:1ex">My replace-by-fee patc=
h is now available for the v0.10.1 release:<br>
<br>
=C2=A0 =C2=A0 <a href=3D"https://github.com/petertodd/bitcoin/tree/replace-=
by-fee-v0.10.1" target=3D"_blank">https://github.com/petertodd/bitcoin/tree=
/replace-by-fee-v0.10.1</a><br>
<br>
No new features in this version; this is simply a rebase for the Bitcoin<br=
>
Core v0.10.1 release. (there weren't even any merge conflicts) As with<=
br>
the Bitcoin Core v0.10.1, it's recommended to upgrade.<br>
<br>
<br>
The following text is the copied verbatim from the previous release:<br>
<br>
What's replace-by-fee?<br>
----------------------<br>
<br>
Currently most Bitcoin nodes accept the first transaction they see<br>
spending an output to the mempool; all later transactions are rejected.<br>
Replace-by-fee changes this behavior to accept the transaction paying<br>
the highest fee, both absolutely, and in terms of fee-per-KB. Replaced<br>
children are also considered - a chain of transactions is only replaced<br>
if the replacement has a higher fee than the sum of all replaced<br>
transactions.<br>
<br>
Doing this aligns standard node behavior with miner incentives: earn the<br=
>
most amount of money per block. It also makes for a more efficient<br>
transaction fee marketplace, as transactions that are "stuck" due=
to bad<br>
fee estimates can be "unstuck" by double-spending them with highe=
r<br>
paying versions of themselves. With scorched-earth techniques=E2=81=B5 it g=
ives<br>
a path to making zeroconf transactions economically secure by relying on<br=
>
economic incentives, rather than "honesty" and alturism, in the s=
ame way<br>
Bitcoin mining itself relies on incentives rather than "honesty" =
and<br>
alturism.<br>
<br>
Finally for miners adopting replace-by-fee avoids the development of an<br>
ecosystem that relies heavily on large miners punishing smaller ones for<br=
>
misbehavior, as seen in Harding's proposal=E2=81=B6 that miners collect=
ively 51%<br>
attack miners who include doublespends in their blocks - an unavoidable<br>
consequence of imperfect p2p networking in a decentralized system - or<br>
even Hearn's proposal=E2=81=B7 that a majority of miners be able to vot=
e to<br>
confiscate the earnings of the minority and redistribute them at will.<br>
<br>
<br>
Installation<br>
------------<br>
<br>
Once you've compiled the replace-by-fee-v0.10.1 branch just run your<br=
>
node normally. With -debug logging enabled, you'll see messages like th=
e<br>
following in your ~/.bitcoin/debug.log indicating your node is replacing<br=
>
transactions with higher-fee paying double-spends:<br>
<br>
=C2=A0 =C2=A0 2015-02-12 05:45:20 replacing tx ca07cc2a5eaf55ab13be7ed7d752=
6cb9d303086f116127608e455122263f93ea with c23973c08d71cdadf3a47bae45566053d=
364e77d21747ae7a1b66bf1dffe80ea for 0.00798 BTC additional fees, -1033 delt=
a bytes<br>
<br>
Additionally you can tell if you are connected to other replace-by-fee<br>
nodes, or Bitcoin XT nodes, by examining the service bits advertised by<br>
your peers:<br>
<br>
=C2=A0 =C2=A0 $ bitcoin-cli getpeerinfo | grep services | egrep '((0000=
000000000003)|(0000000004000001))'<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "services" : "0000=
000000000003",<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "services" : "0000=
000004000001",<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "services" : "0000=
000004000001",<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "services" : "0000=
000000000003",<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "services" : "0000=
000004000001",<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "services" : "0000=
000004000001",<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "services" : "0000=
000000000003",<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "services" : "0000=
000000000003",<br>
<br>
Replace-by-fee nodes advertise service bit 26 from the experimental use<br>
range; Bitcoin XT nodes advertise service bit 1 for their getutxos<br>
support. The code sets aside a certain number of outgoing and incoming<br>
slots just for double-spend relaying nodes, so as long as everything is<br>
working you're node should be connected to like-minded nodes a within 3=
0<br>
minutes or so of starting up.<br>
<br>
If you *don't* want to advertise the fact that you are running a<br>
replace-by-fee node, just checkout a slightly earlier commit in git; the<br=
>
actual mempool changes are separate from the preferential peering<br>
commits. You can then connect directly to a replace-by-fee node using<br>
the -addnode command line flag.<br>
<br>
1) <a href=3D"https://github.com/bitcoinxt/bitcoinxt" target=3D"_blank">htt=
ps://github.com/bitcoinxt/bitcoinxt</a><br>
2) <a href=3D"https://github.com/bitcoin/bitcoin/pull/3883" target=3D"_blan=
k">https://github.com/bitcoin/bitcoin/pull/3883</a><br>
3) <a href=3D"https://github.com/bitcoin/bitcoin/pull/3883#issuecomment-455=
43370" target=3D"_blank">https://github.com/bitcoin/bitcoin/pull/3883#issue=
comment-45543370</a><br>
4) <a href=3D"https://github.com/luke-jr/bitcoin/tree/0.10.x-ljrP" target=
=3D"_blank">https://github.com/luke-jr/bitcoin/tree/0.10.x-ljrP</a><br>
5) <a href=3D"http://www.mail-archive.com/bitcoin-development%40lists.sourc=
eforge.net/msg05211.html" target=3D"_blank">http://www.mail-archive.com/bit=
coin-development%40lists.sourceforge.net/msg05211.html</a><br>
6) <a href=3D"http://www.mail-archive.com/bitcoin-development@lists.sourcef=
orge.net/msg06970.html" target=3D"_blank">http://www.mail-archive.com/bitco=
in-development@lists.sourceforge.net/msg06970.html</a><br>
7) <a href=3D"http://www.mail-archive.com/bitcoin-development%40lists.sourc=
eforge.net/msg04972.html" target=3D"_blank">http://www.mail-archive.com/bit=
coin-development%40lists.sourceforge.net/msg04972.html</a><br>
<span><font color=3D"#888888"><br>
--<br>
'peter'[:-1]@<a href=3D"http://petertodd.org" target=3D"_blank">pet=
ertodd.org</a><br>
0000000000000000059a3dd65f0e5ffb8fdf316d6f31921fefcf0ef726120be9<br>
</font></span><br>---------------------------------------------------------=
---------------------<br>
One dashboard for servers and applications across Physical-Virtual-Cloud<br=
>
Widest out-of-the-box monitoring support with 50+ applications<br>
Performance metrics, stats and reports that give you Actionable Insights<br=
>
Deep dive visibility with transaction tracing using APM Insight.<br>
<a href=3D"http://ad.doubleclick.net/ddm/clk/290420510;117567292;y" target=
=3D"_blank">http://ad.doubleclick.net/ddm/clk/290420510;117567292;y</a><br>=
_______________________________________________<br>
Bitcoin-development mailing list<br>
<a href=3D"mailto:Bitcoin-development@lists.sourceforge.net" target=3D"_bla=
nk">Bitcoin-development@lists.sourceforge.net</a><br>
<a href=3D"https://lists.sourceforge.net/lists/listinfo/bitcoin-development=
" target=3D"_blank">https://lists.sourceforge.net/lists/listinfo/bitcoin-de=
velopment</a><br>
<br></blockquote></div><br></div></div>
--047d7bfd027044292605154c5d8a--
|