0

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 ?

1 Answer 1

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.

3
  • 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? Apr 21, 2019 at 22:34
  • 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.
    – Andrew Chow
    Apr 21, 2019 at 22:41
  • 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.
    – Andrew Chow
    Apr 21, 2019 at 22:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.