Merkle(默克尔)树,又叫哈希树,是一种典型的二叉树结构,由一个根节点、若干中间节点以及若干叶节点组成。

结构示例图:

默克尔树的所有叶子节点,都用来存放数据。所有非叶子节点,都用来存放其所有孩子节点的内容的hash值。

基于这种数据存储方式,当任何叶子节点中的数据有变动时,其父节点内容也会变动,之后父节点的父节点也会变动,一直传递到跟节点。

因此,默克尔树至少可以有如下两种用途:

1.快速比较大量数据

对要比较的两组数据分别构建默克尔树,最后比较两棵树的根节点是否相同,相同则数据相同。由于Hash计算的过程可以十分快速,预处理可以在短时间内完成。利用默克尔树结构能带来巨大的比较性能优势。

2.零知识证明

如上图,通过构建上述一个默克尔树,你可以不向别人提供任何D0的信息来向他们证明你拥有D0:提供N1、N5和ROOT节点的值,则其他拥有D0的人,就可以依据同样的规则生成ROOT节点,如果得出的结果和你提供的ROOT值相同,那么他就可以验证你确实拥有D0。

147_Merkle(默克尔)树简单理解相关推荐

  1. Merkle Tree(默克尔树)原理解析

    Merkle Tree(默克尔树)原理解析 一.Merkle Tree 1.1 Merkle Tree的特点 二.Hash list 三.Merkle tree VS Hash list 四.Merk ...

  2. 默克尔树(Merkle Tree)总结

    目录 为什么要有默克尔树 简介 Merkle Tree的特点 图解 创建树 检索-文件夹比较 检索-防伪 更新 插入删除 应用 数字签名 P2P网络 可信计算 区块链-简单验证支付 为什么要有默克尔树 ...

  3. 以太坊解析:默克尔树、世界状态、交易及其他

    以太坊黄皮书中的一些概念.通过本文,我们将学到以太坊中一些主要组成部分以及它们在整个系统中的作用,同时也将简要地讨论以太坊中默克尔树的工作原理. 希望屏幕面前的你在阅读之后能明白默克尔树到底是什么,以 ...

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

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

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

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

  6. 科普 | 什么是稀疏默克尔树多值证明

    译者注:以太坊网络是一台富状态(stateful)的世界计算机,其状态包括状态余额.交易流水号(nonce).合约代码及合约存储内容等.在技术上,这些状态数据是靠一种叫做 "默克尔树&quo ...

  7. 6.tendermint默克尔树

    默克尔树概述 在ABCI应用响应Commit请求消息时,需要计算并返回当前状态的哈希,以便Tendermint 将其打包到下一个区块头里(app_hash字段). 但是,如果我们还按原来的方法计算一个 ...

  8. web3默克尔树MerleTree白名单校验

    默克尔树(⼜叫哈希树)是⼀种典型的⼆叉树结构,有⼀个根节点.⼀组中间节点和⼀ 组叶节点组成. 曾⼴泛⽤于⽂件系统和P2P系统中.⽐如 git . 区块链 . IPFS 等 主要特点:类似二叉树, 最下 ...

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

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

最新文章

  1. 阿里重金投数梦工场 布局PaaS动了谁的奶酪
  2. hibernate hql语句 投影查询的三种方式
  3. 贞子的在日本历史出现过的轨迹
  4. Go 如何实现热重启
  5. 关于Pac-Man,你所要了解的 一切
  6. 用java实现etcd分布式锁_etcd分布式锁及事务
  7. OpenShift 4 之配置Insecure Registry和Blocked Registry镜像源
  8. dwr java有返回值但是js获取不到返回值_一探究竟:Java反射效率低的原因到底在哪?...
  9. linux运维、架构之路-Kubernetes集群部署TLS双向认证
  10. c语言八数码问题启发式搜索_一种快速且简单的AI启发式语言学习方法
  11. MongoDB 快速入门--高级
  12. soul群聊显示服务器异常,soul被限制群聊什么意思
  13. qemu教程_QEMU实例教程
  14. Rviz显示不出数据了之一文搞懂Qos
  15. 开发者百度地图的使用,做一个小demo,ak秘钥,
  16. 【Fracturing Destruction】点破小球——Unity3D中达到条件才触发的物体爆裂、炸裂、碎裂效果
  17. Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置
  18. Altium Designer基础使用
  19. svn中commit如何全选文件
  20. 基于Java开发的数据大屏展示程序

热门文章

  1. 微信模板消息:{‘errcode‘: 47001, ‘errmsg‘: ‘data format error rid}
  2. elasticsearch 客户端工具ESClientRHL
  3. 基于单片机仓库温度检测系统设计
  4. Java 列举数组中任意元素和为定值的组合
  5. acg456漫画网站爬虫
  6. 【无标题】C#上位机与三菱PLC FX2NC通讯方法
  7. 两个数的最大公约数和最小公倍数的求法
  8. 教务系统和服务器,教务系统服务器地址
  9. ArcGIS:如何进行缓冲区分析(以市区选择住房位置为例)?
  10. C#多人抢票模拟器,假设高铁有seatCount个座位