'Does Hyperledger Fabric use a Merkle tree for the block data hash?

I found multiple sources that are not precise enough for me to be sure. They seemingly disagree ever so slightly.

I need to know that, because I would like to proof the inclusion of a transaction to a client without revealing the actual content of other transactions. If that is possible.

I looked into the source of the likely responsible function BlockDataHash. It seems to just concatenate a data array containing the byte arrays of each transaction. But I'm not sure if that is the actual function used, nor do I know if this "Data" array contains the whole transaction or some hash thereof (maybe this "Merkle Tree Query Summary" in the proposal response part of the transaction).

The documentation doesn't solve it quite either. It refers to a Merkle tree which is so wide that it "corresponds to a simple flat hash of the concatenation of block data bytes". But I see no implementation of this Merkle tree in the source.

Lastly, I stumbled upon this stackoverflow answer by @yacovm. Which mentions that it is some concatenated hash. But there was a non efficient way to prove inclusion without handing out the entire block. But maybe this is referring to some construction with zero knowledge proofs.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source