Pages:
Author

Topic: Merkle tree inside Block Headers for light client mode - page 2. (Read 3319 times)

administrator
Activity: 5222
Merit: 13032
I'm not sure that there would be any point to providing Merkle trees through a separate message. You need to download full blocks to detect transactions to yourself, anyway.
legendary
Activity: 1708
Merit: 1010

Did I miss something?


Only that the merkle tree is not in the header so that the tree can be 'pruned' of long spent transactions, until there is nothing left but the 80 byte header.  If the merkle tree itself were included in the header, then the header would not only be potentially significantly larger, but of a variable length.  We do not want a variable length because we do not want to introduce a condition that it becomes advantageous for a mining client to ignore a transaction; because it would make it's hashing more difficult compared to another client that simply ignored all transactions racing for the block reward.
newbie
Activity: 8
Merit: 0
Hello All,

I am working on the bitcoinj client and I am trying to implement the block header download in light mode.

From the protocol specification Wiki (https://en.bitcoin.it/wiki/Protocol_specification#Block_Headers) , it seems that only the merkle root hash is stored in the Block Header. Having the merkle root hash is not sufficient to validate a transaction contained in that block. I would need the full Merkle tree and not only the root hash.

IMO the full merkle tree should be sent with the block header, not just the merkle root. For the full blocks, we do not need to send any node of the merkle tree since the tree is computed from the transactions that we have. Maybe the protocol should have an additional command to download the merkle tree given a merkle root? I find that to be inefficient and I would prefer to have the merkle nodes inside the block header...

Did I miss something?

Philippe
Pages:
Jump to: