# Casual research on running \`mempoolfullrbf\`

**URL:** <https://delvingbitcoin.org/t/casual-research-on-running-mempoolfullrbf/1077>\
**Category:** Implementation\
**Tags:** mempool\
**Created:** [August 17, 2024, 7:29pm UTC](https://delvingbitcoin.org/t/casual-research-on-running-mempoolfullrbf/1077 "2024-08-17T19:29:00Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![valuedmammal](https://delvingbitcoin.org/letter_avatar_proxy/v4/letter/v/c6cbf5/32.png) [@valuedmammal](https://delvingbitcoin.org/u/valuedmammal)\
**Post date:** [August 17, 2024, 7:29pm UTC](https://delvingbitcoin.org/t/casual-research-on-running-mempoolfullrbf/1077/1 "2024-08-17T19:29:00Z")

</div>

![fullrbf](https://delvingbitcoin.org/uploads/default/original/1X/b1f95b0e64d56f3a63eb04df3031a81c23a03815.png)_scatterplot of ~2000 data points between heights 827650 and 856176_

---

<div class="post-metadata">

**Author:** ![0xB10C](https://delvingbitcoin.org/user_avatar/delvingbitcoin.org/0xb10c/32/15_2.png) [@0xB10C](https://delvingbitcoin.org/u/0xB10C)\
**Post date:** [August 19, 2024, 8:21am UTC](https://delvingbitcoin.org/t/casual-research-on-running-mempoolfullrbf/1077/2 "2024-08-19T08:21:15Z")

</div>

Hey @valuedmammal, it’s not clear to me what your chart shows.

---

<div class="post-metadata">

**Author:** ![valuedmammal](https://delvingbitcoin.org/letter_avatar_proxy/v4/letter/v/c6cbf5/32.png) [@valuedmammal](https://delvingbitcoin.org/u/valuedmammal)\
**Post date:** [August 19, 2024, 11:07am UTC](https://delvingbitcoin.org/t/casual-research-on-running-mempoolfullrbf/1077/3 "2024-08-19T11:07:49Z")

</div>

Right, the reason is that I tried to write a post and being a new user I couldn’t include more than one piece of media, so this is a work in progress for now while the writeup currently lives at [https://valuedmammal.github.io/](https://valuedmammal.github.io/). In short, this “score” is the fraction of block tx data in a newly confirmed block that was expected by the node’s recent block template.

---

<div class="post-metadata">

**Author:** ![valuedmammal](https://delvingbitcoin.org/letter_avatar_proxy/v4/letter/v/c6cbf5/32.png) [@valuedmammal](https://delvingbitcoin.org/u/valuedmammal)\
**Post date:** [August 27, 2024, 1:15am UTC](https://delvingbitcoin.org/t/casual-research-on-running-mempoolfullrbf/1077/4 "2024-08-27T01:15:31Z")

</div>

For comparison this is the plot taken from the BIP125 node over a similar block range.

 ![bip125](https://delvingbitcoin.org/uploads/default/original/1X/14be72bf3cb2c8bba9ec60ae8a847a99969138c1.jpeg)

---

<div class="post-metadata">

**Author:** ![valuedmammal](https://delvingbitcoin.org/letter_avatar_proxy/v4/letter/v/c6cbf5/32.png) [@valuedmammal](https://delvingbitcoin.org/u/valuedmammal)\
**Post date:** [August 27, 2024, 1:31am UTC](https://delvingbitcoin.org/t/casual-research-on-running-mempoolfullrbf/1077/5 "2024-08-27T01:31:46Z")

</div>

This is a test showing that the full-rbf node (B) saw significantly less variance in _score_. If you see any problem with the calculations or believe a different test would be more appropriate let me know.

 ![mempool-variance](https://delvingbitcoin.org/uploads/default/original/1X/88ea8bc0a69411555819a2f040811e596cd16f9d.jpeg)

* * *

## Discussion

An obvious confounding variable was **node uptime** which could affect network visability. The fullrbf node is an always-on server while the bip125 node is a pruned node on an old laptop that is off most of the time. I attempted to smooth out that variation by making sure the nodes were peered with one another giving them the opportunity to share their own mempool contents.

One of the reasons I took on this exploration was to engage in a larger discussion about the health of the p2p network. It’s important that node operators have a habit of monitoring statistics to track changes in usage by network participants.

The score is intentionally “dumb”. We would like it to have a value close to 1, but deviations from perfect aren’t necessarily a cause for concern. Indeed we expect to see variation by virtue of the distributed network - some nodes see some transactions and other nodes see others. It would be unrealistic to expect perfection from every block - certainly that would make it less useful as a metric. Thankfully I was surprised to observe such high p2p scores on a regular basis. In contrast, witnessing large or prolonged deviations could be a sign that either **1)** local policy has fallen adrift of the wider network or **2)** significant volumes of transactions are confirming having never entered the mempool to begin with.

In terms of policy I don’t take a stance on whether nodes should conform to miner practices or vice versa. I do think we should try to strike a balance between sane and reliable defaults while recognizing the need to evolve and adapt policy with the aim of making the mempool an efficient place where users will want to transact.

---

<div class="post-metadata">

**Author:** ![murch](https://delvingbitcoin.org/user_avatar/delvingbitcoin.org/murch/32/139_2.png) [@murch](https://delvingbitcoin.org/u/murch)\
**Post date:** [August 29, 2024, 4:44pm UTC](https://delvingbitcoin.org/t/casual-research-on-running-mempoolfullrbf/1077/6 "2024-08-29T16:44:21Z")

</div>

I would guess that the five minute snapshot interval could introduce a lot of noise especially for full-rbf replacements. My suspicion would be that transactions that have been full-rbf replaced are much more likely to be replaced another time within the next few minutes than transactions that were not get replaced. In that case they would show up as missing in both configurations. I guess what you really would want is to measure how many transactions had to be retrieved from peers after a block announcement.

@0xB10C, was it you that published some numbers in that regard recently?

---

<div class="post-metadata">

**Author:** ![valuedmammal](https://delvingbitcoin.org/letter_avatar_proxy/v4/letter/v/c6cbf5/32.png) [@valuedmammal](https://delvingbitcoin.org/u/valuedmammal)\
**Post date:** [August 31, 2024, 1:28pm UTC](https://delvingbitcoin.org/t/casual-research-on-running-mempoolfullrbf/1077/7 "2024-08-31T13:28:00Z")

</div>

Murch might be referring to the research on block reconstruction which I agree is pretty remarkable

> <https://github.com/bitcoin/bitcoin/pull/30493#issuecomment-2263336312>
>
> \> I shared my concerns with another bitcoiner who likes to monitor network healt…h, they replicated, and got similar results (which I presume they'll share eventually).
> 
> Correct, I too found enabling \`mempoolfullrbf\` to be helpful for compact block reconstruction without requesting transactions. 
> 
> By analyzing compact block reconstructions in the debug.logs (with \`debug=cmpctblock\` enabled) of my \[monitoring nodes\](https://public.peer.observer/), I noticed that many block reconstructions need an additional round-trip to fetch unknown transactions. While this situation has slightly improved over the last weeks (~50% -\> 70+%) as mempool activity died down, this still clearly shows a divergence in policy.
> 
> I suspected that the divergence might originate from \[nearly all pools\](https://github.com/bitcoin/bitcoin/pull/28132#issuecomment-2059120917) mining with mempoolfullrbf. I enabled \`-mempoolfullrbf=1\` on the monitoring node/host \`erin\` on 2024-07-26. Since then, this node needed request transactions during significantly fewer blocks reconstructions than the other nodes.
> 
> Concept ACK
> 
> !\[image\](https://github.com/user-attachments/assets/a1d62976-e727-4ad9-a324-669970de8730)
> \<sub\>(note that while 75% or so might show up as light green here, doesn't necessarily mean that 75% is "good". Ideally, we want this to be close to 100% of blocks reconstructions needing no transaction requests)\</sub\>
