I think the terminology has been updated from "orphan" to "stale block", because an orphan transaction refers to the fact that it has not known parent currently. This anaology is not appropriate for these type of blocks whose problem is that they don’t have any children (or their children don’t have any children).

What does a high stale block rate really tell us?

It could indicate three things:

  1. Block propagation speed too low

    this is analagous to block size being too large unless validationless mining is being done.
  2. Selfish mining attack

  3. Fee-sniping is taking place

Stale blocks, last 12 months according to BitMEX Research’s Twitter

  1. 633,898, 09-07-2020, no double spends

  2. 638,519, 10-07-2020, no double spends

  3. 644,543, 20-08-2020, no double spends, winning block contained no transactions, stale block contained 2426 transactions

  4. 645,179, 24-08-2020, no double spends

  5. 650,491, 29-09-2020, no double spends, Unusually, apart from the coinbase transaction, the losing block contained exactly the same set of transactions as the winning block. 2,812 identical transactions on each side

  6. 650,473, 29-09-2020, no double spends

  7. 654,683, 29-10-2020, no double spends

  8. 655,191, 03-11-2020, no double spends

  9. 656,477, 11-11-2020, no double spends, stale chain length extended to 2

  10. 660,903, 11-12-2020, no double spends

  11. 662,642, 23-12-2020, no double spends

  12. 666,833, 20-01-2021, 1 transaction(s) involving 0.00062063 BTC was doublespent on the longest chain

  13. 667,881, 27-01-2021, no double spends

  14. 671,511, 21-02-2021, no double spends

  15. 675,392, 20-03-2021, no double spends

  16. 675,407, 20-03-2021, no double spends

  17. 676,234, 25-03-2021, 1 transaction(s) involving 0.00003 BTC was doublespent on the longest chain.

Total = 17 in last 12 months, approx 1.4 per month.

What do block propagation times look like?

bitcoinstats.com has some nice historical propagation times from 2013 - 2017. This appears to show that block propagation times were indeed decreasing over this time period, from 3-5 seconds in 2013 to around 1.5 seconds in 2017.

Today, DSN Bitcoin Monitoring confirms that since 2017 we have seen a sharp drop in propagation times:

dsn propagation
These metrics might not strictly matter in the context of stale blocks, because in order to avoid stale blocks, all we really care about it how fast blocks are propagated between mining nodes.

We thought if miners were doing any selfish mining — or even only small delays on blocks the find to waste other pools' resources — that spy mining might act as a coutermeasure to this.

Transaction propagation times

For interest, DSN Bitcoin Monitoring also shows that transactions have larger propagation times:

dsn transaction propagation

Are better metrics available?

We could not think of any better metrics to infer whether block propagation was too slow than stale block rate. We thought that if the block interval was decreased, or conversely the maximum block size was increased, that we would start to see higher rates of stale blocks.

Bitcoin Core has some anti-fee-sniping measures implemented which, if adopted widely, should prevent stale blocks in the context of fee sniping. This might mean that most stale blocks seen on the network today are as a result of poor propagation.

Additional questions

  1. Why is the profitable selfish mining attack not visible on the network today? Is it undetectable or is there another reason?


  2. Is an undetecable selfish mining scheme, where you withhold blocks for a short time but don’t publish stale chains, practical? In this scheme the miner "takes the hit" on valid blocks which get discarded by the main chain, but wastes other miners work by withholding for a short time in every case.


  3. Are miners using the FIBRE network today? If not what do they use?


  4. Are there any miner-specific metrics available on block propagation times?


Does the combination of pooled miners and spy mining stopt it? Think if you have a large solo miner they might be able to pull this off relatively undetected.