手机版 | 登陆 | 注册 | 留言 | 设首页 | 加收藏
当前位置: 网站首页 > 自动量化交易机器人软件 > 文章 当前位置: 自动量化交易机器人软 > 文章

Merkle根

时间:2022-01-10    点击: 次    来源:网络    作者:佚名 - 小 + 大

Merkle根,是指Merkletree的根。要理解Merkle根,先要理解Merkletree

Merkletree是种用来保持大型数据库中数据一致性的高效方法,其采用哈希散列的算法来实现这种功能。具体来说,就是对比网络中两个节点的数据是否完全一致时,不需要耗费大量的资源去比较全部的数据,只需要简单比较存在差异的部分,而对于完全一致的内容不再进行比较。如果网络采用了Merkletee算法,可以很快找到差异所在。

以下通过一个简单的例子说明Merkleree的高效。

假设有两个节点,节点1和节点2,它们保存的数据如下:

节点1:1.2,3,4,5,7.8,9.10,11(缺失6)

节点2:1,2.3,4.5.6.7.8.9,10(缺失11)

要比较这两个节点的数据一致性,并找出缺失的数据,采用Merkletree方法时,第一步是把每个节点的这些数据分为4个区,每个分区存储S个数据,如图3.2所示(红色的部分表示每个节点缺失的数据)

第二步,对每一个存储的数据采用相同的哈希算法进行计算,得出其哈希值,缺失的数据无哈希值,结果如图3.3所示。

第三步是计算每个分区的哈希值,由于哈希算法的单向性、唯一性,相同的数据得到的哈希值相同,有差异的数据得到的哈希值不相同,得到的结果如图3.4所示。


第四步是把每两个分区结合到一起,作为Merkletree的“叶子”,向上计算其哈希值,过程如图3.5所示。

完成以上步骤的过程,就是把每两个节点的数据用Merkletree方式进行了处理,最后得到的一个哈希值就是“Merkle根”。

此后,在对这两个节点进行数据同一性校验时,不需要去比对全部数据存储区域的每一个数据,而只需要从Merkle根开始校验。

(1)比对两个节点的Merkle根。如果完全一致,说明全部数据是统一的,直接同步即可。如果两个节点的Merle根不相同,如同本例中图示的情况,说明两个节点的数据存在差异,需要进一步比较。

(2)各个节点从根节点向下访问子节点,节点1左侧的子哈希值(2347190)与节点2左侧的子哈希值(2157190)不同,说明这个节点下的数据存在差异,需要进一步向下延伸比较。

同理,右侧的子节点哈希值也不相同,说明右侧的节点下数据也存在差异,需进一步向下延伸比较。

(3)访问孙节点的哈希值,并进行校验。可以发现,第一组孙节点的哈希值相同(均为453645),说明这一组中的数据完全相同,因此,本组数据无须比对。

再比较第二组的哈希值,若存在差异,说明数据出现了差异,需要对这一组的数据进行详细的校验。此时将两块区域的5个数据进行比对,可以发现节点1第二组的数据缺失,于是系统可以用节点2的数据对节点1的对应区域进行同步写人。

(4)对节点1和节点2右侧的数据,则重复上述的过程,直到完成全部数据的校验,并使节点1与节点2的数据达到完全一致。同时,这种采用Merkle根进行比较和检验的过程,相对于把整个数据库的数据校验一遍的方法,显然更为高效。

在区块链的交易中,每个区块记录成百上千的交易,为了提高效率、减少资源耗费,这些交易的哈希值两两进行哈希算法,直到形成最后一个哈希值,也就是重复上述的Merkletree过程,最后得到的一个哈希值就是Merkle根,这个最终的Merkle根值会写人区块头中,只有32字节大小,易于传播,并在验证时只需要验证Merkle根值即可,确保了数据的一致性。

以上内容由量化交易机器人提供!

上一篇:区块链留言证明应用

下一篇:椭圆曲线加密算法的加密原理

备案ICP编号  |   标题:炒数字虚拟加密货币-自动炒币量化交易机器人软件-免费测试  |  地址:自动炒币量化交易机器人软件  |  电话:12345678910  |