How Does the SPV merkle path form of multiple transactions in Merkle block looks like?


While I'm studying about the Bitcoin, I've wondered how many merkle paths should be contained in merkle block.

From the point of view of Merkle path, it is generated as the form of containing hashes of counterpart stepping up from bottom to top.

For example, if I have 4 transactions(let me use tx1, tx2, tx3, and tx4) in a block, then the hashes of them(h1, h2, h3, and h4) will be located at the bottom as the leaves. The parents of them will be (h12 and h34), after all, the merkle roots will be (h1234). So, if a SPV node want to verify that the tx2 is in the block, the full node can offer h1, h34 as a merkle path (as well as block header), so that they can prove as the step of hashing will lead them to the merkle roots which is contained in block header.

However, If I requests to verify multiple transactions in a block (e.g. using Bloom filter), then what would be contained into the merkle block (which contains merkle path and block header)?

Does they have multiple merkle paths for each transactions which are interested in, so that the transactions can be verified respectively? or adapted merkle path to be included which encompass all transactions related? (e.g. if we want to verify tx1, tx3 then generating h2, h3; though this exmample seems not to be guaranteed to show the order of transactions)


Posted 2020-06-30T03:40:09.687

Reputation: 11



bip37 has fallen out of use, and isn't a default option in Bitcoin Core anymore, so therefor filtered blocks aren't really a consideration for new designs. You could conceivably have a format for describing multiple transactions and their intersecting (or not) paths within a block, but this was never supported by the Bitcoin p2p protocol.


Posted 2020-06-30T03:40:09.687

Reputation: 12 846

Thanks for your answer first. Then how does the Bitcoin support for anonymity? I've read it from the book, Mastering Bitcoin. Further, I think there must be exist the case of multiple transactions included in a block which transactions are owned by same address. In that case, how can I request and response by using SPV? – Ilak – 2020-06-30T06:10:49.083