Last month, developer 0xB10C discovered that the US mining pool was filtering transactions linked to OFAC-sanctioned addresses. A bug was also found in Bitcoin Core code that creates “block templates”.
In January, two issues emerged in Bitcoin: the potential practice of censorship by a mining pool and a bug in Bitcoin Core code that affects miner efficiency.
Transaction censorship by a mining pool
Using the miningpool-observer project, 0xB10C monitored Bitcoin’s mempool and blocks to identify signs of censorship. The tool compares block templates generated by the Bitcoin Core node with those actually mined by pools. During the analysis, 0xB10C detected 15 transactions that were not included by some pools and were linked to addresses sanctioned by the OFAC (Office of Foreign Assets Control), suggesting that some pools were filtering transactions related to traffic considered illicit. One of the main actors was F2Pool.
All transactions initially excluded from blocks were later confirmed by other pools. Additionally, the exclusion of a transaction from a block doesn’t always indicate censorship. Various factors could influence non-inclusion, such as miners not having seen the transaction at the time of block creation, or choosing to prioritize transactions with higher fees. There could also be off-band payments that modify priorities without being detected by miningpool-observer.
A bug in Bitcoin Core code and implications for mining
The second update concerns a bug found in Bitcoin Core code, which manages block template creation. Specifically, the bug erroneously reserved 8,000 Weight Units (WU) for the coinbase transaction, while only 4,000 would be sufficient. This error led to less space for remaining transactions and smaller blocks, thus reducing overall efficiency for miners.
When analyzing blocks mined in recent weeks, it’s notable that most mining pools continue to use the Bitcoin Core template and are therefore impacted by this bug. Data shows that most pools use less than 2,000 WU for the coinbase transaction, so Bitcoin Core’s default value of 4000WU is already more than sufficient. Bitcoin Core chooses to use such a large value to avoid the risk of miners accidentally creating blocks that are too large.
The issue becomes more complex when considering the possibility of fixing the bug. If the problem were solved, some mining pools that rely on the incorrect value from Bitcoin Core could produce invalid blocks, risking economic losses. Currently, only the Ocean pool and an unknown miner seem to create coinbase transactions exceeding 4,000 WU.
Furthermore, the only pool creating blocks larger than 3,920,000 WU (the limit imposed by the bug) is F2Pool, which appears to run customized patches on Bitcoin Core to optimize block generation, allowing them to remain competitive and more efficient compared to other pools that rely on Bitcoin Core’s original code.
Both the censorship of transactions by some pools and the bug in Bitcoin Core code are issues that, while impacting individual mining operations, do not compromise the security and decentralization of Bitcoin as a whole.