BTC's censorship resistance faces challenges: F2Pool filters transaction details of US sanctioned addresses

BTC's censorship resistance faces challenges: F2Pool filters transaction details of US sanctioned addresses

My project miningpool-observer is used to detect transactions that should have been included in Bitcoin mining pools but were not. In the past few weeks, miningpool-ovserver has found 6 transactions that were not included from OFAC sanctioned addresses. This article will explore whether these transactions were intentionally filtered out because they came from OFAC sanctioned addresses, or if there are other possibilities that could explain why these transactions were not included in Bitcoin blocks. I concluded that it is very likely that 4 of the 6 transactions were intentionally filtered out.

In September and October 2023, the miningpool-observer RSS feed reported six blocks that did not contain transactions to OFAC sanctioned addresses. One of the blocks was mined by the ViaBTC mining pool, another by the Foundry USA mining pool, and four by F2Pool. OFAC-sanctioned transactions are transactions that send or receive money to addresses sanctioned by the U.S. Treasury Department's Office of Foreign Assets Control. I maintain a tool that extracts a list of OFAC sanctioned addresses from the OFAC-published Specially Designated Nationals (SDN) list (https://github.com/0xB10C/ofac-sanctioned-digital-currency-addresses).

There are several reasons why a transaction may not be included in a block. Often, transactions are not transmitted fairly across the network, which does not have a global memory pool. Each node has its own set of valid transactions. Pools can also prioritize out-of-band payment transactions, but can also deprioritize or filter out transactions.

Our goal is to determine if mining pools are filtering any of the 6 OFAC sanctioned transactions, or if there are other possible explanations for their non-inclusion. Note that mining pools are free to choose which transactions to include and which not to include. However, to analyze Bitcoin’s censorship resistance, it is critical to know which mining pools are filtering transactions and in what quantities.

My conclusion is that the miningpool-observer reports showing that the ViaBTC and Foundry blocks do not include sanctioned transactions are likely false positives and not intentional filtering of transactions. However, the transactions not included in the F2Pool block are likely to have been filtered out.

1. Block 808660 mined by ViaBTC

Block 808660..866c79c5 was mined by ViaBTC on September 21, 2023, and does not contain transaction 262025e7.. This transaction merges 100 input transactions into one output transaction. One of the input transactions is a payment to 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K. This address was added to the OFAC sanctions list on September 21, 2021.

The transaction size is 14.7 kvB, paying a fee of 25.18 sat/vByte. The output via the sanctioned address is 0.0002 BTC (20k sat), and was created just the day before. When ViaBTC mined block 808660, the transaction had been in my node memory pool for about 75 minutes. It does not rely on transactions in the memory pool at all.

Template and block weight rate allocation for block 808660

Looking at the fee distribution of block 808660 on miningpool.observer, we can see that ViaBTC's priority transactions took up about 1 MWU of block space, out of a total of 4 MWU. These transactions may have originated from the ViaBTC Bitcoin Transaction Accelerator. Prioritizing certain transactions means that low-fee transactions (such as transaction expenditures from sanctioned addresses here) do not enter the block. For this ViaBTC block, my miningpool-observer lists 24 large merged transactions that did not enter the block.

This leads to the conclusion that ViaBTC did not filter this transaction. It was replaced by other priority transactions. It turns out that three days later, ViaBTC processed a transaction spending from the same sanctioned address in block 809181.

2. Block 813231 mined by Foundry USA

Block 813231..0a8528b6 was mined by Foundry USA on October 21, 2023, and does not contain transaction c9b57191.. This transaction merged 150 transaction inputs into one transaction output. One of the inputs paid to the address 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML. This address was added to OFAC's sanctions list on April 14, 2023.

Most of the 150 inputs are 2/3 multi-signature P2SH scripts, and the unincluded transaction data is large, 43842 vBytes. The transaction has a fee rate of 5.09 sat/vByte and does not rely on in-mempool transactions. This fee rate is enough to rank it 161st out of 2215 transactions processed by my Bitcoin Core node. However, this transaction, along with 18 others, has only been in my mempool for about 30 seconds. So Foundry likely had no chance to include this transaction in their block because they were not aware of its existence yet.

