miningpool-observer: Observing Bitcoin Mining Pools

Transparency for Mining Pool Transaction Selection
Thursday, May 6, 2021

My miningpool-observer project aims to bring transparency to mining pool transaction selection. The tool can detect missing and extra transactions in blocks. One goal is to detect censorship by mining pools.

The idea for this project originated while reading the article Bitcoin Miner Transaction Fee Gathering Capability by BitMex Research. They touch on a new North American mining pool called Marathon that announced that they plan to filter out transactions that are not OFAC compliant. While this wouldn’t cause immediate problems for Bitcoin, as there are plenty of other pools mining these transactions, it’s still valuable to get an overview of mining pool censorship on the Bitcoin network.

Marathon Digital Holdings announced in a press release on March 30th, 2021, that they have licensed technology to set up a mining pool that allows them to filter transactions. Around the same time, I started my work on miningpool-observer. The goal was to have the tool ready from the day Marathon starts to mine blocks to check if they are leaving transactions out.

On May 5th, Marathon published a press release stating they have directed all of their hashrate to the new pool. On May 6th, they mined their first block 682170. The coinbase message stated:

As planned, I published my mingingpool-observer project on the same day.

Inspecting the block on reveals that they’ve mined 166 transactions which the node powering miningpool-observer would have mined too, included 12 extra transactions, and had 5 missing transactions. These 5 missing transactions were only seen 12 seconds before the block was mined, which indicates that the pool might not have seen them yet as most pools update the block they are mining about every 30 seconds. The 12 extra transactions the pool include consist of the coinbase transaction and 11 low feerate transactions my node didn’t consider as it knew about the 5 missing transactions that paid a higher feerate. It was also pointed out that the block did include transactions sending to the Russian Darknet market Hydra Market.

Similarly, the next Marathon Pool blocks did not filter transactions to or from OFAC-compliant addresses.

On May 31st, Marathon Digital Holdings published a third press release stating they’ve ceased to filter transactions as they’re upgrading to Bitcoin Core v0.21.1 to signal taproot. We didn’t see Marathon Pool leave out and include any OFAC-sanctioned transactions during these 25 days of mining OFAC-compliant blocks, likely due to OFAC-sanctioned transactions being rare.

I’ve given a talk at the MIT Bitcoin Expo 2022 about this project. I discuss implementation details and other findings there. See here for slides and a recording.

This summary was written in December 2022.

All text and images in this work are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License Creative Commons License


Image for bitcoind-observer

June 27, 2021


My experimental bitcoind-observer tool is a Bitcoin Core Prometheus metrics exporter utilizing and demonstrating the newly added tracepoints in Bitcoin Core.


Image for (2020 version)

January 31, 2020 (2020 version)

The website shows Bitcoin protocol layer statistics. This includes statistics about Bitcoin transactions, their in- and outputs, about blocks and Bitcoin scripts. The project is a joint effort with Bitrefill CEO @ziggamon.