<p>Old blocks in the chain are <em>still valid</em> under the current consensus rules.</p>
<p>In a broad sense, this is because the code will be written to enact rule changes at specific block heights, and thus older blocks will not be subject to said new rules.</p>
<p>To put it differently: the consensus ruleset doesn't just cover what new blocks are supposed to look like, they also cover what the historical valid chain looks like!</p>
<p>Sometimes, specific exceptions are written in, such as <a href="https://github.com/bitcoin/bitcoin/commit/ab91bf39b7c11e9c86bb2043c24f0f377f1cf514" rel="nofollow noreferrer">is the case with BIP 30. </a></p>

CC BY-SA 4.0
2020-12-05T21:22:43.533Z
This is incorrect. Old blocks aren't necessarily valid under the new consensus rules post soft fork activation. A soft fork enforces additional restrictions that old blocks aren't expected to abide by.
Michael Folkson
CC BY-SA 4.0
2020-12-05T21:26:45.960Z
No it isn't, in such an example the consensus rules would be *"all blocks after x height must follow 'new rule'"*. Older blocks are thus still implicitly valid under this 'current consensus ruleset'. To put it differently: the consensus ruleset doesn't just cover what new blocks are supposed to look like, they also cover what the historical valid chain looks like!
chytrik
CC BY-SA 4.0
2020-12-05T21:30:14.760Z
Ah ok I see what you mean, your answer wasn't clear to me. Yeah if you include the historical consensus rules in the soft fork consensus rules then yeah old blocks are still valid because they are not being assessed by the same rules as the new blocks.
Michael Folkson
CC BY-SA 4.0
2020-12-05T21:39:28.690Z
@MichaelFolkson I edited the answer to include some text from my comment, hopefully its a little more clear. Appreciate the feedback, helps to keep content on here accurate and easily digestible
chytrik
CC BY-SA 4.0
2020-12-05T21:13:26.900Z
2020-12-05T21:37:00.497Z
2020-12-05T21:37:00.497Z
chytrik
<p>A soft fork is a change to the Bitcoin protocol that adds additional restrictions to the rules enforced by full nodes. However, these additional restrictions only apply to blocks from the point of activation. Blocks pre soft fork activation aren't expected to meet the new restrictions. These blocks are validated according to the old protocol rules that continue to be present in the code of a protocol implementation (e.g. Bitcoin Core).</p>

CC BY-SA 4.0
2020-12-05T21:20:33.410Z
2020-12-05T21:20:33.410Z
Michael Folkson
<p>When you start the initial block download with the latest versions of Bitcoin Core, how does your node know that old blocks were valid according to different rules prior to soft forks?</p>

<full-node><soft-fork>
How do nodes verify backwards incompatible blocks?
Dirk
# How do nodes verify backwards incompatible blocks?

(Asked by: username_0 on 2020-12-05)

When you start the initial block download with the latest versions of Bitcoin Core, how does your node know that old blocks were valid according to different rules prior to soft forks?

**Tags:** full-node, soft-fork


---

## 2 answers

### Answer by username_1 on 2020-12-05. Score: 3

Old blocks in the chain are *still valid* under the current consensus rules.

In a broad sense, this is because the code will be written to enact rule changes at specific block heights, and thus older blocks will not be subject to said new rules.

To put it differently: the consensus ruleset doesn't just cover what new blocks are supposed to look like, they also cover what the historical valid chain looks like!

Sometimes, specific exceptions are written in, such as [is the case with BIP 30.](https://github.com/bitcoin/bitcoin/commit/ab91bf39b7c11e9c86bb2043c24f0f377f1cf514)

> **Comments:**
> **username_2**: This is incorrect. Old blocks aren't necessarily valid under the new consensus rules post soft fork activation. A soft fork enforces additional restrictions that old blocks aren't expected to abide by.  
> **username_1**: No it isn't, in such an example the consensus rules would be *"all blocks after x height must follow 'new rule'"*. Older blocks are thus still implicitly valid under this 'current consensus ruleset'. To put it differently: the consensus ruleset doesn't just cover what new blocks are supposed to look like, they also cover what the historical valid chain looks like!  
> **username_2**: Ah ok I see what you mean, your answer wasn't clear to me. Yeah if you include the historical consensus rules in the soft fork consensus rules then yeah old blocks are still valid because they are not being assessed by the same rules as the new blocks.  
> **username_1**: @username_2 I edited the answer to include some text from my comment, hopefully its a little more clear. Appreciate the feedback, helps to keep content on here accurate and easily digestible  

---

### Answer by username_2 on 2020-12-05. Score: 2

A soft fork is a change to the Bitcoin protocol that adds additional restrictions to the rules enforced by full nodes. However, these additional restrictions only apply to blocks from the point of activation. Blocks pre soft fork activation aren't expected to meet the new restrictions. These blocks are validated according to the old protocol rules that continue to be present in the code of a protocol implementation (e.g. Bitcoin Core).


---

