默克尔树(Merkle Tree)是什么意思

当前位置:首页 > 币圈百科 > 默克尔树(Merkle Tree)是什么意思

默克尔树(Merkle Tree)是什么意思

2023-01-03币圈百科408

默克尔树是由美国计算机科学家拉尔夫默克尔在1979年提出的。它本质上是一种树状数据结构,由数据块、叶节点、中间节点和根节点组成。因此,一个组合被称为“Merkle树”。

默克尔树各部分的构成关系如下:

image.png

哈希运算和哈希值

蓑衣网小编2022

用于生成默克尔树的哈希运算是区块链常用的加密函数。任何大小和长度的数据经过哈希运算后都会得到一个固定的大小和长度,也就是哈希值。就像我们的指纹或签名可以帮助我们识别自己一样,哈希值也可以看作是数据的指纹或签名,用于验证数据的真实性和准确性,具有以下特征:

数据与哈希值之间存在确定的一一对应关系,即相同的数据经过哈希处理后会得到相同的哈希值。

不可逆

哈希的过程是不可逆的,即可以对数据进行哈希运算得到哈希值,但无法从哈希值推导出原始计算的数据,从而保证了数据的私密性和安全性。例如,脸书等网站会将用户密码计算成哈希值并存储起来。用户每次输入密码,都会将密码转换成哈希值,并与网站上记录的版本进行比对,以验证密码是否正确。由于哈希运算的不可逆性,网站无法从哈希值推导出用户密码,从而保证了用户信息的安全。

均匀性

即上述任意大小和长度的数据经过哈希运算后都会生成一个大小和长度均匀的哈希值。一方面可以压缩数据,减轻数据存储的压力;另一方面可以对混乱的原始数据进行规范,方便后期对比验证。

为什么要用默克尔树?

由于默克尔树本质上是一种由哈希值组成的树状数据结构,所以它也继承了哈希值用于保证数据安全和隐私以及验证数据的准确性和完整性的功能。主要用于点对点下载,如BT下载、开源分布式控制系统Git、比特币、以太坊区块链等。因为我们很难保证这些分散系统中的每个节点都会提供真实可信的数据,也很难避免数据在传输过程中的丢失和损坏,所以需要引入数据加密和验证机制。

看到这里,你可能已经意识到,默克尔树实际上是将数据分成许多小块,进行多次哈希运算而构建的一种树状数据结构。那为什么要拆分数据,计算多个哈希值进行验证呢?这不是增加工作量蓑衣网小编2022吗?但实际上这样做是为了提高数据验证的灵活性。数据量越大,默克尔树的这种优势就会越明显。

试想一下,如果我们不拆分数据,而是把整体作为一个哈希值来计算,那么当数据验证出现问题时,我们很难说出问题出在哪里,只能回过头去对整个数据进行排查。如果数据量特别大,那么这个错误排查过程无异于大海捞针。

但是在默克尔树中,数据被分割成许多小块,形成许多分支。可以根据具体情况对部分数据进行校验,不需要对全部数据进行校验,提高了数据校验的灵活性和效率。

最后总结一下默克尔树的知识点:

-由哈希值组成的树形数据结构;

-用于验证区块链等分散系统中数据的完整性和准确性;

-具有数据验证灵活高效的优点;

默克尔树(Merkle Tree)是什么意思 | 分享给朋友: