An orphan block is a block whose parent block is unknown or inexistent. These types of blocks were formed in older versions of the Bitcoin Core software, where network nodes
could receive blocks despite the lack of data about their ancestry. Since the release of Bitcoin Core v.0.10, in early 2015, Bitcoin
orphan blocks (in the literal sense) are no longer possible.
However, the term orphan block is still widely used in the cryptocurrency
space when referring to valid mined
blocks that have been discarded. Technically, these blocks should be called “stale blocks” or “extinct blocks,” but because the client denotes their block rewards as “orphaned,” most people call them orphan blocks. So despite having a known parent block, most people refer to those blocks as orphan blocks rather than stale blocks.
Stale blocks are generated when two different miners relay their valid blocks almost at the same time. This causes the network to split into two competing versions of the blockchain until one of the blocks is discarded (the longest chain prevails while the other is abandoned). Note that both blocks are verified and valid, but only one is attached to the main chain.
Because miners are constantly generating new blocks, some of these may be broadcasted to the network almost simultaneously. And since the network is distributed, the transmission of information between nodes takes some time. For this reason, there is a possibility that a group of nodes will choose to validate one block, while another group will choose to validate the other. Finally, this would cause one of the blocks to be “orphaned”.
The generation of stale blocks is completely natural and, in most cases, occurs by chance. However, they may also be produced when malicious actors try to create an alternate valid chain (see 51% attacks