首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Merkle树与SPV验证

  • 23-09-22 20:02
  • 4395
  • 9235
blog.csdn.net

Merkle Tree,也叫哈希树,是由Ralph Merkle于1979年提出申请的专利。它是一种用做快速归纳和校验大规模数据完整性的树形数据结构。

它具有以下特点:

  • 它是一种树,大多数是二叉树,也可以是多叉树,具有树结构的所有特点。

  • Merkle Tree的叶子节点是数据块的哈希。

  • Merkle Tree的非叶子节点的哈希值是根据它下面所有叶子节点的值哈希计算得到,如下图所示。

备注:如果最开始叶子节点是奇数个,可以复制最后一个叶子节点,凑成偶数个。

可以发现,只要存储的叶子节点数据有任何的变动,就会逐级向上传递到相应的父节点,最终使得Merkle树的根节点哈希值发生变化。


3.Merkle树的应用

Merkle树的应用场景有以下几种:

  • 快速比较大量数据:当两个Merkle树的根哈希值相同时,说明所代表的的数据都相同

  • 快速定位修改:如上图,如果交易C发生改变,那么就会导致N2、N5和Merkle Root发生改变。所以,我们想要快速定位,只需要沿着Root==>N5==>N2就可以定位到交易C发生改变。

  •  零知识证明:例如,想要证明一组交易中包含某个交易A,但又不想让对方知道交易A的具体内容,那么就可以构建Merkle树(如上图),向对方公布N0、N1、N4和Root,对方就可以确认交易A的存在,但无法知道交易A的具体内容。

那么,从用户A在购买商品时通过比特币支付,并声称自己已经转了1BTC给商家,到商家验证支付有效(SPV验证),这个过程是怎样的呢?

SPV验证

       用户A在购买商品时通过比特币支付,并声称自己已经转了1BTC给商家,到商家验证支付有效(SPV验证),这个过程是怎样的呢?

  • 第一步:SPV节点如果只关心某个支付到自己比特币地址的交易,则可以通过建立布隆过滤器(布隆过滤器是一种基于哈希的高效查找结构,能够快速确定某个元素是否在一个集合内)限制只接收含有目标比特币地址的交易。

  • 第二步:一旦比特币网络中其他当节点探测到某个交易符合SPV节点设置的布隆过滤器条件时,其它节点将以Merkleblock消息的形式发送该区块,Merkleblock消息包含区块头和一条连接目标交易与Merkle根的Merkle路径。

  • 第三步:接下来,SPV节点需要验证交易,需要做2个检查,分别是:交易的存在性检查和交易是否重花的检查。

  • 第四步:SPV节点通过该Merkle路径找到跟该交易相关的区块,并验证对应区块中是否存在目标交易。SPV节点所收到的Merkleblock数据量通常少于1KB,只有一个完整区块(大约1MB)大小的千分之一左右。

  • 第五步:现在通过Merkle Path Proof,SPV节点确认了交易确实存在于区块链中,但是这个还是无法保证这笔交易(Transaction)的Input(引用的上一笔UTXO)没有被重花(双重支付)。这时候SPV节点通过去看这笔交易所在区块之后的区块个数,Block个数越多说明该区块被全网更多节点共识,一般来说,一笔交易所属区块之后的区块个数达到6个时,就说明这笔交易是被大家核准过(达成共识)的,没有重花,而且被篡改的可能性也很低

注:本文转载自blog.csdn.net的老杨_QQ122209017的文章"https://blog.csdn.net/sinat_34070003/article/details/80735359"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top