5.4 以太坊:以太坊源码详解4

本文详细介绍了以太坊中的Merkle-Patricia Trie(MPT),它是以太坊状态存储的关键数据结构。MPT结合了Trie、Patricia Trie和Merkle Tree的优势,通过16叉树结构和HP编码优化存储效率。文章深入源码,解析了MPT的四种节点类型,并讨论了HP编码在key编码中的作用,以及在以太坊Go语言实现中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MPT(实现快速查找以节省存储空间) 
背景

  • Trie:用于快速检索的多叉树,查找速度快、但是需要耗费大量的存储空间
  • Patricia Trie:耗费的空间更小
  • Merkle Tree:Merkle树是一种用于快速验证内容完整性的数据结构,其基本原理是分别计算树的叶⼦结点的hash值,然后把叶⼦结点的hash值拼接在⼀起,再计算⼀次hash作为其⽗结点的hash值,依次向上直到根结点,根结点的hash值称为Merkle Root。 可以看出,如果想要获得相同的Merkle Root,所有⼦结点的内容都必须相同,这样就可以⽤来验证树的内容有没有被篡改

概念

  • MPT:MPT融合了了上⾯面3种数据结构,但是⼜又有⼀一些细微的差别。
  • MPT是⽤用来检索字节数据的,因此是16叉树,分别代表0x0~0xF。

结构 
MPT定义4种结点类型:

  1. 空结点(NULL)
  2. 分⽀支结点(branch node):包含16个分⽀支,以及1个value
  3. 扩展结点(extension node):只有1个子结点
  4. 叶子结点(leaf node):没有⼦子结点,包含⼀一个value

HP编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖的乔布梭

你好我是秦始皇转世,资助请从速

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值