Litecoin MWEB技术解析:可修剪Merkle山脉范围(PMMR)原理与应用

Litecoin MWEB技术解析:可修剪Merkle山脉范围(PMMR)原理与应用

litecoin Litecoin source tree litecoin 项目地址: https://gitcode.com/gh_mirrors/li/litecoin

引言

在区块链技术中,高效的数据存储和验证机制至关重要。Litecoin的MWEB(扩展区块)采用了一种名为可修剪Merkle山脉范围(Prunable Merkle Mountain Ranges,简称PMMR)的创新数据结构,用于构建交易输出(TXO)承诺。本文将深入解析PMMR的工作原理及其在Litecoin中的应用。

PMMR基础概念

什么是Merkle山脉范围(MMR)

Merkle山脉范围是由Peter Todd提出的一种仅追加的二叉树结构,最初用于Open Timestamps项目。与传统的Merkle树相比,MMR具有以下特点:

  1. 山脉状结构:由多个不完全平衡的Merkle树组成,形似山脉
  2. 高效插入:新元素可以快速追加到结构末尾
  3. 位置编码:每个节点的位置信息隐含了其在树中的结构关系

可修剪特性(PMMR)

PMMR在MMR基础上增加了修剪能力,允许安全地移除不再需要的子树,这对于区块链的UTXO集管理特别有价值。

PMMR结构详解

节点组织方式

观察示例中的PMMR结构:

高度4:                                       30
                                           / \
                                          /   \
                                         /     \
                                        /       \
                                       /         \
                                      /           \
                                     /             \
                                    /               \
高度3:                   14                                      29
                       / \                                     / \
                      /   \                                   /   \
高度2:         06                 13                   21                 28
             / \                 / \                 / \                 / \
高度1:    02       05         09       12         17       20         24       27
          / \       / \       / \       / \       / \       / \       / \       / \
高度0: 00   01   03   04   07   08   10   11   15   16   18   19   22   23   25   26

关键术语解释

  • 叶子节点(Leaf):存储实际数据项(如交易输出)
  • 叶子索引(Leaf Index):叶子节点的插入顺序编号(从0开始)
  • 位置(Position):所有节点的全局索引(从0开始)
  • 峰值(Peak):没有父节点的顶级节点
  • 修剪(Prune):标记已花费的叶子及其可移除的父节点
  • 压缩(Compact):实际移除被修剪的节点以节省空间

PMMR操作原理

插入新节点

PMMR的插入遵循右追加原则

  1. 新叶子总是添加到最右侧
  2. 检查左侧相邻节点是否无父节点
  3. 如有,则创建它们的父节点
  4. 递归向上检查,直到没有可配对的节点

示例:从3个叶子扩展到4个叶子的过程:

初始状态:

   N02
   / \
 N00 N01 N03
 |   |   |
L00 L01 L02

插入L03后:

   N02        N05
   / \        / \
 N00 N01    N03 N04
 |   |      |   |
L00 L01    L02 L03

最终形成:

     N06
    /  \
   N02 N05
   / \ / \
  ... ... ...

哈希计算机制

PMMR采用位置敏感的哈希算法确保数据结构完整性:

  • 叶子节点哈希

    Node(L) = BLAKE3(位置 || 数据)
    
  • 父节点哈希

    Node(P) = BLAKE3(位置 || 左子哈希 || 右子哈希)
    

这种设计使得每个节点的哈希都包含其结构位置信息,防止位置欺骗攻击。

根哈希计算

由于PMMR由多个子树组成,其根哈希计算采用**峰值打包(bagging the peaks)**技术:

  1. 从最右侧(最低)峰值开始
  2. 依次将较高峰值的哈希与当前结果组合
  3. 最终组合所有峰值哈希

计算公式:

root_hash = HASH(总大小 || 最高峰值 || ... || HASH(总大小 || 次低峰值 || 最低峰值))

PMMR在Litecoin MWEB中的应用

TXO承诺管理

在Litecoin MWEB中,PMMR用于:

  1. 高效存储UTXO:仅保留未花费输出
  2. 可验证修剪:安全移除已花费输出而不影响验证
  3. 空间优化:通过压缩减少存储需求

性能优势

相比传统Merkle树,PMMR提供:

  1. O(1)时间追加:新交易快速添加
  2. 增量验证:部分树结构可独立验证
  3. 历史裁剪:旧数据可安全移除而不破坏完整性

进阶主题

修剪与压缩的区别

  • 修剪:逻辑标记节点为可移除状态
  • 压缩:物理移除被修剪节点,回收存储空间

Merkle证明

PMMR支持高效的Merkle证明生成,验证特定交易输出包含在当前UTXO集中,而无需下载整个数据集。

分段验证

MWEB将PMMR划分为段(Segment),支持并行验证和部分同步,提升网络效率。

总结

PMMR作为Litecoin MWEB的核心数据结构,通过其独特的山脉范围和可修剪特性,实现了高效的UTXO管理。它不仅保留了Merkle树的验证优势,还增加了动态修剪能力,为区块链扩展性提供了创新解决方案。理解PMMR的工作原理,有助于深入把握Litecoin隐私扩展技术的设计精髓。

litecoin Litecoin source tree litecoin 项目地址: https://gitcode.com/gh_mirrors/li/litecoin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

穆灏璞Renata

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值