Merkle Tree

默克尔树介绍及其区块链中的应用

presented by 张女名

一.简介

  • 默克尔树,也被称为二叉哈希树(binary hash tree),是一个由加密哈希组成的二叉树,用于高效汇总和验证大数据集的完整性。
    这里写图片描述

二.默克尔树在比特币中的应用

  • 在比特币中,默克尔树通过产生一个全部交易集的数字指纹,以汇总区块中的所有交易,从而提供一套非常高效的流程,已验证交易是否包含在区块中。
  • 通过递归计算一对对节点的哈希值,知道剩下一个节点,即默克尔根,就构成了一棵默克尔树。比特币中默克尔树采用的加密哈希算法是SHA256
  • 当交易个数为奇数时,需复制最后一个交易的哈希,保证叶子数量为偶数,形成平衡树。
    这里写图片描述
  • 为了证明一个特定交易包含在区块中,节点只需创建log2(N)32字节的哈希值,形成一条从交易到根的路径,叫做认证路径默克尔路径
    这里写图片描述
  • 当规模增长时,默克尔树的效率也变得非常明显。
  • 如下表所示,展示了为证明区块中存在某交易而创建默克尔路径所需交换的数据量。
    这里写图片描述
  • 有了默克尔树,普通用户节点可以只下载区块头(每个区块的区块头80字节),通过其他完全节点(full node)获取一个很小的默克尔路径,即可验证交易是否包含在区块中。
  • 当收到完全节点传送来的默克尔路径后,根据已有的交易层层计算出哈希值,若最后的结果与区块头中的默克尔根一致,则证明该交易确实存在于这个区块中。
  • 这些节点叫做简化支付验证(SPV, Simplified Payment Verification)节点

三.SPV节点与布隆过滤器

  • 假设一个SPV节点,它对接收到的、向它进行支付的某个地址感兴趣。
  • SPV节点则在与其他对等节点(完全节点)的连接上建立一个布隆过滤器,限制只接收那些与它感兴趣的地址相关的交易。
  • 当对等节点看到某个交易与布隆过滤器匹配时,就使用merkleblock消息将相关区块发送给SPV节点。Merkleblock消息包含区块头以及一条将区块中感兴趣的交易连接到默克尔根的默克尔路径。

附:比特币中区块链数据结构

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值