Measuring minrelaytxfee across the Bitcoin network

This post looks at the minimum relay fees that Bitcoin nodes advertise through the FEEFILTER message.

I crawled the Bitcoin network to record the minimum relay fee advertised by reachable nodes through the FEEFILTER message.

The scan used a modified version of virtu’s p2p-crawler which connects to every node, waits up to three minutes for a FEEFILTER message, and records the result. If no FEEFILTER message is received within the timeout the node is listed as “No FEEFILTER sent.”

Only nodes that accept inbound connections are included, and the results are based only on what each node advertises in its FEEFILTER message. I don’t think nodes have a reason to fake this field, but I suppose it’s possible, and I did not perform additional checks such as sending test transactions or monitoring relays.

Two full scans were run on 10/09 and 15/09.

Networks covered

Network Nodes 10/09 Nodes 15/09
i2p 2,980 (10.6%) 3,081 (10.8%)
ipv4 9,020 (32.0%) 8,681 (30.4%)
ipv6 2,002 (7.1%) 2,008 (7.0%)
onion_v3 14,216 (50.4%) 14,769 (51.8%)

Reported minimum relay fees

MinRelayFee Nodes 10/09 Nodes 15/09
1000 25,125 (89.0%) 24,695 (86.5%)
No FEEFILTER sent 2,135 (7.6%) 2,331 (8.2%)
100 569 (2.0%) 1105 (3.9%)
9170997 84 (0.3%) 73 (0.3%)
1 81 (0.3%) 91 (0.3%)

(Because categories with very few nodes were excluded, the percentages do not add up to exactly 100%.)

Network-by-Network Breakdown

i2p

MinRelayFee Nodes 10/09 Nodes 15/09
1000 2,862 (96.0%) 2,844 (93.6%)
100 61 (2.0%) 143 (4.6%)
No FEEFILTER sent 20 (0.7%) 21 (0.7%)

IPv4

MinRelayFee Nodes 10/09 Nodes 15/09
1000 6,879 (76.3%) 6,295 (72.5%)
No FEEFILTER sent 1,758 (19.5%) 1,924 (22.2%)
100 223 (2.5%) 307 (3.5%)

IPv6

MinRelayFee Nodes 10/09 Nodes 15/09
1000 1,685 (84.2%) 1,639 (81.6%)
No FEEFILTER sent 221 (11.0%) 239 (11.9%)
100 59 (2.9%) 69 (3.4%)

onion_v3

MinRelayFee Nodes 10/09 Nodes 15/09
1000 13,699 (96.4%) 13,877 (94.0%)
100 226 (1.6%) 586 (4.0%)
No FEEFILTER sent 136 (1.0%) 147 (1.0%)

Open questions

  • I was surprised to see that a large share of IPv4 nodes didn’t send a FEEFILTER. Peter Todd suggested these might be spy nodes. When I checked the IP addresses, I noticed several clusters of about 50 nodes sharing the same subnet, though I did not investigate further.
  • The 9170997 entries are a bit odd… I connected to a few of those nodes with Bitcoin Core and checked minfeefilter in getpeerinfo to make sure the crawler wasn’t wrongly parsing messages. The value really is what they’re advertising, but I have no idea why… if anyone has a theory, I’d love to hear it. EDIT: See 0xb10c’s explanation here [https://delvingbitcoin.org/t/measuring-minrelaytxfee-across-the-bitcoin-network/1989/3?u=danielabrozzoni]

Acknowledgments

The idea for this post was inspired by tweets from Murch (original tweet, correction)

Thanks to Peter Todd for a few pointers and a quick sanity check. All remaining errors are my fault :)

Built with Hugo
Theme Stack designed by Jimmy