网赚论坛

 找回密码
 免费注册
查看: 300|回复: 0
打印 上一主题 下一主题

区块链:Merkle Tree

[复制链接]

17

主题

17

帖子

68

积分

Ⅰ级财主

Rank: 1

积分
68
跳转到指定楼层
楼主
发表于 2017-10-21 12:58:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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].http://www.cnblogs.com/fengzhiwu/p/5524324.html

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

广告合作|Archiver|手机版|小黑屋|财富吧

GMT+8, 2024-11-16 06:58 , Processed in 0.561601 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.1

© 2014-2021 财富吧

快速回复 返回顶部 返回列表