梅克尔树 - 发现数据篡改的有效手段。

文章目录现实的应用
前言
工作量证明是哈希的典型应用,本期我们继续深入讨论哈希的第二个典型应用,梅克尔树 。大家都知道哈希函数的应用场景有很多 。比如,比特币中挖矿要求的工作量证明 。梅克尔树在区块链中如何实现区块的防篡改 。区块是怎么通过哈希链接成区块链的 。都可以应用哈希的特性来实现 。这次我们把梅克尔树在比特币中如何验证交易被篡改,如何实现节点的轻量化,也就是说为什么手机钱包或移动钱包成为了可能的原因,从技术角度讲清楚,讲透彻 。
请大家关注抖音频道 。我们将会分享有趣的、高质量的、加密货币相关的视频 。
什么是梅克尔树
大家都知道区块链是一个链式结构,这个链式结构将区块串链起来,构成了区块链 。我们将其中一个区块放大观察,解剖麻雀,你会发现每一个区块里有一个金字塔,这个金字塔叫做梅克尔树 。
梅克尔树的作用
这是一种神奇的数据结构,它能有效发现数据是否篡改、是否破坏,甚至可以识别对方是冒牌的 。这个树状结构是由加密学家 Ralph在1979年发表的 。中本聪甚至用它来压缩区块链的存储空间 。让我们看一下它的神奇之处 。
梅克尔树的原理 交易
有了这些交易以后,我们来看看如何搭建这个金字塔的 。我们来到了梅克尔树的第二层,将交易A的进行哈希得到哈希值HA,将交易B的进行哈希得到哈希值HB,以此类推完成第二层的工作 。第三层,对HA和HB进行哈希得到HAB,对HC和HD进行哈希得到HCD 。第四层,最后对HAB和HCD进行哈希,够成了梅克尔树的树根,也就是形成了金字塔的顶端 。
目的和意义
我们历经千辛万苦,建成了梅克尔树这个金字塔,它有什么用呢?这个梅克尔树是区块中的主要组成部分,当区块从美国节点发放到中国节点时,黑客对这个区块进行了篡改 。中国节点B是如何检测或验证是否被篡改了?我们来看一个实际例子 。
比如说BOb将刚才交易中的5元变成了6元,也就是交易A的内容发生了改变 。B节点接收到这个区块时要对收到的信息进行验证,验证的过程也是重新搭建梅克尔树的过程,CN节点中看新搭建的梅克尔树与原有的是否保持一致,由于交易A的数据发生变化导致HA的值与USA节点的不同,从底向上搭建出新的梅克尔树,新的金字塔顶端与USA节点不同 。也就是说如果梅克尔树中的任意信息被篡改,那么重新搭建的树的根一定不同 。因为CN节点在接收梅克尔树之前就得到了这个树的树根,如果发现新搭建的树根与之前的树根不一样,那说明交易数据被篡改了 。为什么CN节点在接收梅克尔树之前就得到了这个树的树根,抖音频道下一期分解 。

梅克尔树 - 发现数据篡改的有效手段。

文章插图
现实的应用
另外,没有梅克尔树,就没有手机钱包的存在 。整个比特币的区块链数据需要至少250G的硬盘和2G的内存 。存储整个比特币的区块链数据的节点叫做全节点,全节点一般是一个台式机,他有足够的磁盘空间和内存,用来保存和同步所有区块数据 。如果所有数据都放到手机端来同步和验证,手机几乎干不了别的事情了 。那么如何用手机只存储关键的、少量的、安全的信息,是手机钱包要突破的关键难题之一 。
中本聪对梅克尔树进行了反复思考,发现梅克尔树中仍有很多与钱包地址不相关的交易,这些交易不是我关心的,与我无关 。这些交易能不能最大化的进行删除?删除梅克尔树中的不必要信息?
在USA节点中,CN关心的交易在K中,其他的交易都不关心,那么USA节点只向CN节点发送HK,HL,HIJ,HMNPO,数据即可 。CN接收到数据后,可以将HK与HL进行哈希得到HKL,HKL与HIJ进行哈希得到HKLIJ,一直从底部线上构重新建梅克尔树这个金字塔,最终得到根为A到P的哈希值,如果K中信息在传输中有变化,那利用梅克尔树的机制可以验证出来 。这样新版的梅克尔树只保留了最小且必要的信息,删除了区块中与钱包地址没有关系的交易 。同时USA节点减少了传送的带宽 。