Blockchain fork – Are old blocks (headers) only allowed if they extend an existing old chain tip, or do only parent blocks need to be known?
I know that nodes only accept blocks whose parents they know (if they don’t know, the blocks are considered orphans and rejected). But should that parent be one of the chain tips, or could the parent also be one of the blocks on the branch (either the main or the fork)?
For example, I have a chain like this:
main chain: 100,000th block (end of chain: 100,000)
chain_1: 30 blocks are added by branching from the 60,000th block in the main chain. (Chain tip: 60.030)
chain_2: There are 5 additional blocks branched from the 20,000th block in the main chain. (Chain tip: 20.005)
Is a block only accepted if its parent block is the 100,000th block of the block? main chainBlock 20.005 chain_2or block 60.030 chain_1, then what about the chain tip? Or, if the parent block is not part of the chain tip, but is for example the 86.004th block in the chain, is the block also allowed? main chain20.002nd block of chain_260,026th block of chain_1 And so on, so do “random” blocks occur on some chains?
When I say accepted I mean old blocks (I only got the header). Therefore, only the verification of the PoW and the parent hash is performed and if everything is correct, it is approved. It also checks whether it has become a new main chain. If so, it becomes the main chain and additional checks follow.