Merkel树和SPV
Merkel树和SPV
Merkel树和SPV

简单来说,比特币采用Merkel树的结构是为了系统能够在删除大量交易数据的条件下(节省磁盘空间)还能够对交易进行有效的验证(SPV)。

阅读比特币白皮书(三)比如一个节点可以将所有的交易数据都删除,只保留区块头。区块头中存储着merkel树根。如上图所示,假设该节点想要验证交易tx3,那么他就去网络中的其他节点(如可靠的全节点)处获取相关的Merkel树枝(Hash01、Hash2和Tx3)。收先他对tx3进行哈希得到Hash3,再对Hash3+Hash2进行哈希操作得到Hash23,最后再将Hash01+Hash23进行哈希操作得到Root Hash。

通过将这里得到的Root Hash和自己保存着的区块头中的哈希进行对比,就能得出TX3是否存在或被修改了。因为任意微小的修改都会导致哈希的改变。这也就是原文中说的:验证交易就是找到该交易在链上的连接位置。此处由于节点本身保存着区块头中的Merkel根哈希,即使该节点请求Merkel树枝的节点想要作为,给该节点返回的是被篡改过的(Hash01 、Hash2和Tx3),该节点也可通过自己保存着的Merkel根验证出来。

当然,如果哈希算法被**或者遭遇了51%攻击,这种验证方法显然就会出现问题了。

相关文章: