<blockquote>
  <p>So far, i couldn't understand what is the utility of adding the transactions merkle tree root on the block header.</p>
</blockquote>

<p>To ensure that the transactions in the block are committed to by the block hash.</p>

<p>The block hash is not actually the hash of the entire block, it is the hash of the block header. If there were no merkle root, the block header would not contain anything that ensures that the transactions that are part of the block are actually part of the block. By hashing all of the transactions together into the merkle root and putting that in the block header, blocks received must contain all of their transactions so that the block header is valid.</p>

CC BY-SA 4.0
2019-04-21T22:34:14.563Z
Yes, you're right. But how does that save space? are the transactions removed and we keep just the merkle tree hash? if yes, how can we verify a transaction with just the merkle tree hash? if not, the block is always sent with it's transactions?
John Karimov
CC BY-SA 4.0
2019-04-21T22:41:08.350Z
The merkle root isn't used to save space in block relay. A node must have the block in its entirety in order to validate it. Traditionally, this means the that the block is sent in full. The merkle root does not allow blocks transactions to not be relayed. Note that compact blocks allows block relay without sending the full block as it sends the information necessary for a node to completely reconstruct the block. That section in the Bitcoin paper is simply saying that the entire block does not need to be stored in full so it can be used to save space on disk.
Ava Chow
CC BY-SA 4.0
2019-04-21T22:43:54.930Z
Note that the method described in the Bitcoin paper for saving space on disk is not actually used. Current pruning methods are far more efficient and allow for the deletion of the block from disk entirely.
Ava Chow
CC BY-SA 4.0
2019-04-21T17:12:23.803Z
2019-04-21T17:12:23.803Z
Ava Chow
<p>I've starting doing some researches about the Bitcoin protocol and the blockchain. I'm trying to understand all the sections in the Bitcoin white-paper.
So far, i couldn't understand what is the utility of adding the transactions merkle tree root on the block header. Yes, i know that it's done to save space as the paper said. But when do someone need it?</p>

<p>For example, when miners receives a new block, does they receive only the block header, or the block header with the transaction? Means, is the blockchain a chain of blocks of headers?</p>

<p>If the 8- Simplified Payment Verification section Satoshi said:</p>

<blockquote>
  <p>It is possible to verify payments without running a full network node.
  A user only needs to keep a copy of the block headers of the longest
  proof-of-work chain, which he can get by querying network nodes until
  he's convinced he has the longest chain, and obtain the Merkle branch
  linking the transaction to the block it's timestamped in. He can't
  check the transaction for himself, but by linking it to a place in the
  chain, he can see that a network node has accepted it, and blocks
  added after it further confirm the network has accepted it.</p>
</blockquote>

<p>How can the user obtain the obtain the Merkle branch linking the transaction to the block it's timestamped in ?</p>

<transactions><blockchain><block><merkle-tree><validation>
How and why we need to validate a transaction?
John Karimov
# How and why we need to validate a transaction?

(Asked by: username_0 on 2019-04-21)

I've starting doing some researches about the Bitcoin protocol and the blockchain. I'm trying to understand all the sections in the Bitcoin white-paper.
So far, i couldn't understand what is the utility of adding the transactions merkle tree root on the block header. Yes, i know that it's done to save space as the paper said. But when do someone need it?

For example, when miners receives a new block, does they receive only the block header, or the block header with the transaction? Means, is the blockchain a chain of blocks of headers?

If the 8- Simplified Payment Verification section Satoshi said:

> It is possible to verify payments without running a full network node.
> A user only needs to keep a copy of the block headers of the longest
> proof-of-work chain, which he can get by querying network nodes until
> he's convinced he has the longest chain, and obtain the Merkle branch
> linking the transaction to the block it's timestamped in. He can't
> check the transaction for himself, but by linking it to a place in the
> chain, he can see that a network node has accepted it, and blocks
> added after it further confirm the network has accepted it.

How can the user obtain the obtain the Merkle branch linking the transaction to the block it's timestamped in ?

**Tags:** transactions, blockchain, block, merkle-tree, validation


---

## 1 answers

### Answer by username_1 on 2019-04-21. Score: 1

> So far, i couldn't understand what is the utility of adding the transactions merkle tree root on the block header.

To ensure that the transactions in the block are committed to by the block hash.

The block hash is not actually the hash of the entire block, it is the hash of the block header. If there were no merkle root, the block header would not contain anything that ensures that the transactions that are part of the block are actually part of the block. By hashing all of the transactions together into the merkle root and putting that in the block header, blocks received must contain all of their transactions so that the block header is valid.

> **Comments:**
> **username_0**: Yes, you're right. But how does that save space? are the transactions removed and we keep just the merkle tree hash? if yes, how can we verify a transaction with just the merkle tree hash? if not, the block is always sent with it's transactions?  
> **username_1**: The merkle root isn't used to save space in block relay. A node must have the block in its entirety in order to validate it. Traditionally, this means the that the block is sent in full. The merkle root does not allow blocks transactions to not be relayed. Note that compact blocks allows block relay without sending the full block as it sends the information necessary for a node to completely reconstruct the block. That section in the Bitcoin paper is simply saying that the entire block does not need to be stored in full so it can be used to save space on disk.  
> **username_1**: Note that the method described in the Bitcoin paper for saving space on disk is not actually used. Current pruning methods are far more efficient and allow for the deletion of the block from disk entirely.  

---

