@@ -31,12 +31,57 @@ Club][] meeting, highlighting some of the important questions and
31
31
answers. Click on a question below to see a summary of the answer from
32
32
the meeting.*
33
33
34
- FIXME: stickies-v
34
+ [ Improve TxOrphanage denial of service bounds] [ review club 31829 ] is a
35
+ PR by [ glozow] [ gh glozow ] that changes ` TxOrphanage ` eviction logic to
36
+ guarantee each peer the resources for at least 1 maximum-size package
37
+ worth of orphan resolution. These new guarantees significantly improve
38
+ [ 1-parent-1-child opportunistic package relay] [ 1p1c relay ] ,
39
+ especially (but not only) under adversarial conditions.
40
+
41
+ The PR modifies existing global orphanage limits, and introduces new
42
+ per-peer ones. Together, they protect against both excessive memory
43
+ usage and computational exhaustion. The PR also replaces the
44
+ random eviction approach with an algorithmic one, calculating a per-peer
45
+ DoS Score.
46
+
47
+ _ Note: the PR has undergone [ a few significant changes] [ review club
48
+ 31829 changes] since the Review Club, most importantly using a latency
49
+ score limit instead of an announcement limit._
35
50
36
51
{% include functions/details-list.md
37
- q0="FIXME"
38
- a0="FIXME"
39
- a0link="https://bitcoincore.reviews/32317#l-37FIXME "
52
+ q0="Why is the current TxOrphanage global maximum size limit of 100
53
+ transactions with random eviction problematic?"
54
+ a0="It allows a malicious peer to flood a node with orphan
55
+ transactions, eventually causing all legitimate transactions from
56
+ other peers to be evicted. This can be used to prevent opportunistic
57
+ 1-parent-1-child transaction relay from succeeding, since the child wouldn't
58
+ be able to stay in the orphanage for long."
59
+ a0link="https://bitcoincore.reviews/31829#l-12 "
60
+ q1="How does the new eviction algorithm work at a high level?"
61
+ a1="Eviction is no longer random. The algorithm identifies the
62
+ “worst-behaving” peer based on a “DoS score” and evicts the oldest
63
+ transaction announcement from that peer. This protects well-behaved
64
+ peers from having their transactions' children evicted by a
65
+ misbehaving peer."
66
+ a1link="https://bitcoincore.reviews/31829#l-19 "
67
+ q2="Why is it desirable to allow peers to exceed their individual
68
+ limits while the global limits are not reached?"
69
+ a2="Peers may be using more resources simply because they are a
70
+ helpful peer, who's broadcasting useful transactions such as CPFPs."
71
+ a2link="https://bitcoincore.reviews/31829#l-25 "
72
+ q3="The new algorithm evicts announcements instead of transactions.
73
+ What is the difference and why does it matter?"
74
+ a3="An announcement is a pair of a transaction and the peer who sent
75
+ it. By evicting announcements, a malicious peer cannot evict a
76
+ transaction that was also sent by an honest peer."
77
+ a3link="https://bitcoincore.reviews/31829#l-34 "
78
+ q4="What is a peer’s “DoS Score” and how is it calculated?"
79
+ a4="A peer's DoS score is the maximum of its “memory score” (memory
80
+ used / memory reserved) and “CPU score” (announcements made /
81
+ announcement limit). Using a single combined score simplifies eviction
82
+ logic into a single loop that targets the peer most aggressively
83
+ exceeding either of its limits."
84
+ a4link="https://bitcoincore.reviews/31829#l-133 "
40
85
%}
41
86
42
87
## Releases and release candidates
@@ -94,3 +139,7 @@ repo], and [BINANAs][binana repo]._
94
139
[ news358 bolts ] : /en/newsletters/2025/06/13/#bolts-1243
95
140
[ news312 spv ] : /en/newsletters/2024/07/19/#bdk-1489
96
141
[ news360 bip380 ] : /en/newsletters/2025/06/27/#bips-1803
142
+ [ review club 31829 ] : https://bitcoincore.reviews/31829
143
+ [ gh glozow ] : https://github.com/glozow
144
+ [ review club 31829 changes ] : https://github.com/bitcoin/bitcoin/pull/31829#issuecomment-3046495307
145
+ [ 1p1c relay ] : /en/bitcoin-core-28-wallet-integration-guide/#one-parent-one-child-1p1c-relay
0 commit comments