Merkle Patricia Tree1,梅克尔帕特里夏树,提供了一个基于加密学的,自校验防篡改的数据结构,用来存储键值对关系。后文中将简称为MPT。尽管在本规范范围内,我们限定键值的类型只能是字符串(但仍对所有的类型适用,因为只需提供一个简单的序列化和反序化机制,将要存储的类型与字符串进行转换即可)。

MPT是确定的。确定性是指同样内容的键值,将被保证找到同样的结果,有同样的根哈希。关于效率方面,对树的插入,查找,删除的时间复杂度控制在O(log(n))。相较于红黑树来说,MPT更好理解和编码实现。
1. 前言:基数树(Radix Tree)
在一个标准的基数树里,要存储的数据,按下述所述:

[i0, i1, … iN, value]

其中的i0到iN的表示一般是二进制或十六进制的格式的字母符号。value表示的是树节点中存储的最终值。每一个i0到iN槽位的值,要么是NULL,要么是指向另一个节点的指针(在当前这个场景中,存储的是其它节点的哈希值)。这样我们就实现了一个简单的键值对存储。举个例子来说,如果你想在这个基数树中,找到键dog所对应的值。首先需要将dog转换为比如ascii码值(十六进制表示是646f67)。然后按字母序形成一个逐层向下的树。沿着字母组成的路径,在树的底部叶节点上,即找到dog对应的值。具体来说,首先找到存储这个键值对数据的根节点,找到下一层的第6个节点,然后再往下一层,找到节点4,然后一层一层往下找,直到完成了路径 root -> 6 -> 4 -> 6 -> f ->

Merkle Patricia Tree 梅克尔帕特里夏树(MPT)规范(笔记)相关推荐

  1. Merkle Patricia Tree 梅克尔帕特里夏树(MPT)规范

    Merkle Patricia Tree 梅克尔帕特里夏树(MPT)规范 2017/4/15 posted in  Solidity深入浅出系列 Merkle Patricia Tree1,梅克尔帕特 ...

  2. Merkle Patricia Tree 梅克尔帕特里夏树(MPT)详细介绍

    Merkle Patricia Tree [1],梅克尔帕特里夏树,提供了一个基于加密学的,自校验防篡改的数据结构,用来存储键值对关系.后文中将简称为MPT.尽管在本规范范围内,我们限定键值的类型只能 ...

  3. 014-数据结构-树形结构-基数树、Patricia树、默克尔树、梅克尔帕特里夏树( Merkle Patricia Tree, MPT)...

    一.基数树 Radix树,即基数树,也称压缩前缀树,是一种提供key-value存储查找的数据结构.与Trie不同的是,它对Trie树进行了空间优化,只有一个子节点的中间节点将被压缩.同样的,Radi ...

  4. 快速学习-梅克尔-帕特里夏树

    梅克尔-帕特里夏树 Merkel-Patricia Tree(MPT) MPT是什么 Merkel Patricia Tree (MPT),翻译为梅克尔-帕特里夏树 MPT 提供了一个基于密码学验证的 ...

  5. 区块链入门系列之梅克尔帕特里夏树

    区块链入门系列文章 区块链基本概念和名词解释 P2P 共识算法 梅克尔-帕特里夏树 从零开始搭建区块链 这里写自定义目录标题 区块链入门系列文章 前言 Merkle树 MPT 总结 前言 在讲基本概念 ...

  6. 区块链100讲:梅克尔树保障区块链数据不可篡改,想换根就要砍树!

    2019独角兽企业重金招聘Python工程师标准>>> 区块链100讲上期我们讲了哈希算法和公开密钥算法,说到哈希算法提到了一个名词"Merkle tree",梅 ...

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

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

  8. 梅克尔树Merkle trees

    世人皆知区块链,却不知梅克尔树呀 最近,研究中本聪大神的论文,他提到了梅克尔树让我很好奇, 打算研究一下,谁知道网上各种乱天飞的文章几乎都定义成: 梅克尔树(Merkle trees)是区块链的基本组 ...

  9. java merkle树,梅克尔树Merkle trees

    世人皆知区块链,却不知梅克尔树呀 最近,研究中本聪大神的论文,他提到了梅克尔树让我很好奇, 打算研究一下,谁知道网上各种乱天飞的文章几乎都定义成:梅克尔树(Merkle trees)是区块链的基本组成 ...

最新文章

  1. 试用了一下sourceMonitor有点不知所云..
  2. YOLOv3: An Incremental Improvement
  3. 计算机操作系统笔记(四)
  4. YYKit 学习笔记之 YYLabel
  5. ETL最佳实践-NiFi
  6. 报刊资料整理:云安全(cloud security)
  7. matlab 光谱共聚焦,光谱共焦技术介绍.PDF
  8. python 入门区块链
  9. 蜡笔小新配音怎么做?简单小技巧,软萌可爱的小新音你get了吗
  10. 网站源码 HTML和源代码有什么区别?他俩是什么关系?
  11. 【目标跟踪】|STARK
  12. CSS3动画 表情包围绕圆公转而不自转
  13. 如何利用UDP组播实现海康网络摄像机(IPC)的自动探测【源码】【监控】【录播】【NVR】【ONVIF】
  14. 外卖项目06---套餐管理业务开发(移动端的后台代码编辑开发)
  15. java操作jacoco
  16. ESP32 (Timer)-定时器学习(7)
  17. C++算法设计与分析例题代码(基础篇)
  18. 达梦数据库初始化实例参数说明(页大小 (page_size)、簇大小 (extent_size)、大小写敏感 (case_sensitive)、字符集 (charset))
  19. Python 面向对象--人狗大战(代码)
  20. 预装win8的华硕A450V UEFI安装ubuntu成功经验分享

热门文章

  1. JavaScript-关闭图片
  2. 内网渗透--frp代理设置与proxychains代理设置
  3. 算法——二维数组回形打印
  4. 英文短句100条摘抄
  5. 平板电脑:给力的移动互联网终端
  6. Linux设备模型(4) — bus 与 device 和 driver
  7. 计算机专业课程 视频教程
  8. java palette_Palette使用简介与实现原理
  9. 静态方法可以直接调用实例方法吗
  10. 土豆较为悲凉的前世今生,还能逆风翻盘吗?