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)

1 Answer 1


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.

  • 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
    Commented Jun 30, 2020 at 6:10
  • SPV is just a mechanism of verification; it's orthogonal to the question of requesting block data. There are multiple ways (a) just request the full blocks (the most private), (b) use BIP157/BIP158 filters which let you find the blocks that contain txn you care about (and fetch those fully), (c) keep using BIP37 which does support requesting subsets of block txn (d) use a third-party protocol like Electrum's to ask for transactions (where you give up privacy to the server you're talking to). Commented Jul 26, 2021 at 15:09

Your Answer

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

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