文章目录

  • 默克尔树
  • 生成过程
  • 应用场景
  • 在区块链中的应用

默克尔树

默克尔树(又叫哈希树)是一种典型的二叉树结构,有一个根节点、一组中间节点和一组叶节点组成。默克尔树最早由 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。

在区块链中的应用

在区块链中,我们只需要保留对自己有用的交易信息,删除或者在其它设备备份其余交易信息。如果需要验证交易内容,只需要验证默克尔树即可。若根哈希验证不通过,则验证两个叶子节点,再验证其中哈希验证不通过的节点的叶子节点,最终可以准确识别被篡改的交易。

区块链 — 默克尔树相关推荐

  1. 【区块链 | 默克尔树】使用默克尔(Merkle)树实现NFT白名单

    简介 在我们今天所知道和喜爱的区块链出现之前,默克尔树一直是密码学和计算机科学领域的一个方面.如今,我们开始慢慢看到它们在链上更频繁地被用于数据验证的目的.在这篇文章中,我将解释 Merkle Tre ...

  2. 区块链--默克尔树(Merkle Tree)

    Merkle Tree 默克尔树是一种二叉树,由一个根节点.一组中间节点和一些叶子节点组成.形状如下: D0.D1.D2和D3是叶子节点包含的数据,也就是叶子节点的value.继续往上看,N0.N1. ...

  3. 默克尔树_默克尔树:正在使用中

    默克尔树 Ralph C. Merkle (not pictured above), born 1952, is one of the founding fathers of Public Key C ...

  4. 区块链基础知识系列 第三课 区块链中的默克尔树

    "区块链是实现无中心分布式总账的一种技术.除了采用块.链结构的典型区块链以外,还有其他的方式实现分布式总账这个需求.总账技术的基本单元是'交易',整个账本是由一条条的交易构成.'块'类似于账 ...

  5. 常用的数据结构_三分钟了解区块链常用数据结构「默克尔树」

    免责声明:本文旨在传递更多市场信息,不构成任何投资建议.文章仅代表作者观点,不代表火星财经官方立场. 小编:记得关注哦 来源:万向区块链 原文标题:三分钟了解区块链常用数据结构「默克尔树」 默克尔树是 ...

  6. 默克尔树在区块链中的应用

    1 MT(Merkle tree) 默克尔树是一种哈希二叉树,1979年由Ralph Merkle发明.与标准二叉树一样,由一组叶节点,一组中间节点和一个根节点构成.叶节点包含存储数据或其哈希值,中间 ...

  7. 区块链杂谈---默克尔树(Merkle Tree)解析

    相信了解区块链的人对默克尔树并不忙陌生,在区块链里被广泛的应用,下面我们来了解下它的算法. Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储has ...

  8. 区块链学习1:Merkle树(默克尔树)和Merkle根

    ☞ ░ 前往老猿Python博文目录 ░ 一.简介 默克尔树(Merkle tree,MT)又翻译为梅克尔树,是一种哈希二叉树,树的根就是Merkle根. 关于Merkle树老猿推荐大家阅读<M ...

  9. GO语言和区块链开发准备阶段-默克尔树

    持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情 GO语言和默克尔树 默克尔树 默克尔树是一个二叉树,由一组hash后形成的数值节点组成,其叶子节点存放基础 ...

最新文章

  1. Win7开机密码破解
  2. (gnome-ssh-askpass:609): Gtk-WARNING **: cannot open display:
  3. oracle数据库部署
  4. Perl 连接 SQL Server(ReShip)
  5. 全球与中国立式胶体磨市场发展现状调研及前景需求分析报告2022-2027年版
  6. 还搞不懂STL的type_traits?从源码来带你一起分析
  7. SAP HANA数据库安装
  8. 天猫APP也可以点外卖了!饿了么接入天猫App
  9. Elasticsearch数据迁移工具elasticdump工具
  10. java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig
  11. 视频消重伪原创有用吗 视频md5修改器最新
  12. Node on Mac 初步
  13. 射频芯片ATE测试从入门到放弃之基本概念
  14. 什么是时延?(延迟)
  15. android 用户绑定银行卡,android 开发 怎么实现银行卡转账,绑定银行卡。 怎么实现评论回复功能。...
  16. nginx缓存以及清除缓存
  17. C#编译时提示未能解析引用的程序(被引用项目编译成功,但引用项目编译时却不能正常引用)
  18. 【答粉丝问】桌面运维需要具备的技能有什么?
  19. 每日一“酷”之Cookie
  20. 人活着到底是为了什么?心理学家马斯洛告诉你人生的终极目标

热门文章

  1. 【饭谈】ChatGpt如果让软件ui都消失的话,那ui自动化测试该何去何从?
  2. Trying to access array offset on value of type null
  3. python正则表达式删除指定符号及其中的内容
  4. 项目外包网Elance承包商使用手册中文版
  5. 2021年中国新型智慧城市百佳案例 附下载
  6. 开机出现error1962:nooperatingsystemfound
  7. PCIe扫盲——PCIe错误报告机制
  8. 笔记本整机性能测试软件,整机性能测试_笔记本评测-中关村在线
  9. 【Unity3D】关于 InputManager 以及改键功能的制作
  10. 【转】网站公安备案之详细流程