<p><strong>When I write &quot;accepted&quot; for non-main (canonical) chain blocks, I mean on accepting and storing their headers, not entire blocks. Additional request for an entire block is done once the chain its part of became a new main chain (chain with most total work).</strong></p>
<p>I know that a node only accepts blocks for which it knows the parent (if it doesn't know, block is considered as orphaned and rejected). However, does that parent have to be exclusively one of the chain tips, or the parent can also be any of the blocks from any of the branches (either main or one of the forks)?</p>
<p>For example, we have following chains:</p>
<p><strong>main chain</strong>: 100.000th blocks (chain tip: 100.000)<br />
<strong>chain_1</strong>: diverged from main chain at 60.000th block and has additional 30 block (chain tip: 60.030)<br />
<strong>chain_2</strong>: diverged from main chain at 20.000th block and has additional 5 blocks (chain tip: 20.005)</p>
<p>Will a block be accepted only if its parent is the 100.000th block of the <strong>main chain</strong>, the 20.005th block of the <strong>chain_2</strong>, or the 60.030th block of the <strong>chain_1</strong>, so chain tips? Or will the block also be accepted if its parent is not some of the chain tips but, for example, the 86.004th block of the <strong>main chain</strong>, the 20.002nd block of the <strong>chain_2</strong>, the 60.026th block of the <strong>chain_1</strong> etc., so &quot;random&quot; block from some of the chain?</p>
<p>When I say accepted, I mean as a stale block (we got only header). So only validation of PoW and parent hash is done and if everything is accurate, it is accepted. Also, it is checked whether it might have become the new main chain. If so, it becomes <strong>main</strong> chain and additional checks follow.</p>

CC BY-SA 4.0
2024-01-04T12:02:28.677Z
Hi Hurry Walk, I have noticed that a lot of your questions are requesting proofreading of your own understanding of concepts. I would like to suggest that you focus on _asking your question_ in the question post, and if you already have an answer yourself, post that as a __separate__ answer post. That way, potential answerers can focus on answering your question instead of proofreading your answer.
Murch
CC BY-SA 4.0
2024-01-04T16:55:33.217Z
I've written a comprehensive question and answer about the entire process of block validation today instead, which I think is more valuable to other readers rather than focusing on your specific misconceptions: https://bitcoin.stackexchange.com/questions/121292/how-does-block-synchronization-work-in-bitcoin-core-today/121293#121293.
Pieter Wuille
CC BY-SA 4.0
2024-01-04T16:59:31.650Z
@PieterWuille I saw it, its amazing and already started with reading. A lot of quality content. Will take some time for me to read it, but I am definitely enjoying. Already upvoted!
Hurry Walk
<blockchain-fork><stale-block>
Is the stale block (its header) accepted only if it extends the existing stale chain tip or it is only necessary that the parent is known?
Hurry Walk
# Is the stale block (its header) accepted only if it extends the existing stale chain tip or it is only necessary that the parent is known?

(Asked by: username_0 on 2024-01-04)

**When I write "accepted" for non-main (canonical) chain blocks, I mean on accepting and storing their headers, not entire blocks. Additional request for an entire block is done once the chain its part of became a new main chain (chain with most total work).**

I know that a node only accepts blocks for which it knows the parent (if it doesn't know, block is considered as orphaned and rejected). However, does that parent have to be exclusively one of the chain tips, or the parent can also be any of the blocks from any of the branches (either main or one of the forks)?

For example, we have following chains:

**main chain**: 100.000th blocks (chain tip: 100.000)  
**chain\_1**: diverged from main chain at 60.000th block and has additional 30 block (chain tip: 60.030)  
**chain\_2**: diverged from main chain at 20.000th block and has additional 5 blocks (chain tip: 20.005)

Will a block be accepted only if its parent is the 100.000th block of the **main chain**, the 20.005th block of the **chain\_2**, or the 60.030th block of the **chain\_1**, so chain tips? Or will the block also be accepted if its parent is not some of the chain tips but, for example, the 86.004th block of the **main chain**, the 20.002nd block of the **chain\_2**, the 60.026th block of the **chain\_1** etc., so "random" block from some of the chain?

When I say accepted, I mean as a stale block (we got only header). So only validation of PoW and parent hash is done and if everything is accurate, it is accepted. Also, it is checked whether it might have become the new main chain. If so, it becomes **main** chain and additional checks follow.

**Tags:** blockchain-fork, stale-block

> **Comments:**
> **username_1**: Hi username_0 username_0, I have noticed that a lot of your questions are requesting proofreading of your own understanding of concepts. I would like to suggest that you focus on _asking your question_ in the question post, and if you already have an answer yourself, post that as a __separate__ answer post. That way, potential answerers can focus on answering your question instead of proofreading your answer.  
> **username_2**: I've written a comprehensive question and answer about the entire process of block validation today instead, which I think is more valuable to other readers rather than focusing on your specific misconceptions: https://bitcoin.stackexchange.com/questions/121292/how-does-block-synchronization-work-in-bitcoin-core-today/121293#121293.  
> **username_0**: @username_2 I saw it, its amazing and already started with reading. A lot of quality content. Will take some time for me to read it, but I am definitely enjoying. Already upvoted!  

---

## 0 answers