It can take several seconds for a transaction to be transmitted. Also, most mining pools push new block templates to miners every 30 seconds, and it takes some time to switch to a new task. In addition, the miningpool-observer tool pulls new block templates every few seconds and makes the best match based on the least lost and extra transactions possible. This can cause false positives for new transactions that are still very young (maybe up to 60 seconds or so).

The Mempool.space block explorer also tracks the differences between the block template and the final block broadcast by the miners, and shows that the transaction c9b57191… was included in their template but not in the block. This transaction was also marked as “recently broadcasted” by them.

This leads to the conclusion that Foundry USA did not filter this transaction. The transaction was broadcast too late to be included in the mining operation that eventually found block 813231. In addition, Foundry USA also mined a new block at block height 813232 and included the sanctioned transaction in the new block.

3. Blocks 810727 , 811791 , 811920 and 813357 mined by F2Pool

F2Pool mined block 810727 (..ccda1498) on October 5, 2023, blocks 811791 (..af4453d6) and 811920 (..00badf62) on October 12, and block 813357 (..63ac1669) on October 22. Each block missed a sanctioned transaction. Each of these transactions merged 150 2/3 multi-signature inputs into a single output. One of the inputs in each transaction was a payment output to 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML. This is the same merge pattern and address discussed in the previous section. None of the missing transactions depend on transactions in the memory pool.

(1) Block 810727

In block 810727, F2Pool did not include transaction c6a66836.., which contains a sanctioned output. This transaction is quite large at 44017 vBytes, due to the 150 2/3 multi-signature inputs. It pays a fee of 446260 sats, and had been sitting in my node’s memory pool for nearly 4 hours when F2Pool mined block 810727. Instead of c6a66836.., F2Pool chose to include transaction 907e1f45.. instead. This transaction is also a merge transaction, merging 150 inputs into a single output, but does not include the sanctioned output. It pays the same fee of 446260 sats, but happens to be 3 vBytes larger at 44020 vBytes. This means that the fee rate of the unincluded transaction c6a66836.. is slightly higher than that of 907e1f45.. When sorting strictly by fee rate, the unincluded transaction should be included. However, the reality is that 3 vBytes of additional block space is unlikely to have an impact on total block fees.

(2) Block 811791

The sanctioned transaction aa001ce6.. was not included in block 811791 mined by F2Pools. Similar to the merged transaction mentioned above, the size of this transaction is 42459 vBytes (169836 WU), the transaction fee is 446260 sat, and the fee rate is 10.5 sat/vByte. When block 811791 came to the miningpool-observer node, the transaction had been in its memory pool for 4 minutes.

Notably missing from this block are five transactions with the OP_RETURN Stacks block commitment. However, F2Pool has inserted its own Stacks block commitment. This happens frequently and has been reported before. Additionally, F2Pool included two large zero-fee transactions in their block. One transaction merges the previous F2Pool coinbase output, and the other is a payment to the miner. This is a common practice for blocks mined by F2Pool.

While these additional transactions took up over 400 kWU of block space, there was still enough space to include the transaction aa001ce6.. The block included 2.86 MWU of transactions with a lower fee rate than aa001ce6.. (aa001ce6.. had a fee rate of 10.5 sat/vByte). This transaction was about 170 kWU in size and should have been included in the block. In mempool.space, this transaction was marked as "removed", which negatively affected their block health indicators.

(3) Block 811920

In block 811920, F2Pool did not include transaction 1cb3d6bc.., which contained a sanctioned spend. This transaction was also a large merge transaction, reaching 43630 vBytes (169836 WU), with a fee of 44660 sats, and a fee rate of 10.23 sat/vByte. When block 811920 arrived at the miningpool-observer node, the transaction had been in the node's memory pool for nearly 2 minutes.

In block 811920, there are 1.44 MWU transactions with a fee rate below 10.23 sat/vByte. The transaction 1cb3d6bc.. for 170 kWU should be included in this block. Since the transaction has only been in my node's memory pool for nearly two minutes, it is possible that the transaction has not been sent to F2Pool when F2Pool built the block template. The transaction is shown as "Latest Broadcast Transaction" on mempool.space. Usually, mining pools try to maintain a good connection with the Bitcoin network. If the transaction appears in the memory pool of mempool.space and miningpool.observer, then it is likely to appear in the memory pool of F2Pool as well.

