1. 引言

前序博客有:

  • Merkle tree及其在区块链等领域的应用
  • Merkle tree proof

2. Merkle tree

Merkle tree可看成是对一组数据的密码学承诺,类似:

2.1 Merkle tree包含证明

如需证明A包含在上述树中,仅需要发送A, H(B), H(H(H(C)+H(D))),验证root哈希能否匹配即可。

2.2 Merkle tree不包含证明

Merkle tree很容易进行包含证明,但不容易实现“不包含”证明,除非公开整棵树的内容,但这违背了使用Merkle tree的初衷。

3. Sparse Merkle tree

Sparse Merkle tree与标准Merkle tree类似,但是Sparse Merkle tree的data是带索引的,且每个datapoint会放入 datapoint索引 对应的叶子节点。

假设某Merkle tree有4个叶子节点,对该树填充(A, D)。由于A为字母笔的首字母,放于第一个叶子节点处,D放在第4个叶子节点处。而对于第2个和第3个叶子节点,将保持为空,实际实现时,会设置特殊值(如null):

3.1 Sparse Merkle tree包含证明

Sparse Merkle tree包含证明 与上面的Merkle tree包含证明类似:
为证明A在树中,仅需要提供A、H(null)、H(H(null)+H(D))即可。

3.2 Sparse Merkle tree不包含证明

如需证明C不在上面的sparse merkle tree中,将很简单:
C若在树中,其应在第3个叶子节点,若不在树中,第3个叶子节点必须为null

不包含证明即为:以标准merkle证明第3个叶子节点是null,仅需提供null、H(D)、H(H(A)+H(null))

sparse Merkle tree的最大特点在于:其确实在Merkle tree中代表了key-value stores。

4. Sparse Merkle tree的缺点

Sparse Merkle tree的最大优点在于:可提供高效不包含证明。
但是,这也意味着sparse Merkle tree将非常非常大,26个字母看起来不多,但大多数时候处理的是 2 256 2^{256} 2256哈希值,手工构建这样的sparse merkle tree需要太多的索引。

2016年论文Efficient Sparse Merkle Trees——Caching Strategies and Secure (Non-)Membership Proofs等技术 可高效生成Merkle tree。但这些技术的关键在于 巨大sparse merkle tree 大多数情况下是系数的。H(null)为常量值,H(H(null))也是常量值,以此类推等等。因此可缓存树的大多数部分。

5. Sparse Merkle tree应用场景

Plasma Cash使用sparse Merkle tree来存储deposited assets信息。每种Plasma Cash asset都有唯一的ID。当某资产转移给某新用户时,会在spare Merkle tree中相应的asset索引中包含一笔交易。然后使用“包含证明”(或“不包含证明”)来证明 某特定历史交易是有效的。

参考资料

[1] 2018年博客 What’s a Sparse Merkle Tree?

Sparse Merkle Tree相关推荐

  1. 稀疏默克尔树(Sparse Merkle Tree)

    1. 默克尔树 1.1. 默克尔树的存在证明 1.2. 默克尔树的不存在证明 2. 稀疏默克尔树 2.1. 稀疏默克尔树的存在证明 2.2. 稀疏默克尔树的不存在证明 3. Ref 博客链接:http ...

  2. Merkle Tree 实现细节及(不)存在性证明

    Merkle Tree in BitCoin & BitCoin Cash Merkel Tree是Bitcoin的核心组件,其相关资料已经非常丰富,所以本文档偏重于介绍Merkle Tree ...

  3. Merkle Tree(梅克尔树)算法解析

    Merkle Tree概念   Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树.Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值.非叶 ...

  4. 基于Java语言构建区块链(六)—— 交易(Merkle Tree)

    基于Java语言构建区块链(六)-- 交易(Merkle Tree) 2018年04月16日 10:21:35 wangwei_hz 阅读数:480更多 个人分类: 区块链比特币bitcoin 最终内 ...

  5. 七、区块链如何运用merkle tree验证交易真实性

    转载自:https://www.tangshuang.net/4117.html 本文假设你已经知道区块链中merkle tree的原理,现在搞明白具体怎么来实现交易真实性验证. Merkle Tre ...

  6. 区块链六-Merkle Tree

    2019独角兽企业重金招聘Python工程师标准>>> 基于Java语言构建区块链(六)-- 交易(Merkle Tree) Posted on 2018-03-26 |  In b ...

  7. merkle tree(hash tree)

    merkle tree即为hash tree,以下都用hash tree表示. hash tree使得可以对大型数据结构的内容进行有效且安全的校验. hash tree是hash list和hash ...

  8. layui如何获取父节点的父节点_区块链如何运用merkle tree验证交易真实性

    大部分材料都会提到区块中保存了merkle根,并且利用它作交易真实性验证.但是具体如何作这个真实性验证,没有一篇文章可以通俗的讲出来.本文假设你已经知道区块链中merkle tree的原理,现在想搞明 ...

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

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

最新文章

  1. 上交2017计算机专业就业,上海交通大学计算机科学与工程系(CSE)
  2. python设计模式六大原则_php设计模式的六大原则(六):迪米特法则
  3. python selenium 鼠标移动到指定元素,并点击对应的元素
  4. SAP UI5里的abap.js
  5. Python集合(set)类型的操作
  6. 有关java的参考软件_Java的相关的排序实现(参考软件设计师教程)
  7. python 元组 列表 字典区别_Python列表、元组、字典、集合、字符串的异同总结
  8. RPN Calculator for mac(RPN计算器)
  9. rhel linux 自动 fsck,red hat as 4 启动报错:checking filesystems fsck.ext3: bad magic number ......
  10. Python(十二):异常
  11. 下载的ContentType设置
  12. nginx autoindex美化
  13. ios备忘录下载安卓版_苹果备忘录app下载
  14. python数据生成pdf_利用Python的Django框架生成PDF文件的教程
  15. dalong(大龙燚火锅)
  16. 大型医院挂号系统(数据结构课设)
  17. linux设置用户密码
  18. 电影里的机械手臂,和现实究竟有多大区别?
  19. 分奖金(python)
  20. openGauss雄踞墨天轮2021年度中国数据库魔力象限领导者

热门文章

  1. 暴风影音2007全功能完美版和Symantec Norton的冲突 1
  2. 通过MERL100计算Blender Disney BRDF参数
  3. 边缘提取之Roberts算子
  4. 数据结构与算法——数据结构知识归纳
  5. 零基础学黑客攻防 :实现简单的QQ/邮件黑客攻击,注册表/系统安全防护,黑客零基础入门最佳教程
  6. Oracle Data Guard 简介
  7. Wallace 和 Radix-4 Booth-Wallace乘法器性能分析
  8. 详解温度传感器DS18B20编程与使用
  9. 数据高位和低位的分离
  10. java 导出excel打开报错_java导出excel文件报“失败-网络错误”