区块链:Merkle Tree

作者: 等风的猴子 | 来源:发表于2017-10-04 20:25 被阅读87次

1.Merkle Tree用途

在区块链中,每一个区块中都有一个Merkle Tree,用来储存交易信息,并对交易信息进行完整性验证。

2.Merkle Tree创建

假设一个区块中,加入最低层有4个数据块,每个交易数据两两配对进行Hash运算,构成Merkle Tree节点,以此推进,进而生成整个Merkle Tree,如下图:

Merkle Tree.png

第1步:(红色线)对数据块做Hash运算;
第2步: (橙色线)相邻两个Hash值配对,做Hash运算;
第3步:(黄色线)重复第2步,生成Merkle Tree Root。

3.Merkle Tree完整性验证

从图中,可以看出构造Merkle Tree的所有节点,都是hash值。由于hash的碰撞性,可以用来验证信息的完整性,因此,Merkle Tree可以用来进行完整性验证。

Merkle Tree进行完整性验证有哪些优势呢?可以减少网络传输。

在网络中,B给A传文件,A需要确认文件是否有损坏,怎么做?B可以在传文件之前把文件的Hash值给A,A根据收到文件运算出的Hash值对比B给出的Hash值是否一致,来确定文件传输过程中没有损坏。

对于大文件的传输,往往把文件分解为一个小块,并对文件构建Merkle Tree,然后从一个可信的渠道获取文件正确的Merkle Tree根。假如A给B传输文件,B可以根据接收到的文件构建Merkle Tree根,然后对比A给的Merkle Tree根,可以验证文件是否被修改,如果有,只需重新传输被修改的数据块。

在对数据进行验证时,可以减少数据量的传输,假如要验证上图中003数据块,除了Merkle Tree根外,用户只需要知道节点A的Hash(C,D)、F点的Hash(004)、003数据块,不需要其他数据块对应的信息,经过3次Hash计算就可以确认003数据块是否被修改。

参考资料

[1].邹均,张海宁.区块链技术指南[M].北京:机械出版社,2016.11
[2].

相关文章

  • 比特币区块头中的Merkle Root生成

    比特币区块链中,每个区块都有一个Merkle Tree,区块头中的Merkle Root(也称为Merkle树的根...

  • 区块链:Merkle Tree

    1.Merkle Tree用途 在区块链中,每一个区块中都有一个Merkle Tree,用来储存交易信息,并对交易...

  • 存在与不存在的证明:Merkle Tree 与Sparse Me

    Merkle Tree是区块链技术领域最普遍应用的数据结构之一。这是因为Merkle Tree数据结构可以带来两大...

  • Merkle Tree

    如果对区块链有些基本的了解,那应该经常听到一个词叫merkle tree,那么merkle tree到底是做什么用...

  • 关于区块链的几个小问题

    1. 为什么要有 STATEROOT 在区块链的每个区块中,都有一个Merkle Tree ?,StateRoot...

  • RSA累加器,区块链瘦身神器?

    我们知道,默克尔树结构(Merkle tree)对于区块链项目而言是非常重要的,无论是比特币区块链还是以太坊区块链...

  • Merkle Patricia Trie 学习心得

    以太坊(Ethereum)是目前最被接受的区块链,而默克尔基数树(Merkle Patricia Tree,MPT...

  • 区块链技术| Merkle Tree

    简介 默克尔树是一种二叉树(类似于松树的树冠形状)。 结构 D0 ~ D3存储数据的数据块,N0 ~ N3是D0 ...

  • 区块链概念:Merkle Tree

    通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块的hash值。 ...

  • Merkle Tree与区块链

    什么是merkle tree 假设你已经知道了什么是哈希算法以及哈希是用来干啥的。 网络传输数据的时候,A收到B的...

网友评论

    本文标题:区块链:Merkle Tree

    本文链接:https://www.haomeiwen.com/subject/ihscyxtx.html