I know that stale blocks usually happen by accidents and the chain that has more blocks will be chosen as canonical chain by default and the stale chain is discarded.

My question is about what it means to be discarded?

Is it permanently discarded?

Or does it mean that if those stale blocks become longer (from 51% hash rate mining), they will stop being stale and be preferred by nodes?

I simply want to know whether it's possible to alternate mining between 2 chains making them roughly equal in length when you have 51% hash rate so that the network becomes useless. I think that it doesn't make sense that stale blocks are completely discarded. Because that means the longest-chain rule is not obeyed. If you obey longest-chain rule, stale blocks must always have a chance to become part of the canonical chain no matter what.

2 Answers 2


Bitcoin Core does not discard stale blocks. All blocks which are on a most-work headers chain (except those known to be invalid) are downloaded, and once downloaded, no block is discarded (unless pruning is enabled, in which case all blocks older than a certain age are discarded, stale or not).

It is very much possible to flip-flop between two valid chains, if they are alternatingly extended. This doesn't even require an attack, though it becomes less and less likely to continue this pattern as the length of the chains since the fork point grows.

  • Can an attacker indefinitely flip-flop if he always control 51% hash rate?
    – offchan
    Sep 20, 2022 at 13:56

I believe you are right. Bitcoin nodes must mark stale blocks as stale but not discard them completely. As you note, the node knows they are not part of the current chain. It is possible that a node may later find that a formerly stale block is now part of the "longest" chain. It must then be included in that node's active chain.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.