如何计算超级账本结构中的默克尔根?

Posted

技术标签:

【中文标题】如何计算超级账本结构中的默克尔根?【英文标题】:How to calculate the merkle root in a hyperledger fabric? 【发布时间】:2020-03-02 10:26:58 【问题描述】:

如何计算超级账本结构的默克尔根? 我很难在 Fabric 中找到 merkle root。

区块头包含 number 、 prefix_hash 、 data_hash 。 以上三个相关数据中的任何一个都与merkle root有关吗?

或者我可以手动计算默克尔根吗?

当我将数据提交到分类帐时,我已经对我使用的数据进行了哈希处理。但是在区块头中找不到...

如何计算超级账本结构的默克尔根?

【问题讨论】:

【参考方案1】:

Hyperledger Fabric 不会在区块头中跟踪世界状态的散列。相反,哈希链是在区块内容之上形成的。

您将在块头中找到两个字段是data_hashprevious_block_hash

data_hash 是区块数据部分中交易字节串联的哈希值。

previous_block_hash 是前一个区块头的哈希值。区块头的哈希值是通过将内容转换为 ASN1 来计算的,然后对封送的表示进行哈希处理。

您可以在此处具体了解 Fabric 组件如何实现其散列:https://github.com/hyperledger/fabric/blob/a5bd17f9ec21241c324f453f0ded3d045bd28ff3/protoutil/blockutils.go#L38-L79

【讨论】:

以上是关于如何计算超级账本结构中的默克尔根?的主要内容,如果未能解决你的问题,请参考以下文章

如何连接不同的计算机加入频道并在超级账本上实时查看调用内容(交易)?

构建超级账本结构时出错:goshim.tar.bz2 中的“bzip2 数据创建错误”

区块链入门到实战(12)之区块链 – 默克尔树(Merkle Tree)

超级账本Fabric的块和交易大小

基于区块链技术的超级账本(Hyperledger) - 从理论到实战

Fabric 账本数据块结构解析:如何解析账本中的智能合约交易数据