(4) Block 813357

In block 813357 mined by F2Pool, transaction e49cdb60.. was not included, which contained a sanctioned expenditure. The size of this combined transaction was 43053 vBytes (172209 WU), the fee was 178504 sat, and the rate was 4.15 sat/vByte. When block 813357 reached the miningpool.observer node, the transaction had been in the node's memory pool for more than 25 minutes.

In block 813357, there are 684 kWU transactions with a fee rate below 4.15 sat/vByte. The 172 kWU transaction e49cdb60.. should be included in the block. Since the transaction stayed in my node memory pool for more than 25 minutes, it is unlikely that it was not transmitted to the F2Pools node. The transaction is also included in the block 813357 template in the mempool-space.

(5) F2Pools Block Summary

The sanctioned transaction not included in block 810727 has a slightly higher fee because it is 3 vBytes smaller than the included transaction. While the 3 vBytes of extra block space will have no impact on total fees, the Bitcoin Core block template algorithm will select the higher fee transaction. The large additional transaction included in block 811791 does not affect the sanctioned transaction not included in block 811791. It is likely filtered out. The block audit of mempool.space would agree. It is possible that F2Pool is not aware of the existence of the unincluded sanctioned transaction. However, for a large pool, 2 minutes should be enough time for a transaction to be accepted. Both mempool.space and miningpool-observer are aware of the existence of this transaction. The sanctioned transaction was not included because it was filtered out by F2Pool. Similar to the transaction not included in block 811791, the transaction not included in block 813357 may also have been filtered out by F2Pool.

Observing these four sanctioned transactions that were not included suggests that F2Pool is currently filtering transactions. Since we only see one transaction spending loss from the OFAC sanctioned address 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML, it is not possible to determine whether F2Pool is filtering only this one address or all OFAC sanctioned addresses.

4. Conclusion

This article explores six Bitcoin transactions from OFAC-sanctioned addresses that the miningpool-observer tool detected as not being included in blocks. The two transactions missed by the ViaBTC and Foundry USA pools were false positives, not filtered out. The four OFAC-sanctioned transactions missed in the F2Pool block were likely filtered out. This raises the question: why was F2Pool, which originated in Asia, the first mining pool to filter transactions based on OFAC sanctions?

However, the Bitcoin network continues to function as normal. One mining pool filtering transactions does not affect the censorship resistance of the entire Bitcoin network. Further monitoring of mining pools’ transaction selection could identify when more mining pools begin filtering transactions based on factors such as OFAC sanctions, and also allow miners migrating their hashrate to these mining pools to make an informed decision to switch to another mining pool if they disagree with a mining pool’s (unannounced) filtering policy.

<<:  Cryptocurrency options delivery: Market sentiment fluctuations from the biggest pain points of BTC and ETH

>>:  SBF prison life: living with the former president of Honduras, exchanging mackerel for services, and giving crypto investment advice to guards

Recommend

How to make up for facial imperfections

How to make up for facial imperfections In fact, ...

Which faces are likely to receive unexpected surprises?

Which faces are likely to receive unexpected surp...

NEM Ecosystem Company Tingjinke Selected to Implement Spot Payment Solution

Leveraging NEM blockchain technology to optimize ...

Palmistry Analysis: People who are particularly prone to cardiovascular disease

Palmistry Analysis: People who are particularly p...

When did the fifth Bitcoin bull run begin?

The price of Bitcoin continues to rise, and if yo...

The truth about blockchain

Contracts, transactions, and their records are am...

Which women with moles are prone to emotional problems?

In mole physiognomy, the moles on a person’s body...

Bain & Company: Banks almost missed out on digital currencies

Bain & Co believes banks could miss out on th...

What does it mean that the cheeks are so cunning that we can't be friends?

Generally, we can analyze whether a person is a t...

16 Ethereum ETFs and Their Fees, Promotions, and Holdings

About six months ago, the U.S. Securities and Exc...

How do people with dragon and phoenix eyes look like?

The so-called dragon and phoenix eyes describe a ...