深入解析区块链默克尔树原理与应用

哈希树也被称为默克尔树。它是一种树形数据结构,其中每个叶子节点都标有数据块的哈希值,而每个非叶子节点都标有其子节点标签的哈希值。本文将重点详细讨论以下主题:

  • 什么是密码学哈希?
  • 什么是哈希指针?
  • 区块链结构
  • 区块结构
  • 默克尔树结构
  • 默克尔树是如何工作的?
  • 为什么默克尔树对区块链很重要?
  • 成员证明
  • 默克尔证明
  • 简单支付验证 (SPV)
  • 默克尔树的优势

让我们详细讨论这些主题中的每一个。

什么是密码学哈希?

密码学哈希是一个函数,它为可变长度的输入输出一个固定大小的摘要。哈希函数是重要的密码学原语,并在区块链中得到了广泛的应用。例如,SHA-256 就是一个哈希函数,对于任何可变位长的输入,其输出将始终是一个 256 位的哈希。

!哈希函数示例

  • 从上面的图片可以清楚地看出,即使输入句子中的字母发生最轻微的变化,也会极大地改变所得到的哈希值。因此,哈希可以用来验证完整性
  • 假设有一个包含重要数据的文本文件。将文本文件的内容传递给哈希函数,然后将哈希值存储在手机中。一名黑客设法打开了文本文件并更改了数据。
  • 现在当您再次打开文件时,您可以再次计算哈希值,并将此哈希值与之前存储在手机上的哈希值进行比较。
  • 显然,这两个哈希值不匹配,因此文件已被篡改。

什么是哈希指针?

常规指针存储数据的内存地址。使用这个指针,可以很容易地访问数据。另一方面,哈希指针是指向数据存储位置的指针,并且该指针还存储了数据的密码学哈希值。因此,哈希指针指向数据,同时也允许我们验证数据。哈希指针可用于构建各种数据结构,例如区块链和默克尔树

!哈希指针结构

区块链结构

区块链是两种基于哈希的数据结构的高效结合——

  • 链表: 这是区块链本身的结构,它是由哈希指针组成的链表。常规链表由节点组成。每个节点有 2 个部分——数据和指针。指针指向下一个节点。在区块链中,只需用哈希指针替换常规指针即可。
  • 默克尔树: 默克尔树是由哈希指针形成的二叉树,以其创造者 Ralph Merkle 的名字命名。

!带有哈希指针的区块链即链表

区块结构

1. 区块头: 头数据包含区块的元数据,即关于区块本身的信息。区块头的内容包括——

  • 前一个区块头的哈希。
  • 当前区块的哈希。
  • 时间戳。
  • 密码学随机数。
  • 默克尔根。

2. 默克尔树: 默克尔树是由哈希指针形成的二叉树,以其创造者 Ralph Merkle 的名字命名。

  • 如前所述,每个区块都应该容纳一定数量的交易。现在问题出现了,如何在一个区块中存储这些交易?一种方法可以形成一个基于哈希指针的交易链表,并将这个完整的链表存储在一个区块中。然而,当我们结合实际情况来看待这种方法时,存储一个包含数百个交易的巨大列表似乎并不切实际。如果需要确定某个特定交易是否属于某个区块怎么办?那么我们将不得不逐个遍历区块,并在每个区块内遍历交易的链表。
  • 这是一个巨大的开销,并且会降低区块链的效率。这就是默克尔树发挥作用的地方。默克尔树是包含在区块中的所有交易的逐块树。它允许我们拥有所有交易的哈希/摘要,并以时间高效的方式提供成员证明。
  • 回顾一下,区块链是区块的基于哈希的链表,其中每个区块由头和交易组成。交易以树状方式排列,称为默克尔树。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/25815.html
点赞
0.00 平均评分 (0% 分数) - 0