Bitcoin Stack Alternate is a query and reply website for Bitcoin crypto-currency fans. It solely takes a minute to enroll.
Anyone can ask a query
Anyone can reply
The very best solutions are voted up and rise to the highest
Requested
Seen
19 instances
Since 2015, Bitcoin Core has included a -limitdescendantcount
configuration parameter (added in this commit) that forbids a transaction in a node’s mempool from having greater than x descendants accepted into that mempool (default x is 25). I believe this addresses two issues:
-
Extreme package deal comparisons: for ancestor feerate mining, a node builds a number of completely different digital packages containing associated transactions and derives their package deal feerate. If the package deal feerate is increased than the feerate of the person transactions contained inside it, the node will want to maintain and mine that package deal over the person transactions. The extra associated transactions there are in a mempool, the higher the variety of packages that have to be in contrast; given the selection of 25 as the worth right here, I am guessing the variety of comparisons that must be made is not combinatorial however will be exponential within the worst case.
-
Wasted bandwidth and censorship: if a node accepts one father or mother with as many descendents as is feasible to slot in its mempool, then a miner producing a block with a transaction that conflicts with the father or mother can invalidate your complete mempool. This will waste an enormous quantity of relay node bandwidth (~150 MB each 10 minutes instances ~50,000 nodes is 540 TB per day, not together with inv overhead). It could additionally have the ability to use this mechanism to forestall different folks’s unrelated transactions from confirming at low value to the denial of service attacker.
Which of these issues is the one that the majority motivates holding this restrict at 25? I understand the reply there could be opinionated (and so a poor alternative for this website), however think about that we needed to disentangle the issues and have two completely different limits: one for stopping extreme comparisons and one for lowering the liklihood of wasted bandwidth. In that case, what limitdescendantcount
values would we use for every of these completely different instances?