Monitoring Bitcoin mining pool

transaction selection

Can we detect transaction censorship by mining pools?

Bitcoin Developer
supported by a grant

MIT Bitcoin Expo 2022

Marathon Digital Holdings press release from March 30th, 2021

Censorship Resistance of Bitcoin

    No one should be able to
  • prevent others from interacting with the Bitcoin network
  • indefinitely* block a valid transaction from being confirmed

  • * mining pools can freely choose not to confirm a transaction
  • * transactions paying a competitive fee should confirm eventually

Can we detect transaction censorship by mining pools?

Pooled Bitcoin Mining: Stratum V1

mining jobs contain the information needed to construct a block header

  • metadata: job id, clean jobs flag
  • block version, bits, time
  • previous block hash
  • coinbase transaction in two parts
  • branches of the transaction merkle tree

Miners don't know which transactions they are mining

Marathon Digital Holdings press release from May 5th, 2021


Transparency for Mining Pool Transaction Selection

source on
live on

Comparing templates and blocks

First MARA Pool block on miningpool-observer

3 mBTC ≈ 120 USD @ $40k USD/BTC

Mining Pool Transaction Selection Observations

transactions missing from multiple blocks

conflicts between blocks and templates

extra transactions included by pools
Why are transactions sometimes missing from blocks?
  • transaction not propagated well enough yet
  • other transactions were prioritzed
  • conflicts with other transactions
  • transaction was filtered

Missing P2TR spends

Missing Counterparty transactions

Mulitple missing Counterparty transactions from F2Pool's and ViaBTC's blocks

Missing transaction due to conflict (UTXO spend twice)

Conflict on UTXO belonging to this address


brain wallet (private key) for this address

"correct horse battery staple"

Low feerate version of conflict is mined (UTXO spend twice)

Block mined by Foundry USA

Replace-by-Fee causing conflict

2 sat/vbyte are added to blockcommit-transactions every minute via a fee-bump
Why do pools sometimes include extra transactions in blocks?
  • privately transmitted to the miner
  • prioritized via out-of-band fee payment
  • transaction did not propagated yet

not-broadcast transactions (zero-fee)

Block 715489 by F2Pool includes two zero-fee transactions.

A pool UTXO consolidation and a pool payout transaction.

Out-of-band fees (ViaBTC)
Marathon Digital Holdings press release from May 31th, 2021

Can we detect censorship by mining pools?

When done at scale, yes.

Do we have evidence for censorship by mining pools?

No, not to the best of our knowlege.

How to avoid transaction censorship moving forward?

Adopt Stratum V2 and it's Job Negotiation Protocol as industry standard.