19

We know widely used explanation of the blockchain: "Every block contains a hash of the previous block". The sentence above implies that since every block contains a hash of the previous block, therefore every block should have a knowledge about transactions included into the previous block because every block has a following structure:

Block:

  1. Magic No
  2. Block Size
  3. Block Header
  4. Transaction counter
  5. Transactions

Block Header:

  1. Version
  2. hashPrevBlock
  3. hashMerkleRoot
  4. Time
  5. Bits
  6. Nonce

However, every block does not have knowledge about transactions incuded into previous block correct???

As fas as I understand there are two chains in the Bitcoin:

  1. a chain of blocks headers (a block chain)
  2. a chain of transactions (Prev Tx Hash)

Hence just to clarify, rather than saying: "every block contains a hash of the previous block", would not it be correct to say: "header of every block contains a hash of header of the previous block"?

Please correct my assumptions if I am wrong. Thanks.

1 Answer 1

20

Blocks contain a header, and headers are chained, so blocks are chained also. Note the merkle root from your question: this attaches the transactions in the block to the header, making them a logical combined unit:

block chain

That is, you can't attach an arbitrary block to an arbitrary header---each header only attaches to one set of transactions.

You are correct that this expression is wrong: "every [valid] block contains a hash of the previous block". That phrasing may be useful for non-techies, but if you find it in any editable technical documentation, you should probably change it.

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