<p><code>valid-fork</code> means that the blocks were fully downloaded and validated. It is likely that they were part of the active chain but were reorganized after a better chain was received.</p>

<p><code>valid-headers</code> means that the blocks were fully downloaded but not fully validated. Only the headers were validated to have a valid Proof of Work before the block was written to disk. Tips with this status could have been <code>valid-fork</code>, but they never had the chance to become part of the active chain and thus never actually fully validated.</p>

<p><code>headers-only</code> means that the node only has the block headers but not the full blocks themselves. This could happen for a variety of reasons - maybe a node announced those headers but failed to provide the block itself.</p>

<p>One notable <code>headers-only</code> entry you may see is the Bitcoin Cash fork. This is listed as <code>headers-only</code> your node may have received the block headers for that fork (up until the PoW changed) but did not download the blocks for those headers after it found that the first block in that fork was invalid.</p>

CC BY-SA 4.0
2019-10-18T15:24:27.740Z
Thank you. I did notice a rather large `headers-only` branch and was wondering what it was. I'm assuming it's this one: 

`{"height": 478576,"hash":"000000000000000001416af072f8989829f4c60a1a9658e1cec08411798e4ffa","branchlen": 18, "status": "headers-only"}`
inersha
CC BY-SA 4.0
2019-10-18T17:03:34.043Z
Yes, that looks like the one.
Ava Chow
CC BY-SA 4.0
2019-10-18T14:59:15.850Z
2019-10-18T14:59:15.850Z
Ava Chow
<p>I'm trying to get an understanding of the <strong>chain reorganisations</strong> my node has experienced by looking at <code>bitcoin-cli getchaintips</code>.</p>

<p>The "status" of the different branches tells me the following:</p>

<pre><code>1.  "invalid"               This branch contains at least one invalid block
2.  "headers-only"          Not all blocks for this branch are available, but the headers are valid
3.  "valid-headers"         All blocks are available for this branch, but they were never fully validated
4.  "valid-fork"            This branch is not part of the active chain, but is fully validated
5.  "active"                This is the tip of the active main chain, which is certainly valid
</code></pre>

<p>However I'm not 100% sure what each of these mean in terms of a chain reorganisation. Would I be correct in saying the following:</p>

<ol>
<li><code>valid-fork</code> - <strong>My node performed a chain reorganisation.</strong> I downloaded and validated the blocks in the branch and had them as part of my active chain, but later deactivated them after receiving a new longer chain.</li>
<li><code>valid-headers</code> - <strong>My node observed a possible chain reorganisation.</strong> I heard about a competing longest chain, however I did not download the full blocks and activate them as the branch never became longer than my current active chain.</li>
<li><code>headers-only</code> - <strong>My node observed a possible chain reorganisation.</strong> I received some (but not all) of the block headers for a competing branch?</li>
</ol>

<p>Does that sound about right?</p>

<p>I'm trying to get a more practical understanding of what my node is doing when it hears about a potential chain reorganisation. I'm most unsure about the difference between <code>headers-only</code> and <code>valid-headers</code>.</p>

<blockchain><chain-reorganization>
Understanding getchaintips in terms of chain reorganisations
inersha
# Understanding getchaintips in terms of chain reorganisations

(Asked by: username_0 on 2019-10-18)

I'm trying to get an understanding of the **chain reorganisations** my node has experienced by looking at `bitcoin-cli getchaintips`.

The "status" of the different branches tells me the following:

```
1.  "invalid"               This branch contains at least one invalid block
2.  "headers-only"          Not all blocks for this branch are available, but the headers are valid
3.  "valid-headers"         All blocks are available for this branch, but they were never fully validated
4.  "valid-fork"            This branch is not part of the active chain, but is fully validated
5.  "active"                This is the tip of the active main chain, which is certainly valid

```

However I'm not 100% sure what each of these mean in terms of a chain reorganisation. Would I be correct in saying the following:

1. `valid-fork` - **My node performed a chain reorganisation.** I downloaded and validated the blocks in the branch and had them as part of my active chain, but later deactivated them after receiving a new longer chain.
2. `valid-headers` - **My node observed a possible chain reorganisation.** I heard about a competing longest chain, however I did not download the full blocks and activate them as the branch never became longer than my current active chain.
3. `headers-only` - **My node observed a possible chain reorganisation.** I received some (but not all) of the block headers for a competing branch?

Does that sound about right?

I'm trying to get a more practical understanding of what my node is doing when it hears about a potential chain reorganisation. I'm most unsure about the difference between `headers-only` and `valid-headers`.

**Tags:** blockchain, chain-reorganization


---

## 1 answers

### Answer by username_1 on 2019-10-18. Score: 4 | Accepted answer

`valid-fork` means that the blocks were fully downloaded and validated. It is likely that they were part of the active chain but were reorganized after a better chain was received.

`valid-headers` means that the blocks were fully downloaded but not fully validated. Only the headers were validated to have a valid Proof of Work before the block was written to disk. Tips with this status could have been `valid-fork`, but they never had the chance to become part of the active chain and thus never actually fully validated.

`headers-only` means that the node only has the block headers but not the full blocks themselves. This could happen for a variety of reasons - maybe a node announced those headers but failed to provide the block itself.

One notable `headers-only` entry you may see is the Bitcoin Cash fork. This is listed as `headers-only` your node may have received the block headers for that fork (up until the PoW changed) but did not download the blocks for those headers after it found that the first block in that fork was invalid.

> **Comments:**
> **username_0**: Thank you. I did notice a rather large `headers-only` branch and was wondering what it was. I'm assuming it's this one:   `{"height": 478576,"hash":"000000000000000001416af072f8989829f4c60a1a9658e1cec08411798e4ffa","branchlen": 18, "status": "headers-only"}`  
> **username_1**: Yes, that looks like the one.  

---

