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
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
|
Delivery-date: Mon, 27 Jan 2025 07:40:03 -0800
Received: from mail-oo1-f58.google.com ([209.85.161.58])
by mail.fairlystable.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
(Exim 4.94.2)
(envelope-from <bitcoindev+bncBC3PT7FYWAMRBR6R326AMGQEAG4KLCQ@googlegroups.com>)
id 1tcRDV-0005g9-1Q
for bitcoindev@gnusha.org; Mon, 27 Jan 2025 07:40:03 -0800
Received: by mail-oo1-f58.google.com with SMTP id 006d021491bc7-5f70b0fad64sf1527982eaf.1
for <bitcoindev@gnusha.org>; Mon, 27 Jan 2025 07:40:00 -0800 (PST)
ARC-Seal: i=2; a=rsa-sha256; t=1737992395; cv=pass;
d=google.com; s=arc-20240605;
b=Gunpb2eXoky1KyNy5RxafcT7gh2DYihnlGZcmT2u+4kVI30VNBxcXjyP9Y1f+v5ex+
xxPQWfG+MLudnNzTI6qu/F7gn9hHtcGKU0SLR3DiTnLZLLyTdHtN/q/2FhEiK9gpyF3d
MKYfAwf4AJzjNHqWF0fTTo+0YoGSgezswxEDIfWBUZs+UzUuUuxYVmjuozrWUOsI0Ppj
C8ED46D7UbECLZQ/mQk0np12ScsjbkHZtzs4AdhcHx5jW/UcxfSemXyaqe8H1NZP7oLO
lNnfhB0LGLQpsrBjHI/Dt2kqEMhX/xpTxlUohX8SIJ4rcizxPh8mZvdM4Ra94ThDV2tt
K6qg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
:list-id:mailing-list:precedence:cc:to:subject:message-id:date:from
:mime-version:sender:dkim-signature:dkim-signature;
bh=U/OOxnBgX+iQ3EwU4zu9a1f/Dq6Yn247PZAxq1DvU34=;
fh=Zq68jyUMroLZJBCbXBVg5GiHa4zvlpwziYtgfT6OSgc=;
b=AJUWWOEGTwDIaxWFS6NdYCd+rVcZeb0kkyUOdkcA60kbbr5Xt3VrxNIRCOBfbi7Djr
GXbaJen4O0KTYfDKguv6qQ3HSKG8pySi+M9zqwL6NqzlwwgGoZoBcPloIu5GP6uWiuvW
zz1WSiDPfUcUel1le6dHjdDBILgkR8nVuFbUcZpni7AR5kB9MtM6qsVC1TX22UcB/bQO
+mhDszbaPfQ1PLyGCXxb+qVQ2YOSu3vQhdX9lD5XWM94aSjHBT2l+eNP6vUpQAWWYeJA
5MIolFGpoPn+X97XN9ZnDWQEj04k/zhBHl2j2GLiC49b7TNewFjJNxuITte8EAKO8CEZ
/FHQ==;
darn=gnusha.org
ARC-Authentication-Results: i=2; gmr-mx.google.com;
dkim=pass header.i=@gmail.com header.s=20230601 header.b=Cxpwmz0y;
spf=pass (google.com: domain of antoine.riard@gmail.com designates 2607:f8b0:4864:20::1030 as permitted sender) smtp.mailfrom=antoine.riard@gmail.com;
dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com;
dara=pass header.i=@googlegroups.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=googlegroups.com; s=20230601; t=1737992395; x=1738597195; darn=gnusha.org;
h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
:list-id:mailing-list:precedence:x-original-authentication-results
:x-original-sender:cc:to:subject:message-id:date:from:mime-version
:sender:from:to:cc:subject:date:message-id:reply-to;
bh=U/OOxnBgX+iQ3EwU4zu9a1f/Dq6Yn247PZAxq1DvU34=;
b=CX9/tZE5i9XustGP2yxAJs3BWfGaUyPYvSSrtyFOCjDx0tIiLiTNfEmM8N6eLLAeWH
tOrfgagYwNZApWAe/7Nkmx7JU1NAjfRfd79kzYs3XhMAfm5B+RFqnfd3l8jvmjivZC0U
E1DoT45WeDBtbfE/JI6ewBsikqEyMppLSRLBagNvCO685Z7/hExq5dw6kRPrdoGSFtVI
a6Xoly7lMMDuTxrnNhC/O6V3vbOlO9to8FPW+sGRvinMvVbtKPWdH0qxbjioTlJhlYi/
HyDqjHvWaGoTOh/8cgOF/kjcpGrfiF64LkaW353aZV6hAdhqVELsd9U2ONqteSzl8B/V
pnAw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1737992395; x=1738597195; darn=gnusha.org;
h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
:list-id:mailing-list:precedence:x-original-authentication-results
:x-original-sender:cc:to:subject:message-id:date:from:mime-version
:from:to:cc:subject:date:message-id:reply-to;
bh=U/OOxnBgX+iQ3EwU4zu9a1f/Dq6Yn247PZAxq1DvU34=;
b=EIfaUBe9W5+BybVX0axmT6md73mM+Jt4USEZNp3vxMvV69Nn7d+wqYF8bV2+LYPQFW
o5yTP4DJKnNk9vhxzyLjiqCyhIGcjnztLrMTJXdleznBi7Rf8k7xXou3uB/D/1+0lBKs
i3VHO8HeEU6rIC2jGpCX/YrCH9CrnzbOxqtXFKHW+PiDce6JOeDXzDxEk+IrZTnPluD/
N9fAmonsV1rLjnsb/YlMdmTHpWYhVnlkIm6kcai0JFG1/BYQdyFy6y2LO7VxVrmCry/z
DjOZYUCXdMGQgSfgro023mUXtz+cE9UdR+G4p2L5r9zx3SvEtJKJXsdihpnSw/2ThYbz
bXfA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1737992395; x=1738597195;
h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
:list-id:mailing-list:precedence:x-original-authentication-results
:x-original-sender:cc:to:subject:message-id:date:from:mime-version
:x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date
:message-id:reply-to;
bh=U/OOxnBgX+iQ3EwU4zu9a1f/Dq6Yn247PZAxq1DvU34=;
b=kFEla9acdiyCFaQsRnVRe3187J6eoP/nfz0VkW+965iHe8+INRA0gcDYyvfj1QUxKc
goDYsNuSaHE1Nt/X7Dui/Z+DnY43n0oqls/C/UY+dsgTHwhcc5G/jhh+0YsTrDcWsFxp
iKD5JbIfMgzRC3YpnUQDpxKfiqvRoN/SYyrtm954u8ebYPSRzTP8tZL0eTf5AYtGqX0d
A5kWd6m6caLTpuYz8aK+f669TCik89JOM45IbIaVUJj8WxEmEw0sIw02sLMGkGzCUZWl
8WP+k9szVQswxWg70mYEuKk99fynElvxXz504icNEThVsUyZDCSGNnOzDvZw2yuYhWVc
chbw==
Sender: bitcoindev@googlegroups.com
X-Forwarded-Encrypted: i=2; AJvYcCUwCdGzHJNCfAyV9/7kIS1OOYOE3xA+jPIH0qRwZazUFtL4YgdVowcHNPemq0QKnFKUm5i4CAqhTXAn@gnusha.org
X-Gm-Message-State: AOJu0Yz7jvENvmfFVZMBUQNQ2ZTawWDjmBGT1EOSnZQStmwY0icOUKGM
uzf6ZSHmuO923Qgn9H+8NPuDk4MvCaBxvIZNSXxdcBxji6QIPw+r
X-Google-Smtp-Source: AGHT+IG1ufkA+Orvja/Z5FZ/m2NzBsDZh3kH2JcD/7ALHlZQchNFvLYHVlT4XljXjAIDW1ijZ3bwFg==
X-Received: by 2002:a05:6830:390b:b0:71d:5336:df80 with SMTP id 46e09a7af769-7249dae0ae5mr29527692a34.20.1737992394720;
Mon, 27 Jan 2025 07:39:54 -0800 (PST)
X-BeenThere: bitcoindev@googlegroups.com
Received: by 2002:a4a:c189:0:b0:5eb:b8f8:e3d0 with SMTP id 006d021491bc7-5fa80401ec0ls1187677eaf.1.-pod-prod-06-us;
Mon, 27 Jan 2025 07:39:51 -0800 (PST)
X-Received: by 2002:a05:6808:800f:b0:3ec:d34f:4c64 with SMTP id 5614622812f47-3f19fbfc769mr17666893b6e.6.1737992391135;
Mon, 27 Jan 2025 07:39:51 -0800 (PST)
Received: by 2002:a05:6808:6044:b0:3eb:7446:f871 with SMTP id 5614622812f47-3f1efed1c35msb6e;
Mon, 27 Jan 2025 07:22:53 -0800 (PST)
X-Received: by 2002:a17:90b:2c83:b0:2f2:a664:df20 with SMTP id 98e67ed59e1d1-2f782c6750cmr65086632a91.7.1737991372288;
Mon, 27 Jan 2025 07:22:52 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1737991372; cv=none;
d=google.com; s=arc-20240605;
b=iLQ+SQDA189zHrcfo1/QJMYYzhWxvPDfj3ZfpXcnYYx2QFxAX7v5L2+DCIv5WWMVP3
86/mPTkJYjhOcMl4lWAVJ9WS7TTei4J2UGHFhGfkrZfWoRbjy4c8ewDMwduLqFp0zHBt
mpqu1qU7+YIwsasdws9oJXDkMewAx3Y2wGaQC8EqXd/pe87dLtQQw+yAkF1+p+yk9vSU
oeupPrZGZIZch0tQMmYt4i4E3w3Nh6exmxEDWZuRyKK+/JG2rTJ+4B9auxV3LVtZ1RPD
3Jrw+kocQ15J4YcjguvTevCzOKekUYWz4BZbQTtbUeB6VxotRNAAp83xyAGy/6vLA0eZ
B+Uw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
h=cc:to:subject:message-id:date:from:mime-version:dkim-signature;
bh=mBKp9h2HEwn/bUp2roiSt9f9TEq7mIi9oDTStqMZrjE=;
fh=TrDDrH77hhIgp0mK2MdRvoco8jyXYiElDX5vXgyPiMs=;
b=lcd/7hmLejXmlpJMx2/INhA+C8hVoFKFa9dJbJD4Qqk3TSRJHB75503st8jgMiY3PG
3yMxKz/fOWfhZJF+di+JS4gIXQOZFcgOsF7xXM82pV99dBFygGwxSLKpg9k2viU+t4ut
b1Drx2I7STpZKX6eIA/+WGR1Z+rj58dzCIpl06/++uZlN37rzckoj8z5NbP+i65kmx/O
BNSkdjUoEfb/FihwS6m07XZGltYgFfWVo2F0AumZAEAjiqXeBGo4P7Icv45jNHpW3w9X
oxeac1tyBpBwZ1ub///SYclNA6QhCGrPBkgGTHs1e1BdJR/mdhcsL6BlUUSp+n1UXeeZ
12gg==;
dara=google.com
ARC-Authentication-Results: i=1; gmr-mx.google.com;
dkim=pass header.i=@gmail.com header.s=20230601 header.b=Cxpwmz0y;
spf=pass (google.com: domain of antoine.riard@gmail.com designates 2607:f8b0:4864:20::1030 as permitted sender) smtp.mailfrom=antoine.riard@gmail.com;
dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com;
dara=pass header.i=@googlegroups.com
Received: from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com. [2607:f8b0:4864:20::1030])
by gmr-mx.google.com with ESMTPS id 98e67ed59e1d1-2f7e46407aasi875197a91.1.2025.01.27.07.22.52
for <bitcoindev@googlegroups.com>
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Mon, 27 Jan 2025 07:22:52 -0800 (PST)
Received-SPF: pass (google.com: domain of antoine.riard@gmail.com designates 2607:f8b0:4864:20::1030 as permitted sender) client-ip=2607:f8b0:4864:20::1030;
Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-2f43d17b0e3so8102919a91.0
for <bitcoindev@googlegroups.com>; Mon, 27 Jan 2025 07:22:52 -0800 (PST)
X-Gm-Gg: ASbGncvQkeIpAtFh+qM09iLsm4m+Mx4E9hSxLFRZYL5AgIs0nqSi6MHzRWVoIUWQyXc
+g0srF1VjijJPI/zj8rIY1u3wepE9DSlO6MiLyPRZw5ylxQjexDMs0OjocIP8zCguti+xMmE=
X-Received: by 2002:a17:90b:524d:b0:2ee:b26c:1099 with SMTP id
98e67ed59e1d1-2f782d99563mr52817373a91.34.1737991370360; Mon, 27 Jan 2025
07:22:50 -0800 (PST)
MIME-Version: 1.0
From: Antoine Riard <antoine.riard@gmail.com>
Date: Mon, 27 Jan 2025 15:22:38 +0000
X-Gm-Features: AWEUYZmi4Ir1iPKzWZC5cJaoUi1h0WnZiG_XV3kf6uO7ZV8WQY8H5DGNDVgx5us
Message-ID: <CALZpt+EnDUtfty3X=u2-2c5Q53Guc6aRdx0Z4D75D50ZXjsu2A@mail.gmail.com>
Subject: [bitcoindev] [FULL DISCLOSURE]: Replacement Cycling Attacks on
Attacks on Bitcoin Miners Block Templates
To: Bitcoin Development Mailing List <bitcoindev@googlegroups.com>
Cc: security@ariard.me
Content-Type: multipart/alternative; boundary="00000000000040cee0062cb1a68d"
X-Original-Sender: antoine.riard@gmail.com
X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass
header.i=@gmail.com header.s=20230601 header.b=Cxpwmz0y; spf=pass
(google.com: domain of antoine.riard@gmail.com designates 2607:f8b0:4864:20::1030
as permitted sender) smtp.mailfrom=antoine.riard@gmail.com; dmarc=pass
(p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; dara=pass header.i=@googlegroups.com
Precedence: list
Mailing-list: list bitcoindev@googlegroups.com; contact bitcoindev+owners@googlegroups.com
List-ID: <bitcoindev.googlegroups.com>
X-Google-Group-Id: 786775582512
List-Post: <https://groups.google.com/group/bitcoindev/post>, <mailto:bitcoindev@googlegroups.com>
List-Help: <https://groups.google.com/support/>, <mailto:bitcoindev+help@googlegroups.com>
List-Archive: <https://groups.google.com/group/bitcoindev
List-Subscribe: <https://groups.google.com/group/bitcoindev/subscribe>, <mailto:bitcoindev+subscribe@googlegroups.com>
List-Unsubscribe: <mailto:googlegroups-manage+786775582512+unsubscribe@googlegroups.com>,
<https://groups.google.com/group/bitcoindev/subscribe>
X-Spam-Score: -0.5 (/)
--00000000000040cee0062cb1a68d
Content-Type: text/plain; charset="UTF-8"
Hi all,
I'm writing a report to fully disclose the variant of replacement cycling
attacks
enabling to censor transaction traffic from miners block template and as
such for
an attacker to achieve a dominant strategy in the distribution of the
bitcoin fee
reward for the generation of blocks in the longest valid chain among all
honest
mining nodes.
A proof-of-concept of this miner-level attack was tested against a Bitcoin
Core
26.0 branch before my previous disclosure of the 16 October 2023 informing
the community
on how the replace-by-fee mechanism could be used to break the security of
the Lightning
channels. During the last months, it was independently rediscovered and
noticed by
at least Peter Todd (and I guess few other smart observers...) that
replacement cycling
attacks can affect miners block templates.
While the practicality of replacement cycling attacks in the real-world is
still an
open question among the bitcoin protocol experts, in my personal and humble
opinion
this variant of replacement cycling attack is severe for the perennity of
the bitcoin
ecosystem at large, even more in a post-subsidy world.
The attack shares some similarities with fill-and-dump tricks already known
since years
among mempool experts, yet I think leveraging non-utxo owned transaction
traffic, targeting
properties of a chain of transactions itself to mount those replacement
cycling attacks variant
and combining those techniques in new exploitation model are all novel.
As part of the full disclosure, I'm making the following list of artifacts
publicly available.
Test of the feerate differential RCA variant on the classic mempool
(bitcoin core branch 26.0 - commit 78b7e955):
https://github.com/ariard/bitcoin/commits/test-mempool-feerate-differential-rca/
Test of the timing RCA on the classic mempool (bitcoin core branch 26.0 -
commit 78b7e955):
https://github.com/ariard/bitcoin/commits/test-mempool-timing-rca/
Test of the feerate differential RCA variant on the cluster mempool
(bitcoin core branch 29.0 - commit 5acf12ba):
https://github.com/ariard/bitcoin/tree/test-mempool-feerate-differential-cluster-rca
Test of the timing RCA variant on the cluster mempool (bitcoin core branch
29.0 - commit 5acf12ba):
https://github.com/ariard/bitcoin/tree/test-mempool-timig-cluster-rca
Paper summarizing replacement cycling attacks on bitcoin miners block
template:
https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/rca-bmbt.pdf
Original proof-of-concept RCA on bitcoin miners mempool from October 2023:
https://github.com/ariard/bitcoin/commits/2023-poc-miner-jamming/
If you're not already familiar with the idea of replacement cycling attack,
I can only
invite you to read the full disclosure report on how it affects Lightning:
https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf
## Discovery
During the year 2022, eltoo lightning channels design are discussed,
implemented
and reviewed. In this context and after discussions on mempool anti-DoS
rules, I
discovered that the replace-by-fee mechanism could be leveraged to break
Lightning
channels security. The finding was reported at the near end of 2022 to some
bitcoin
core developers and lightning maintainers.
During the year 2023, mitigations (mainly random rebroadcast of
time-sensitive
second-stage HTLC transactions) are implemented in the major lightning
implementations
and the patched implementations are released for dissemination across the
ecosystem
during the first half of 2023. Date of full disclosure is set for
mid-October.
During the first weeks of October, while I was writing more
proof-of-concepts and
doing experimental tests of replacement cycling attacks affecting
Lightning, I realized
that a multi-party transaction could be pinned in the mempool with a branch
of jun
children blocking further RBF or CPFP of the multi-party transaction and
once a
replacement cycling trick have been played to kick out the junk children,
the multi-party
transaction is dropped out of the victim's mempool.
A simple proof-of-concept of this attack variant was immediately shared
with the
bitcoin core sec list members. As the full disclosure date was already
announced
for the lightning maintainers, I took the initiative to keep the initial
schedule
for the full disclosure of replacement cycling attacks on the lightning
network.
During the month of September 2024, Peter Todd published a blog post
("Soft-Fork/
Covenant Dependent Layer 2 Review") with a section 4.3 on Replacement
Cycling
pointing out how RCA could be a form of economic exploit on miners.
## Background: Block template Construction, Multi-Party Transaction and
Replace-by-Fee
In Bitcoin, all full-nodes are by default participating in the
transaction-relay
network, announcing and broadcasting new transactions to each other. Among
the
full-nodes, miners are specific full-nodes searching for a valid
proof-of-work
to be allowed to add a new block on the chain tip. While searching for a
proof-of-work,
a mining node generates a block template from its local mempools, a cache
for
the unconfirmed transactions. The block template is generally a collection
of
unconfirmed transactions sorted by highest paying fees. Miners are
incentivized
to put transactions in a block template, as there are obtaining the fees.
Among all the bitcoin transaction traffic flowing on the transaction-relay
network,
there are numerous transactions which have being historically and which are
still
multi-party transactions, e.g payout batch transaction, coinjoin
transaction,
lightning liquidity allocating transactions batching, colored coins
transactions, etc.
One aspect of this multi-party transaction is that the inputs and the
outputs might
dissociatively belong to a number of users equal or superiors to 2.
However, as soon
as an input or an output are added to a transaction, this enable the owner
of this
transaction component to eventually interferes with the propagation of the
transaction.
One mempool mechanism affecting the propagation of a transaction over the
transaction-relay
network is the replace-by-fee policy. Originally sketched out loosely by
Satoshi Nakamoto,
it was implemented in Bitcoin Core 0.12.0, and since them there have many
(ongoing)
refinement to the replace-by-fee policy. Roughly the mechanism works in the
following way
by generating a new transaction with higher absolute fee / higher feerate,
an in-mempool
transaction spending some of the same coin can be kicked out of the mempool.
## The Problem: Forgeability of a Miner Block Template Ordering
When a miner is assembling a collection of transactions to constitute a
block template
for the next block finding, they have to order this block template
accordingly to the
state of their local(s) mempool(s). This state is ordered by the miner to
compose the
highest rewarding block according to some classifying algorithm (e.g
ancestor-feerate)
However, the generation of a block template is done "discretely" from the
local mempool
state and this state can be read / write in an open way by
transaction-relay peers, by
abusing the replace-by fee mechanism or the expiration time of
transactions, among other
tricks.
Informally, a local mempool can be computationally forged if the average
quantity of
fees for a single unit is inferior to the attacker's mempool one for a
given measurement
unit (be it virtual bytes or weight), while the forgery cost for the
attacker stay under
the average expected return of engaging in a forgery.
Of course, mempools consistency has never been a design goal of bitcoin
transaction-relay
in a distributed system like the peer-to-peer transaction-relay network,
and some amount
of "forgery" has always been expected. Nevertheless, it appears from
testing and analysis
there can be significant margins of exploitation offered to malicious
hashrate adversaries.
One such margin of exploitation can be instantiated by mounting a
replacement cycling attack
on a miner mempool.
## A Simple Replacement Cycling Attack on a Miner Mempool Example
Let's say Mallet and Mary are both miners with equivalent hashrate
capabilities (i.e
the same odds to mine a block for a given period). Alice is an exchange
doing batch
payment to pay its users withdrawing funds from the exchange. Mary is a
solo miner
with limited CPUs / memory resources and she is refreshing her mining jobs
with a
`getblocktemplate` only once by minute.
During the setup phase of the attack, Mallet opens 2 low-value accounts at
Alice's
exchange and wait for the time lapse of the next batch payout to be reached
to ask
her 2 accounts to make a deposit.
Alice builds a batch payout transactions with N outputs for her honest
users and 2
more outputs for Mallet. The transaction is finalized and broadcasts over
the network
of mempools for inclusion in a block template. The Alice batch transaction
is of
size 1000, with ~10 payout for a feerate of 2 satoshis per virtual byte.
As soon as Alice's batch transaction starts to propagate, Mallet consumes
its 2 outputs
with 2 chain of junk transactions to reach max package limits (25
descendants) and block
the carve-out. The junk transactions are of size 150 bytes and feerates 2
satoshis per
virtual byte and they have 2 parents: one Alice's payout UTXO and one
Mallet's UTXO.
Starting from this point, Alice's exchange server logic should either (a)
attempts a CPFP
or (b) attempts a RBF on the batch transaction. As there is no global
mempool, Alice is
uncertain on the explanation for the lack of propagation of her batch
transaction, it is
most likely she will broadcast a feerate increase in the dark. To replace
Alice's parent
batch transaction and Mallet's junk children transaction, a replace-by-fee
must have
an absolute fee superior to 9800 satoshis. The replace-by-fee transaction
is assumed to
be blocked by Mallet as this absolute fee, so its fees are 9800 satoshis.
The feerate increase transaction (a RBF or CPFP) should be negated by
Mallet outbid
by the constant cycle of replacement junk transaction. As soon as the RBF
or CPFP has
been re-cycled out for a give period, the chain of junk replacement
transaction can
be re-attached on another package to provoke a higher replace-by-fee from
Alice's server.
If the counter-square of the Alice's RBF and the subsequent replacement out
of Mallet's
transaction is achieved before Mary is fetching the latest highest feerate
group of the
mempools, she should only get Alice root's batch transaction and Mallet's
junk children
transactions.
At equal odds of mining blocks, the absolute fees yield by their respective
block template
is the following:
- Mary's block template: 9800 satoshis
- Mallet's block template: 17600 satoshis
The question is from where Mallet's advantage is coming. As the owner of
the utxos used
to build the chain of junk transactions, he can cumulate both spending
Alice's utxo with
her own replace-by-fee transaction and a withhold chain of new transactions
spending his
non-collaborative UTXOs. Mary is only seeing in her mempool the latest
result of mempool
acceptance, and not the highest combination of absolute fees for a
combination of given
UTXOs.
It should be noted, the advantage of Mallet can be diluted with the number
of replacement
cycling done to block the fee-bump of Alice's batch transaction, due to the
RBF penalty.
However, the penalty can be compensated by targeting many unrelated
multi-party transactions.
## Solutions
I'm marking few solutions that could improve replacement cycling attacks on
miners block
template, while their exact efficiency is still a subject to be analyzed.
Cluster mempool: this is a proposal to associate each unconfirmed
transaction in a mempool
with related transactions, creating a cluster. Each cluster contains
feerate-sorted chunks
consisting one or more transactions. Ideally, the cluster mempool would
allow to build more
efficient eviction and replacement algorithms on top of it. In the context
of RCA on miners,
it could potentially diminish the differential that can be generated at the
advantage of the
attacker.
Replace-by-Feerate: this is proposal to allow replacement to only happen
when it would
immediately bring a transaction close enough to the top of the mempool to
be mined in the
next block or so. In the context of RCA on miners, this could increase the
jamming cost
burdened by the attacker.
Chain of Transactions Topological Restrictions: currently, full-node
mempool are generally
allowing 25 ancestors and 25 descendants by default. By restraining the
topological dimensions
of a chain of transaction, this renders the computation of mempool
algorithms more tractable.
In the context of RCA on miners, this might have the indirect effect to
potentially diminish
the differential that can be generated at the advantage of the attacker.
UTXO-based Transaction Announcement: currently, transaction-relay is only
done based on the
txid or wtxid of a transaction. In the future, the best feerate known for a
set or subset
of UTXOs could be propagated among nodes, before they proceed to the actual
transaction relay.
In the context of RCA on miners, an enhanced mempool could be re-download
the best known
in the past transaction branch for a UTXO, if there is subsequent downgrade
of the best
feerate branch for this same given UTXO.
## Timeline
- 2022-12: Report of the replacement cycling attacks on lightning channel
to a selected
group of bitcoin core contributors and lightning maintainers
- 2023-06: Week of mid-october 2023 proposed for full disclosure of
replacement cycling attacks
on the Lightning Network
- 2023-08-10: CVEs assigned by MITRE for the Lightning project
- 2023-10-05: Pre-disclosure of LN CVEs numbers and replacement cycling
attack existence
to security@bitcoincore.org
- 2023-10-15: Finding that replacement cycling attack can put a DoS risk on
multi-party
transactions and the hypothetical effect on miners mempools ; Sharing of a
proof-of-conceptual test
to security@bitcoincore.org
- 2023-10-16: Full disclosure of CVE-2023-40231 / CVE-2023-40232/
CVE-2023-40233 / CVE-2023-40234
and replacement cycling attacks
- 2024-09-02: Peter Todd publishes a public blog post analysis some
soft-fork proposals and in
this post loosely mention the potential effect of RCA on miners
- 2024-09-07: Sharing to Peter Todd, Antoine Poinsot and Greg Maxwell the
proof-of-conceptual
test of RCA at the miner-level and hypothesis
- 2024-09-30: Sharing additional info on RCA at the miner-level to the same
group of 4 with
the addition of Michael Ford, Ava Chow and Eric Voskuil ; Proposal for a
disclosure in the last
weeks of January
- 2025-01-27: Full disclosure of "Replacement Cycling Attacks on Bitcoin
Miners Block Templates"
## Conclusion
By leveraging the replace-by-fee and mempool mechanisms of a mempool, an
adversarial miner can deliberately jam the quality of its competitors block
template, and gain an advantage
in the global distribution of the fee reward coming from confirmed
transactions. While the
exact practicality of this attack is still to be investigated, the main
tricks have been
tested both on a classic mempool on a bitcoin core running a 26.0 branch
and cluster-based
mempool on a bitcoin core node running a 29.0 branch.
Do not trust, verify. All mistakes and opinions are my own.
Antoine
"trust yourself when all men doubt you,
but make allowance for their doubting too" - K
--
You received this message because you are subscribed to the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bitcoindev+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/CALZpt%2BEnDUtfty3X%3Du2-2c5Q53Guc6aRdx0Z4D75D50ZXjsu2A%40mail.gmail.com.
--00000000000040cee0062cb1a68d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Hi all,<br><br>I'm writing a report to fully disclose =
the variant of replacement cycling attacks<br>enabling to censor transactio=
n traffic from miners block template and as such for<br>an attacker to achi=
eve a dominant strategy in the distribution of the bitcoin fee<br>reward fo=
r the generation of blocks in the longest valid chain among all honest<br>m=
ining nodes.<br><br>A proof-of-concept of this miner-level attack was teste=
d against a Bitcoin Core<br>26.0 branch before my previous disclosure of th=
e 16 October 2023 informing the community<br>on how the replace-by-fee mech=
anism could be used to break the security of the Lightning<br>channels. Dur=
ing the last months, it was independently rediscovered and noticed by<br>at=
least Peter Todd (and I guess few other smart observers...) that replaceme=
nt cycling<br>attacks can affect miners block templates.<br><br>While the p=
racticality of replacement cycling attacks in the real-world is still an<br=
>open question among the bitcoin protocol experts, in my personal and humbl=
e opinion<br>this variant of replacement cycling attack is severe for the p=
erennity of the bitcoin<br>ecosystem at large, even more in a post-subsidy =
world.<br><br>The attack shares some similarities with fill-and-dump tricks=
already known since years<br>among mempool experts, yet I think leveraging=
non-utxo owned transaction traffic, targeting<br>properties of a chain of =
transactions itself to mount those replacement cycling attacks variant<br>a=
nd combining those techniques in new exploitation model are all novel.<br><=
br>As part of the full disclosure, I'm making the following list of art=
ifacts publicly available.<br><br>Test of the feerate differential RCA vari=
ant on the classic mempool (bitcoin core branch 26.0 - commit 78b7e955):<br=
><a href=3D"https://github.com/ariard/bitcoin/commits/test-mempool-feerate-=
differential-rca/">https://github.com/ariard/bitcoin/commits/test-mempool-f=
eerate-differential-rca/</a><br><br>Test of the timing RCA on the classic m=
empool (bitcoin core branch 26.0 - commit 78b7e955):<br><a href=3D"https://=
github.com/ariard/bitcoin/commits/test-mempool-timing-rca/">https://github.=
com/ariard/bitcoin/commits/test-mempool-timing-rca/</a><br><br>Test of the =
feerate differential RCA variant on the cluster mempool (bitcoin core branc=
h 29.0 - commit 5acf12ba):<br><a href=3D"https://github.com/ariard/bitcoin/=
tree/test-mempool-feerate-differential-cluster-rca">https://github.com/aria=
rd/bitcoin/tree/test-mempool-feerate-differential-cluster-rca</a><br><br>Te=
st of the timing RCA variant on the cluster mempool (bitcoin core branch 29=
.0 - commit 5acf12ba):<br><a href=3D"https://github.com/ariard/bitcoin/tree=
/test-mempool-timig-cluster-rca">https://github.com/ariard/bitcoin/tree/tes=
t-mempool-timig-cluster-rca</a><br><br>Paper summarizing replacement cyclin=
g attacks on bitcoin miners block template:<br><a href=3D"https://github.co=
m/ariard/mempool-research/blob/2023-10-replacement-paper/rca-bmbt.pdf">http=
s://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/rca-b=
mbt.pdf</a><br><br>Original proof-of-concept RCA on bitcoin miners mempool =
from October 2023:<br><a href=3D"https://github.com/ariard/bitcoin/commits/=
2023-poc-miner-jamming/">https://github.com/ariard/bitcoin/commits/2023-poc=
-miner-jamming/</a><br><br>If you're not already familiar with the idea=
of replacement cycling attack, I can only <br>invite you to read the full =
disclosure report on how it affects Lightning:<br><a href=3D"https://github=
.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cyc=
ling.pdf">https://github.com/ariard/mempool-research/blob/2023-10-replaceme=
nt-paper/replacement-cycling.pdf</a><br><br>## Discovery<br><br>During the =
year 2022, eltoo lightning channels design are discussed, implemented<br>an=
d reviewed. In this context and after discussions on mempool anti-DoS rules=
, I<br>discovered that the replace-by-fee mechanism could be leveraged to b=
reak Lightning<br>channels security. The finding was reported at the near e=
nd of 2022 to some bitcoin<br>core developers and lightning maintainers.<br=
><br>During the year 2023, mitigations (mainly random rebroadcast of time-s=
ensitive<br>second-stage HTLC transactions) are implemented in the major li=
ghtning implementations<br>and the patched implementations are released for=
dissemination across the ecosystem<br>during the first half of 2023. Date =
of full disclosure is set for mid-October.<br><br>During the first weeks of=
October, while I was writing more proof-of-concepts and<br>doing experimen=
tal tests of replacement cycling attacks affecting Lightning, I realized<br=
>that a multi-party transaction could be pinned in the mempool with a branc=
h of jun<br>children blocking further RBF or CPFP of the multi-party transa=
ction and once a<br>replacement cycling trick have been played to kick out =
the junk children, the multi-party<br>transaction is dropped out of the vic=
tim's mempool.<br><br>A simple proof-of-concept of this attack variant =
was immediately shared with the<br>bitcoin core sec list members. As the fu=
ll disclosure date was already announced<br>for the lightning maintainers, =
I took the initiative to keep the initial schedule<br>for the full disclosu=
re of replacement cycling attacks on the lightning network.<br><br>During t=
he month of September 2024, Peter Todd published a blog post ("Soft-Fo=
rk/<br>Covenant Dependent Layer 2 Review") with a section 4.3 on Repla=
cement Cycling<br>pointing out how RCA could be a form of economic exploit =
on miners.<br><br>## Background: Block template Construction, Multi-Party T=
ransaction and Replace-by-Fee<br><br>In Bitcoin, all full-nodes are by defa=
ult participating in the transaction-relay<br>network, announcing and broad=
casting new transactions to each other. Among the<br>full-nodes, miners are=
specific full-nodes searching for a valid proof-of-work<br>to be allowed t=
o add a new block on the chain tip. While searching for a proof-of-work,<br=
>a mining node generates a block template from its local mempools, a cache =
for<br>the unconfirmed transactions. The block template is generally a coll=
ection of<br>unconfirmed transactions sorted by highest paying fees. Miners=
are incentivized<br>to put transactions in a block template, as there are =
obtaining the fees.<br><br>Among all the bitcoin transaction traffic flowin=
g on the transaction-relay network,<br>there are numerous transactions whic=
h have being historically and which are still<br>multi-party transactions, =
e.g payout batch transaction, coinjoin transaction, <br>lightning liquidity=
allocating transactions batching, colored coins transactions, etc.<br>One =
aspect of this multi-party transaction is that the inputs and the outputs m=
ight<br>dissociatively belong to a number of users equal or superiors to 2.=
However, as soon<br>as an input or an output are added to a transaction, t=
his enable the owner of this<br>transaction component to eventually interfe=
res with the propagation of the transaction.<br><br>One mempool mechanism a=
ffecting the propagation of a transaction over the transaction-relay<br>net=
work is the replace-by-fee policy. Originally sketched out loosely by Satos=
hi Nakamoto,<br>it was implemented in Bitcoin Core 0.12.0, and since them t=
here have many (ongoing)<br>refinement to the replace-by-fee policy. Roughl=
y the mechanism works in the following way<br>by generating a new transacti=
on with higher absolute fee / higher feerate, an in-mempool<br>transaction =
spending some of the same coin can be kicked out of the mempool.<br><br>## =
The Problem: Forgeability of a Miner Block Template Ordering<br><br>When a =
miner is assembling a collection of transactions to constitute a block temp=
late<br>for the next block finding, they have to order this block template =
accordingly to the<br>state of their local(s) mempool(s). This state is ord=
ered by the miner to compose the<br>highest rewarding block according to so=
me classifying algorithm (e.g ancestor-feerate)<br><br>However, the generat=
ion of a block template is done "discretely" from the local mempo=
ol<br>state and this state can be read / write in an open way by transactio=
n-relay peers, by<br>abusing the replace-by fee mechanism or the expiration=
time of transactions, among other<br>tricks.<br><br>Informally, a local me=
mpool can be computationally forged if the average quantity of<br>fees for =
a single unit is inferior to the attacker's mempool one for a given mea=
surement<br>unit (be it virtual bytes or weight), while the forgery cost fo=
r the attacker stay under<br>the average expected return of engaging in a f=
orgery.<br><br>Of course, mempools consistency has never been a design goal=
of bitcoin transaction-relay<br>in a distributed system like the peer-to-p=
eer transaction-relay network, and some amount<br>of "forgery" ha=
s always been expected. Nevertheless, it appears from testing and analysis<=
br>there can be significant margins of exploitation offered to malicious ha=
shrate adversaries.<br>One such margin of exploitation can be instantiated =
by mounting a replacement cycling attack<br>on a miner mempool.<br><br>## A=
Simple Replacement Cycling Attack on a Miner Mempool Example<br><br>Let=
9;s say Mallet and Mary are both miners with equivalent hashrate capabiliti=
es (i.e<br>the same odds to mine a block for a given period). Alice is an e=
xchange doing batch<br>payment to pay its users withdrawing funds from the =
exchange. Mary is a solo miner<br>with limited CPUs / memory resources and =
she is refreshing her mining jobs with a<br>`getblocktemplate` only once by=
minute.<br><br>During the setup phase of the attack, Mallet opens 2 low-va=
lue accounts at Alice's<br>exchange and wait for the time lapse of the =
next batch payout to be reached to ask<br>her 2 accounts to make a deposit.=
<br><br>Alice builds a batch payout transactions with N outputs for her hon=
est users and 2<br>more outputs for Mallet. The transaction is finalized an=
d broadcasts over the network<br>of mempools for inclusion in a block templ=
ate. The Alice batch transaction is of<br>size 1000, with ~10 payout for a =
feerate of 2 satoshis per virtual byte.<br><br>As soon as Alice's batch=
transaction starts to propagate, Mallet consumes its 2 outputs<br>with 2 c=
hain of junk transactions to reach max package limits (25 descendants) and =
block<br>the carve-out. The junk transactions are of size 150 bytes and fee=
rates 2 satoshis per<br>virtual byte and they have 2 parents: one Alice'=
;s payout UTXO and one Mallet's UTXO.<br><br>Starting from this point, =
Alice's exchange server logic should either (a) attempts a CPFP<br>or (=
b) attempts a RBF on the batch transaction. As there is no global mempool, =
Alice is<br>uncertain on the explanation for the lack of propagation of her=
batch transaction, it is<br>most likely she will broadcast a feerate incre=
ase in the dark. To replace Alice's parent<br>batch transaction and Mal=
let's junk children transaction, a replace-by-fee must have<br>an absol=
ute fee superior to 9800 satoshis. The replace-by-fee transaction is assume=
d to<br>be blocked by Mallet as this absolute fee, so its fees are 9800 sat=
oshis.<br><br>The feerate increase transaction (a RBF or CPFP) should be ne=
gated by Mallet outbid<br>by the constant cycle of replacement junk transac=
tion. As soon as the RBF or CPFP has<br>been re-cycled out for a give perio=
d, the chain of junk replacement transaction can<br>be re-attached on anoth=
er package to provoke a higher replace-by-fee from Alice's server.<br><=
br>If the counter-square of the Alice's RBF and the subsequent replacem=
ent out of Mallet's<br>transaction is achieved before Mary is fetching =
the latest highest feerate group of the<br>mempools, she should only get Al=
ice root's batch transaction and Mallet's junk children<br>transact=
ions.<br><br>At equal odds of mining blocks, the absolute fees yield by the=
ir respective block template<br>is the following:<br>- Mary's block tem=
plate: 9800 satoshis<br>- Mallet's block template: 17600 satoshis<br><b=
r>The question is from where Mallet's advantage is coming. As the owner=
of the utxos used<br>to build the chain of junk transactions, he can cumul=
ate both spending Alice's utxo with<br>her own replace-by-fee transacti=
on and a withhold chain of new transactions spending his<br>non-collaborati=
ve UTXOs. Mary is only seeing in her mempool the latest result of mempool<b=
r>acceptance, and not the highest combination of absolute fees for a combin=
ation of given<br>UTXOs.<br><br>It should be noted, the advantage of Mallet=
can be diluted with the number of replacement<br>cycling done to block the=
fee-bump of Alice's batch transaction, due to the RBF penalty.<br>Howe=
ver, the penalty can be compensated by targeting many unrelated multi-party=
transactions.<br><br>## Solutions<br><br>I'm marking few solutions tha=
t could improve replacement cycling attacks on miners block<br>template, wh=
ile their exact efficiency is still a subject to be analyzed.<br><br>Cluste=
r mempool: this is a proposal to associate each unconfirmed transaction in =
a mempool<br>with related transactions, creating a cluster. Each cluster co=
ntains feerate-sorted chunks<br>consisting one or more transactions. Ideall=
y, the cluster mempool would allow to build more<br>efficient eviction and =
replacement algorithms on top of it. In the context of RCA on miners,<br>it=
could potentially diminish the differential that can be generated at the a=
dvantage of the<br>attacker.<br><br>Replace-by-Feerate: this is proposal to=
allow replacement to only happen when it would<br>immediately bring a tran=
saction close enough to the top of the mempool to be mined in the<br>next b=
lock or so. In the context of RCA on miners, this could increase the jammin=
g cost<br>burdened by the attacker.<br><br>Chain of Transactions Topologica=
l Restrictions: currently, full-node mempool are generally<br>allowing 25 a=
ncestors and 25 descendants by default. By restraining the topological dime=
nsions<br>of a chain of transaction, this renders the computation of mempoo=
l algorithms more tractable.<br>In the context of RCA on miners, this might=
have the indirect effect to potentially diminish<br>the differential that =
can be generated at the advantage of the attacker.<br><br>UTXO-based Transa=
ction Announcement: currently, transaction-relay is only done based on the<=
br>txid or wtxid of a transaction. In the future, the best feerate known fo=
r a set or subset<br>of UTXOs could be propagated among nodes, before they =
proceed to the actual transaction relay.<br>In the context of RCA on miners=
, an enhanced mempool could be re-download the best known<br>in the past tr=
ansaction branch for a UTXO, if there is subsequent downgrade of the best<b=
r>feerate branch for this same given UTXO.<br><br>## Timeline<br><br>- 2022=
-12: Report of the replacement cycling attacks on lightning channel to a se=
lected<br>group of bitcoin core contributors and lightning maintainers<br>-=
2023-06: Week of mid-october 2023 proposed for full disclosure of replacem=
ent cycling attacks<br>on the Lightning Network<br>- 2023-08-10: CVEs assig=
ned by MITRE for the Lightning project<br>- 2023-10-05: Pre-disclosure of L=
N CVEs numbers and replacement cycling attack existence<br>to <a href=3D"ma=
ilto:security@bitcoincore.org">security@bitcoincore.org</a><br>- 2023-10-15=
: Finding that replacement cycling attack can put a DoS risk on multi-party=
<br>transactions and the hypothetical effect on miners mempools ; Sharing o=
f a proof-of-conceptual test<br>to <a href=3D"mailto:security@bitcoincore.o=
rg">security@bitcoincore.org</a><br>- 2023-10-16: Full disclosure of CVE-20=
23-40231 / CVE-2023-40232/ CVE-2023-40233 / CVE-2023-40234<br>and replaceme=
nt cycling attacks<br>- 2024-09-02: Peter Todd publishes a public blog post=
analysis some soft-fork proposals and in<br>this post loosely mention the =
potential effect of RCA on miners<br>- 2024-09-07: Sharing to Peter Todd, A=
ntoine Poinsot and Greg Maxwell the proof-of-conceptual<br>test of RCA at t=
he miner-level and hypothesis<br>- 2024-09-30: Sharing additional info on R=
CA at the miner-level to the same group of 4 with<br>the addition of Michae=
l Ford, Ava Chow and Eric Voskuil ; Proposal for a disclosure in the last<b=
r>weeks of January<br>- 2025-01-27: Full disclosure of "Replacement Cy=
cling Attacks on Bitcoin Miners Block Templates"<br><br>## Conclusion<=
br><br>By leveraging the replace-by-fee and mempool mechanisms of a mempool=
, an adversarial miner can deliberately jam the quality of its competitors =
block template, and gain an advantage<br>in the global distribution of the =
fee reward coming from confirmed transactions. While the<br>exact practical=
ity of this attack is still to be investigated, the main tricks have been<b=
r>tested both on a classic mempool on a bitcoin core running a 26.0 branch =
and cluster-based<br>mempool on a bitcoin core node running a 29.0 branch.<=
br><br>Do not trust, verify. All mistakes and opinions are my own.<br><br>A=
ntoine <br><br>"trust yourself when all men doubt you,<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 but make allowance for their doubting too" - K<br></=
div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;Bitcoin Development Mailing List" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:bitcoindev+unsubscribe@googlegroups.com">bitcoind=
ev+unsubscribe@googlegroups.com</a>.<br />
To view this discussion visit <a href=3D"https://groups.google.com/d/msgid/=
bitcoindev/CALZpt%2BEnDUtfty3X%3Du2-2c5Q53Guc6aRdx0Z4D75D50ZXjsu2A%40mail.g=
mail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.com/=
d/msgid/bitcoindev/CALZpt%2BEnDUtfty3X%3Du2-2c5Q53Guc6aRdx0Z4D75D50ZXjsu2A%=
40mail.gmail.com</a>.<br />
--00000000000040cee0062cb1a68d--
|