written by @emylacapra
Orphan, stale and extinct blocks of transactions are all slight variants of a phenomenon that occurs in a chain of blocks, when there is a certain abnormality within their structure.
The terminology might be slightly confusing as there are several definitions with overlapping meanings, therefore we’ll clarify what these types of blocks are and their impact in Bitcoin or any other cryptocurrency.
Orphan Blocks Until 2015
In origin, orphan blocks were literally blocks that did not have a parent, where the parent was the header, the previous block hash field.
During the verification process of the newly received block, a node needed to find its parent before placing it onto the existing chain. The block would be saved in the orphan block pool and once the parent was found, it could be pulled out of the pool and linked to the rest of the chain.
This phenomenon occurred when two blocks mined within a short time of each other were received in reverse order (the child before the parent).
Peter Wuille described them best here:
"Orphan blocks originally means having no parent. These are blocks received by a node that does not have its entire ancestry (yet) and thus cannot be validated. Nodes keep such blocks in memory, while asking their peers to fill in the gap of their history."
As a consequence, a node would download any block it received regardless if it had proof of work or not, because it had to download the whole block before checking the parent.
Such orphan blocks existed in the older versions of the Bitcoin Core software, where network nodes could receive blocks despite the lack of data about their parentage.
Since the release of Bitcoin Core v.0.10, in early 2015, Bitcoin orphan blocks are no longer possible as the upgrade resolved the issue through a significant change in the download mechanism that would now only require downloading the header first and if valid then the rest of the block could be accepted.
"We only ever request a block for which we have verified the headers, and store it to disk immediately. This means that a disk-fill attack would require PoW.
As such, "maxorphanblocks" configuration was no longer necessary to protect a node from having its hard drive filled up with invalid block data, because it was now incredibly expensive to create orphan blocks due to needing a valid proof of work” - Jameson Lopp.
The removal allowed a faster synchronization of the Bitcoin chain, a much more robust system against unresponsive or slow peers, more security against DoS attacks related to peers feeding low-difficulty valid large blocks on a side branch, and no more orphan blocks stored in memory (reducing memory usage during sync).
Orphan Blocks Now
When blocks are not part of the conventional chain of blocks they are known as orphaned blocks. It means that the blocks were successfully mined but are not included on the current longest chain, likely because some other block at the same height had its chain extended first.
Pieter Wuille rather calls them extinct blocks. “These are blocks that were produced by building on a block that is no longer the active tip of the chain. Some nodes may have considered it to be the best block at some point, but they switched to another chain which does not contain the relevant block anymore. They are valid, verified, and their ancestry up to the genesis block is fully known - they're just not currently 'active'. They are sometimes called stale blocks or orphan blocks. The latter name originates from the fact that payouts from extinct blocks are denoted as "orphaned" in the reference client (referring to the fact that their coinbase transactions are now orphaned).”
The block with the larger share of proof of work gets rewarded and accepted into the blockchain. The other block, with a smaller proof of work is discarded and is named as an orphan block. Such blocks are essentially valid and verified blocks, but due to the network’s working mechanism and the lag time affecting their acceptance, one of the blocks is rejected, or orphaned, with no reward. In essence, the blockchain miner responsible for producing an orphan block does not get compensation for their time and energy.
Orphan blocks may occur without any disruption to the network and the system, however, if a network generates orphans very easily, unwanted forks may just as easily form in the chain. This can be accidental but can also be carried out by malicious actors leading to fraud on the network through “double-spends”.
Because of improved communication more recently orphaned or stale blocks are increasingly rare. This is likely because the largest mining pools now have low-latency communication channels in place. In 2017, 60 orphan blocks were recorded compared with only five in 2018, and only two in 2019.
An orphan or extinct block may contain "orphaned transactions”.
What Happens To Transactions In An Orphan Block?
Approximately 95% of transactions in blocks that are mined nearly simultaneously are the same transactions in both blocks with only roughly 5% that need to go back to the mempool. They lack parental income sources at the time they are processed, typically a lower transaction fee per byte than all other transactions or have a larger size than other received transactions. They join the orphan block waiting to be verified, that’s why lower fee transactions might take longer to be validated. Once the parent transaction is received, they join the mempool, they get validated and included in the next winning block available.
This information can be handy to Bitcoin users who want to appropriately set their own transaction fees and facilitate propagation through the network by using RBF (Replace by fee) or Child Pays For Parent (CPFP).
If you have any feedback on this or any other topic, please feel free to reach out to us at any time at email@example.com or @BTSEcom on Twitter. We always love to hear from our amazing BTSE community.