<p>It's true, you can have two different valid blocks (with different hashes) that both refer to the same previous block.  Call them A and B.  Then there are effectively two different branches of the block chain (so it's really a tree rather than a chain).  In such a case, each node must make their own decision as to which one to accept.  If both are at the end of the block chain, usually each node will choose the one they saw first.</p>

<p>In particular, a miner must decide which of A or B to use as the previous block hash in a new block.  Let's say the next winning miner chose A and mined a new block C.  Then future miners will prefer to mine on top of C instead of B, since the branch ending in C (which contains A) is longer (has more total proof-of-work) than the one that ends in B.  In the long run, the branch containing A will probably be considered as the "true" blockchain.  B becomes an orphan block and is disregarded.</p>

<p>If B contained transactions which A did not, and they are otherwise valid, those transactions can be included in C or some later block in the dominant branch, so they are not lost.</p>

CC BY-SA 3.0
2017-09-24T19:39:04.463Z
2017-09-24T19:39:04.463Z
Nate Eldredge
<p>I am trying to get my head around how blockchains work.</p>

<p>I have two blocks in my blockchain:</p>

<pre><code>Block #0 has been added to the blockchain!
Hash: b3bc62c2b75e70fcc3fe709a5e724c7230d89bb70db17c1d2f5c3687b44b4c31
Block #1 has been added to the blockchain!
Hash: 76915298f65b261dbe8b5e2300c77b13966a8dd68175e49ffe5cbc59b055042d
</code></pre>

<p>The hash is derived from passing the block's timestamp, data and the previous block's hash through sha256. I understand that if I am in the middle of a blockchain and then try to modify the data the other blocks will be corrupt because the hash won't be correct. E.g. I modify block 2, change the data and even generate a new hash using the correct function, this will invalidate block 3's hash because the previous hash won't generate the correct hash for block 3. </p>

<p>However if I modify the <em>last</em> block in the chain how does it work? I can just change the data and generate a new hash, there is no next hash to verify it.</p>

<p>Any clarification on how this works would be great! Thanks!</p>

<blockchain>
Modifying the last block in a blockchain
kex1985
# Modifying the last block in a blockchain

(Asked by: username_0 on 2017-09-24)

I am trying to get my head around how blockchains work.

I have two blocks in my blockchain:

```
Block #0 has been added to the blockchain!
Hash: b3bc62c2b75e70fcc3fe709a5e724c7230d89bb70db17c1d2f5c3687b44b4c31
Block #1 has been added to the blockchain!
Hash: 76915298f65b261dbe8b5e2300c77b13966a8dd68175e49ffe5cbc59b055042d

```

The hash is derived from passing the block's timestamp, data and the previous block's hash through sha256. I understand that if I am in the middle of a blockchain and then try to modify the data the other blocks will be corrupt because the hash won't be correct. E.g. I modify block 2, change the data and even generate a new hash using the correct function, this will invalidate block 3's hash because the previous hash won't generate the correct hash for block 3.

However if I modify the *last* block in the chain how does it work? I can just change the data and generate a new hash, there is no next hash to verify it.

Any clarification on how this works would be great! Thanks!

**Tags:** blockchain


---

## 1 answers

### Answer by username_1 on 2017-09-24. Score: 4

It's true, you can have two different valid blocks (with different hashes) that both refer to the same previous block. Call them A and B. Then there are effectively two different branches of the block chain (so it's really a tree rather than a chain). In such a case, each node must make their own decision as to which one to accept. If both are at the end of the block chain, usually each node will choose the one they saw first.

In particular, a miner must decide which of A or B to use as the previous block hash in a new block. Let's say the next winning miner chose A and mined a new block C. Then future miners will prefer to mine on top of C instead of B, since the branch ending in C (which contains A) is longer (has more total proof-of-work) than the one that ends in B. In the long run, the branch containing A will probably be considered as the "true" blockchain. B becomes an orphan block and is disregarded.

If B contained transactions which A did not, and they are otherwise valid, those transactions can be included in C or some later block in the dominant branch, so they are not lost.


---

