MT和MPT---区块链的数据结构

简介: 本文从翻译Vitalik Buterin 的一篇博客开始介绍三个概念: * Merkle Tree: 默克尔树 * Merkle Patricia Tree: 默克尔帕特里夏树 * Merkle Proofs: 默克尔证明 ---- ### 概述 Merkle Tree是区块链的一个基础概念; 虽然可以通过构造包含所有交易的区块头的方式而不使用Merkle Tree,

本文从翻译Vitalik Buterin 的一篇博客开始介绍三个概念:

  • Merkle Tree: 默克尔树
  • Merkle Patricia Tree: 默克尔帕特里夏树
  • Merkle Proofs: 默克尔证明

概述

Merkle Tree是区块链的一个基础概念; 虽然可以通过构造包含所有交易的区块头的方式而不使用Merkle Tree, 但是如此笨重的设计注定让区块链无法走的更远。感谢Merkle Tree让以太坊可以运行在小型设备上:智能手机,平板电脑,甚至是slock.it即将生产的IOT设备。
Merkle Tree到底是何方神圣?下面我们娓娓道来。

最简单的Merkle Tree的形式是下图展示的这种二叉树。每个节点有两个孩子, 叶子节点是数据的哈希值。

image.png

为什么像上图这样设计呢? 因为这种结构可以提供一种叫Merkle Proofs的机制。

image.png

如上图所示, Merkle Proofs包含三部分: 待验证的块数据的哈希(如图中的9Dog:64), 根哈希(如图中的6c0a), 验证路径(图中黄色部分: 1FXq:18, ec20, 8f74)。

证明验证过程:

  • 9Dog:64和1Fxq:18 求哈希。
  • 上步结果和ec20求哈希。
  • 上步结果和8f74求哈希。
  • 上步结果和根哈希(6c0a)比对是否一致。

比特币中的Merkle Proofs

Merkle Proofs最早应用在比特币中, 如下图所示比特币用所有交易的哈希构造了一颗Merkle Tree, 而Merkle Tree的根哈希写在区块头中:

image.png

之所以这样做的目的是因为这种设计可以支持SPV(简单支付验证): 为了验证一笔交易无需下载所有区块和交易信息, 只需下载80字节的区块头就可以了。区块头包含5类数据:

  • 前一个区块头的哈希
  • 时间戳
  • 挖矿难度
  • 工作量证明nonce
  • 上一段提到的所有交易组成的Merkle Tree的根哈希

如果客户端想验证一笔交易的可靠性, 只需要按照上述的Merkle Proofs过程提供交易哈希和路径, 再经过一系列哈希运算后比对根哈希就可以了。
这样客户端避免了下载所有区块数据进行交易验证的噩梦, 我们称这种客户端为轻客户端。

但是上述过程虽然可以验证一笔交易的有效性, 但是它无法提供更强大的能力。 例如它无法提供验证一个账号当前持有多少资产? 虽然轻客户端可以查询多个节点并且通过某种协议保证了至少一个可信节点返回的是真实的信息来查看账户余额, 但是这样做无疑更复杂。
所以为什么不从一开始的数据结构上就解决这类问题呢? 以太坊设计正是为此而来。


以太坊中的Merkle Proofs

以太坊中的区块头包含三颗Merkle Tree, 分别是: 交易树, 单据树, 状态树。

image.png

这种设计使得更复杂的轻客户端协议成为可能, 甚至可以处理以下问题:

  • 这笔交易已经包含在一个区块了么? (交易树可以处理)
  • 告诉我过去30天, 这个地址触发的所有X事件的信息(类似前一段火爆的ico的智能合约) (单据树可以处理)
  • 我的账户现在有多少余额? (状态树可以处理)
  • 这个账户是否存在? (状态树可以处理)
  • 如果执行这笔交易会发生什么? (比较复杂, 不说明了)

帕特里夏树

最上面我们介绍了二叉的Merkle Tree形式; 对于交易树而言这种二叉的数据结构已经非常优秀了, 因为交易树是一次性计算写入后再也不会改变的,所以它对计算效率的要求并不高。

但是对于状态树情况就比较复杂了, 比如以太坊中的状态是一个key-value的map。key是账户地址, values则包含了每个账户的balance,nonce,code 和 storage。下面是测试网络上的状态数据的描述:

{
    "0000000000000000000000000000000000000001": {
        "balance": "1"
    },
    "0000000000000000000000000000000000000002": {
        "balance": "1"
    },
    "0000000000000000000000000000000000000003": {
        "balance": "1"
    },
    "0000000000000000000000000000000000000004": {
        "balance": "1"
    },
    "102e61f5d8f9bc71d0ad4a084df4e65e05ce0e1c": {
        "balance": "1606938044258990275541962092341162602522202993782792835301376"
    }
}

