区块链 — 默克尔树

这篇具有很好参考价值的文章主要介绍了区块链 — 默克尔树。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

默克尔树

默克尔树(又叫哈希树)是一种典型的二叉树结构,有一个根节点、一组中间节点和一组叶节点组成。默克尔树最早由 Merkle Ralf 在 1980 年提出,曾广泛用于文件系统和P2P系统中。比如 git、区块链、IPFS 等。

主要特点:

  • 最下面的叶节点包含存储数据或其哈希值;
  • 非叶子节点(包括中间节点和根节点)都是它的两个孩子节点内容的哈希值
  • 默克尔树可以推广到多叉树的情形,此时非叶子节点的内容为它所有的孩子节点的内容的哈希值。

默克尔树逐层记录哈希值的特点,让它具有了一些独特的性质。例如,底层数据的任何变动,都会传递到其父节点,一层层沿着路径一直到树根。这意味着根的值实际上代表了对底层所有数据的“数字摘要”。

生成过程

将一个大数据块拆分成更多小的数据块,然后对每个数据块进行哈希运算,得到所有数据块的哈希值之后,获得一个哈希列表。接下来根据列表元素个数的奇偶特性重新再计算出哈希值,如果是偶数,则两两合并再计算哈希值,获得新的列表;如果是奇数,则前面两两计算哈希值,最后一个单独计算哈希值。重复上面的过程最终得到一个哈希值,被称为跟哈希。
区块链树,区块链,区块链,数据结构,哈希算法

应用场景

1、快比较大量数据。叶子节点数据的细微改动,都会导致根节点发生变化,可以用根节点来判断数据是否发生修改。
2、快速定位数据块的修改。如果Data1的数据发生修改,那么就会影响H1、H4、Root。根据树的特性,从根节点到叶子节点,只需要通过O(logn)便定位到实际发生改变的数据块是Data1。
3、零知识证明。为了证明某个论断是否正确,通常我们需要将数据发送给验证者。默克尔树提供了一种方法,可以证明某方拥有数据,而不需要将原始数据发给对方。 例如,我们只需要将Data0、H1、H5、Root对外公布,任何拥有Data0的用户,经过计算可以获得同样的Root值,说明该公开用户拥有数据Data1、Data2、Data3。

在区块链中的应用

在区块链中,我们只需要保留对自己有用的交易信息,删除或者在其它设备备份其余交易信息。如果需要验证交易内容,只需要验证默克尔树即可。若根哈希验证不通过,则验证两个叶子节点,再验证其中哈希验证不通过的节点的叶子节点,最终可以准确识别被篡改的交易。文章来源地址https://www.toymoban.com/news/detail-526170.html

到了这里,关于区块链 — 默克尔树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Python实现的默克尔树

           默克尔树常见的结构是二叉树,但它也可以是多叉树,它具有树结构的全部特点。 默克尔树的基础数据不是固定的,想存什么数据都可以,因为它只要数据经过哈希运算得到的哈希值。 默克尔树是从下往上逐层计算,每个中间节点是根据相邻的两个叶子节点组合计算

    2024年02月02日
    浏览(37)
  • solidity——默克尔树实现零成本空投

    在web3.0中,大家对空投肯定不陌生。如果项目方要大规模给用户进行空投,所需gas将是一笔不小的开支,特别是在以太坊链上,其次是大规模连续转账交易所涉及的事物原子性等问题也值得考虑。接下来将介绍一种相对低成本、安全性高的空投实现方式:通过默克尔树验证用

    2024年02月04日
    浏览(42)
  • Solidity实现默克尔树 Merkle Tree

    ​ ​Merkle Tree​ ​​,也叫默克尔树或哈希树,是区块链的底层加密技术,被BTC和Ethereum区块链广泛采用。​ ​Merkle Tree​ ​​是一种自下而上构建的加密树,每个叶子是对应数据的哈希,而每个非叶子为它的​ ​2​ ​个子节点的哈希。 ​ ​Merkle Tree​ ​允许对大型数据

    2024年01月16日
    浏览(38)
  • 区块链的数据结构(一)——区块、链

            区块(block)由区块头(block header)和交易列表(transaction list,tx list)组成,block之间通过block header的hash连接成了一个链表结构。但这个链表不同于普通链表。 1. block header 比特币的block header: 以太坊的block header: hashPrevBlock / ParentHash ,上一个block header的hash h

    2024年02月13日
    浏览(41)
  • 区块链数据结构

    这笔交易参照的规则, 4 字节, Little-endian 交易输入列表的数量,1-9 字节 下面开始构建一个或多个交易输入  交易输出列表的数量,1-9 字节 下面开始构建一个或多个交易输出  

    2024年02月15日
    浏览(37)
  • 区块链的数据结构和数据存储

    区块链主要分三种,本质上是一种块状存储的链,与寻常的链表不同,链条的每一个节点是根据场景衍生的区块,一般用分布式存储数据,防篡改可溯源: 公链 联盟链 私链 上述三种区块链是基于不同场景诞生的不同业务结构,因此其核心的数据结构和数据存储方式略有不同

    2024年02月02日
    浏览(40)
  • 数据结构课程设计1: 区块链

    1.任务: [问题描述] 使用链表设计一个保存信息的系统,该系统拥有类似区块链的设计以防止信息被轻易篡改。 该题目使用一个链表。信息保存在链表的每一个节点中,每个节点需要包含该节点的编号、信息和校验码。其中: + 每个节点的编号按照顺序递增,从0开始。 + 节

    2023年04月16日
    浏览(115)
  • 区块链中基础数据结构

    1个输入:发起人A的地址 2个输出:给B转1个币   A还剩1个币  区块链是有多个区块组成的链表,每个区块包含块头和块体, 块头中包含1. 上一个区块的哈希指针 2. 块体的根哈希 3. 时间戳 块体中包含1. 哈希树 叶子结点记录详细交易记录 非叶子结点记录哈希地址。  首先A用

    2024年02月13日
    浏览(36)
  • 区块链学习笔记(2)BTC数据结构

    1.哈希指针(hash pointers):一般的指针存储的是某个结构体在内存中的地址,哈希指针除了要保存结构体的地址外,还要保存这个结构体的哈希值。 通过哈希指针,我们不但可以找到结构体在内存中的位置,同时还可以检测出结构体的内容是否遭到了篡改。 因为我们记录了

    2023年04月16日
    浏览(55)
  • 区块链技术与应用2——BTC-数据结构

    哈希指针: (1)保存数值的位置 (2)保存数值的哈希值 区块链:一个使用 哈希指针 的链表 genesis block:创世块(最开始创建的块) most recent block:最近创建的块 tamper-evident log:篡改证明记录 每一个当前区块都保存了上一个区块所有内容的哈希值与位置,形成了一个哈希

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包