以太坊 Merkle Patricia Tree详解

Merkle Patricia Tree(MPT)是以太坊的一种数据结构,结合了基数树、Merkle Tree和Patricia Tree的优点,用于存储[key, value]键值对。MPT具有高效的插入、删除和查找操作,时间复杂度为O(log(n))。它通过哈希节点确保安全性,防止数据篡改。MPT包含四种节点类型:Leaf Node、Extension Node、Branch Node和NULL,并使用十六进制前缀编码key。" 105789963,8452852,Java面试必备:微服务框架解析,"['Java', '面试', '分布式', '微服务框架']
摘要由CSDN通过智能技术生成

Merkle Patricia Tree简称MPT树,提供了一个基于加密学的,自校验防篡改的数据结构,采用[key,value]键值对来储存数据,在以太坊范围内,限定键值的类型只能是字符串。MPT树插入、删除、查找操作的时间复杂度均为O(log(n)),但相对于红黑树来说,MPT更好理解和编码。

MPT树结合了基数树(Radix Tree)、Merkle Tree、Patricia Tree的优点。Radix Tree的结构如下:

[i0, i1, ..., iN, value],i0到iN要么指向一个节点,要么是NULL,value存储一个值,这是MPT树用来索引值的最基本结构。Patricia Tree解决了Radix Tree的低效和空间浪费问题。Merkle Tree解决了数据校验及防篡改问题。


加密性

为了保证树的加密安全,每个节点通过hash被引用key == sha3(rlp(value)),而非32bit或64bit的内存地址,即树的Merkle部分是一个节点的确定性加密的hash。一个非叶节点存储在leveldb关系型数据库中,数据库中的key是节点的RLP编码的sha3哈希,value是节点的RLP编码。

如果一个树根的hash值是公开的,那么所有人都可以通过计算每一步的值来证明这棵树在特定的路径上具有给定的值。攻击者不可能提供一个不存在的键值对,任何修改都会改变根节点的值。


高效

传统的Merkle树的效率低且空间占用大,MPT树对这些缺点进行了优化。MPT树插入、删除、查找操作的时间复杂度均为O(log(n))。


4种节点类型

  1. 标准叶子节点 Leaf Node

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值