不同于交易树, 状态树因为交易的发生,账户的新增等动作会频繁的进行插入,更新等操作。如何让树的插入和更新变得高效, 我们需要一种新的树形数据结构,新的数据结果需要具备两个特性:

  • 树的深度有限,哪怕收到攻击使得树的深度持续增加。否则树深度过大会导致计算缓慢而无法正常服务。
  • 树根哈希的计算仅依赖数据,不依赖更新的次序。无论对树更新的次序如何根哈希的结果是确定的。

帕特里夏树是最符合我们需求的了, 一句话解释什么是帕特里夏树: 每个节点有16个孩子表示路径, 分别代表了16进制的的16个字符。例如path为dog的16进制表示是: 6 4 6 15 6 7, 查找它的过程就是从根节点开始找到低6个孩子,然后进入下一层对应节点找到第4个孩子...依此类推。

后计

上面是对Vitalik Buterin(以太坊创始人)博客的翻译, 整体内容比较浅显没有涉及具体的知识点, 算是介绍性的博客。

下面列一些有价值参考资料:

原文
帕特里夏树
字典树
MPT

目录
相关文章
|
算法 安全 数据挖掘
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(上)
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(上)
211 0
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(上)
|
存储 数据挖掘 区块链
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(下)
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(下)
199 0
|
6月前
|
存储 供应链 API
区块链技术在电商API中的应用:保障数据安全与交易透明
区块链技术在电商API中的应用,为数据安全与交易透明提供了新方案。通过数据加密、分布式存储、智能合约管理、商品溯源及实时结算等功能,有效提升电商数据安全性与交易可信度。然而,技术成熟度、隐私保护和监管合规等挑战仍需克服。未来,随着物联网、大数据等技术融合及政策支持,区块链将在电商领域发挥更大潜力,推动行业智能化发展。
|
2月前
|
供应链 安全 算法
区块链技术探索与应用:从密码学奇迹到产业变革引擎
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。以代码为舟,算法为帆,在区块链的浩瀚星河中探索去中心化的未来。从智能合约到DeFi,用极客精神谱写信任新篇章。
区块链技术探索与应用:从密码学奇迹到产业变革引擎
|
7月前
|
传感器 人工智能 算法
聚焦“以技术集成支撑单亩价值创造”与“增加值分配机制区块链存证确权”两大核心本质
“振兴链-技术集成科技小院”以技术集成与区块链为核心,推动农业现代化。通过多维度技术整合(如精准农业、物联网等),突破资源约束,最大化单亩产值;同时利用区块链确权存证,建立透明分配机制,解决传统农业中收益不均问题。技术赋能生产,制度重塑分配,实现效率与公平的平衡,助力乡村振兴与产业升级。典型场景显示,该模式可显著提升单亩价值并确保增值公平分配。
|
3月前
|
人工智能 安全 数据可视化
数字孪生 + 区块链:MyEMS 引领能源管理技术融合新趋势
MyEMS融合数字孪生与区块链技术,打造可信、透明、高效的能源管理新范式。通过实时镜像、智能预测与数据上链,实现能耗可追溯、碳排可验证、交易可信任,推动能源管理迈向智能化与价值化新时代。(238字)
161 1
|
10月前
|
存储 安全 算法
深入探讨区块链技术的安全性
深入探讨区块链技术的安全性
671 103
|
6月前
|
存储 安全 API
区块链技术:为电商API接口应用前景筑牢安全与效率之基
区块链技术凭借其去中心化、透明性、安全性和不可篡改性,为电商API接口带来了全新机遇。它可提升数据安全性、增强交易透明度、优化供应链管理,并降低运营成本。应用场景包括数据加密传输、分布式存储、智能合约权限管理、商品溯源防伪及实时结算。尽管面临性能、隐私保护与监管等挑战,随着技术进步与融合创新,区块链将在电商API中实现更智能、高效的应用,推动行业变革升级。
|
10月前
|
安全 区块链 数据安全/隐私保护
区块链技术在跨境支付中的应用:打破传统,畅行全球支付新时代
区块链技术在跨境支付中的应用:打破传统,畅行全球支付新时代
1453 12
区块链技术在跨境支付中的应用:打破传统,畅行全球支付新时代
|
9月前
|
安全 算法 区块链
当量子计算遇上区块链:未来技术的双刃剑
当量子计算遇上区块链:未来技术的双刃剑
434 16

热门文章

最新文章