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

本文涉及的产品
文本翻译,文本翻译 100万字符
图片翻译,图片翻译 100张
文档翻译,文档翻译 1千页
简介: 本文从翻译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

目录
相关文章
|
8月前
|
算法 安全 数据挖掘
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(上)
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(上)
100 0
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(上)
|
8月前
|
存储 数据挖掘 区块链
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(下)
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(下)
93 0
|
4天前
|
供应链 算法 安全
探索区块链技术中的隐私保护机制
探索区块链技术中的隐私保护机制
47 27
|
1月前
|
供应链 安全 分布式数据库
探索区块链技术在供应链管理中的应用
【10月更文挑战第21天】 本文深入探讨了区块链技术如何在供应链管理中发挥关键作用,通过具体案例分析,揭示了区块链提高透明度、降低成本和增强安全性的潜力。文章首先概述了区块链技术的基本原理及其对传统供应链模式的挑战,接着详细讨论了区块链如何在不同供应链环节中实施,并分析了其带来的变革。最后,文章提出了企业在采纳区块链技术时可能面临的挑战和应对策略,为供应链管理者提供了宝贵的参考。
120 26
|
2月前
|
安全 物联网 物联网安全
揭秘区块链技术在物联网(IoT)安全中的革新应用
揭秘区块链技术在物联网(IoT)安全中的革新应用
|
2月前
|
存储 供应链 分布式数据库
深入理解区块链技术:原理、应用与挑战
本文旨在探讨区块链技术的基本原理、主要应用及其面临的挑战。通过分析区块链的分布式账本技术、加密算法和共识机制,我们揭示了其如何在无需中心化权威的情况下确保数据的不可篡改性和透明性。此外,文章还讨论了区块链在金融、供应链管理、智能合约等领域的应用案例,并指出了当前区块链技术面临的可扩展性、隐私保护和法律监管等挑战。通过对这些内容的深入分析,我们希望为读者提供一个全面而深入的区块链技术概览。
258 16
|
1月前
|
存储 安全 物联网
未来已来:区块链技术在物联网与虚拟现实中的应用
随着科技的不断进步,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在逐渐改变我们的生活和工作方式。本文将探讨这些技术的发展趋势和应用场景,以及它们如何相互融合,为我们带来更便捷、安全和沉浸式的体验。
|
1月前
|
存储 供应链 算法
深入探索区块链技术:原理、应用与未来展望
本文将带你深入了解区块链技术的基本原理,探讨其在金融、供应链、医疗等多个领域的应用案例,并展望其未来的发展趋势。通过本文,你将对区块链技术有一个全面的认识,理解其背后的技术逻辑和应用场景。
|
2月前
|
存储 供应链 安全
探索区块链技术的未来——去中心化应用的崛起
探索区块链技术的未来——去中心化应用的崛起
93 13
|
2月前
|
供应链 安全 区块链
探索区块链技术在数据安全中的应用
本文深入探讨了区块链技术如何革新数据安全领域,特别是在保护个人隐私、增强数据完整性和透明度方面的作用。通过分析区块链的去中心化特性、加密技术以及智能合约的功能,文章阐述了这一技术如何有效防止数据篡改、确保交易记录的不可逆性,并促进跨组织间的信任建立。此外,还讨论了当前区块链技术面临的挑战及未来发展趋势,为理解其在数据安全领域的潜力提供了全面视角。

热门文章

最新文章