当前位置:区块链之家 > 区块链技术 > 默克尔树(Merkle Tree)介绍

默克尔树(Merkle Tree)的定义

发布:2023-08-29 12:03:01 59


默克尔树(Merkle Tree)是一种树状数据结构,由德国计算机科学家拉尔夫·默克尔于1979年提出,它通过对数据分块并逐层哈希计算,将大量数据以树的形式组织起来,默克尔树主要用于数据完整性验证和快速检索,树的底部是叶子节点,代表每个数据块的哈希值,上层的节点是由叶子节点的哈希值逐层计算得出的,通过比较根节点的哈希值与每个叶子节点的哈希值,可以检测数据是否被篡改,由于默克尔树的特性,只需要对树中的部分节点进行哈希计算,就可以快速验证整个数据集,默克尔树在比特币等加密货币中被广泛使用,以确保交易的安全性和一致性,下面看下详细内容。

默克尔树(Merkle Tree)介绍

默克尔树(Merkle Tree)是由Ralph Merkle在1979年发布的一种算法,至今已有40多年的历史,是一种通过零知识证明的方法让任意一个节点都可以验证一个数据库的所有数据是否正确的方法。

什么是默克尔树?

1.哈希算法

在了解默克尔树之前,我们首先要知道哈希算法(Hash)的概念。哈希算法是一种可以将任意长度的数据输出为固定长度的算法,它的优势是单向加密,也就是说没有办法把计算出来的值反推出原始的数据,起到了保护的作用。像比特币等数字货币中,也广泛地使用到了哈希算法,比如知道比特币的地址,没有办法反推出私钥,但有私钥就可以生成地址。

2.生成默克尔树

当理解了哈希算法之后,我们就可以开始生成一棵默克尔树了。首先,我们先为每一个用户都创建一个“叶子”,这个叶子里是用户在某一个时间点的唯一ID识别码以及资产数据,Pionex是采用了用户的userid以及用户在某个时间点拥有的资产种类和数量作为基础数据。然后我们将这个叶子里的数据,使用哈希算法计算出一个哈希值,那么每一个用户都拥有了一个哈希值(如Hash1、Hash2、Hash3…),这样我们就有了第一层的树枝。

接着,我们两两组合,把1号和2号用户的哈希值计算为一个新的哈希值Hash12,3号和4号用户的哈希值计算为一个新的哈希值Hash34,依次类推。这样我们就有了第二层的树枝。

接着,我们再把第二层树枝里的哈希值再两两组合,就生成了一批新的哈希值,比如Hash1234等。

最后,我们一层一层地往上组合,最终我们就会得出一个最终的哈希值,称为根哈希,Hash Root。

到这里,我们就生成了一颗从叶子到根的完整的默克尔树了。

3.验证机制

那么这样的一个机制为什么可以验证交易所的资产是否是100%准备金呢?

假设今天我是一名用户,那么我明确地知道自己的账号和资产情况,那么我使用标准的哈希算法就可以算出我的哈希值。然后,通过开源的哈希数据,我就可以获得别人的哈希值,那么我可以通过自己的哈希值和别人的哈希值去计算最终的根哈希是什么数字。如果我算出来的和平台公布的一致,那么说明平台没有造假。

这里的核心要点在于,只要有一名用户站出来说他计算出来的哈希值和平台给出的哈希值不一样,那么就代表平台有造假行为。因此是通过了众包的方式监督平台在账目上是无法作假的。这个与以太坊上二层网络的一些零知识证明的机制是异曲同工的。

以上就是什么是默克尔树?一文读懂默克尔树(Merkle Tree)的详细内容,更多关于默克尔树(Merkle Tree)介绍的资料请关注码农之家其它相关文章!

相关文章

网友讨论

  • 扩展迷