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.
In response to block #682170, mined by MARA Pool, I'm announcing a project I've been working on. I hope this brings transparency into mining pool transaction selection.— 0xB10C (@0xB10C) May 6, 2021
This compares block templates generated by my node to the blocks mined by pools.
Inspecting the block on miningpool.observer 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.
1/ A quick thread on “compliant” blocks mined so far by MARA group.— Seth For Privacy (@sethforprivacy) May 14, 2021
It’s important to remember that missing transactions are not necessarily censored, but could just be due to propagation delays or other normal network behavior.
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.