<p><code>bip37</code> 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.</p>

CC BY-SA 4.0
2020-06-30T06:10:49.083Z
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
CC BY-SA 4.0
2021-07-26T15:09:37.277Z
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).
Pieter Wuille
CC BY-SA 4.0
2020-06-30T05:51:50.673Z
2020-06-30T05:51:50.673Z
Claris
<p>While I'm studying about the Bitcoin, I've wondered how many merkle paths should be contained in merkle block.</p>
<p>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.</p>
<p>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.</p>
<p>However, If I requests to <em>verify multiple transactions in a block</em> (e.g. using Bloom filter), then what would be contained into the merkle block (which contains merkle path and block header)?</p>
<p>Does they have <strong>multiple merkle paths for each transactions</strong> which are interested in, so that the transactions can be verified respectively? or <strong>adapted merkle path</strong> 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)</p>

<spv><merkleblock>
How Does the SPV merkle path form of multiple transactions in Merkle block looks like?
Ilak
# How Does the SPV merkle path form of multiple transactions in Merkle block looks like?

(Asked by: username_0 on 2020-06-30)

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)

**Tags:** spv, merkleblock


---

## 1 answers

### Answer by username_1 on 2020-06-30. Score: 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.

> **Comments:**
> **username_0**: 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?  
> **username_2**: 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).  

---

