密码学系列 - 默克尔路径

默克尔树 (merkle tree)

默克尔树,也称为哈希二叉树,是一种用于有效地汇总和验证大型数据集完整性的数据结构。

在这里插入图片描述

默克尔路径

可用于证明在一个很大字节数的区块中上千笔交易中的具体某一笔交易的存在.

为了证明一个块中包含了一个特定的交易,一个节点只要计算log2(N)32字节的哈希值,形成一条从特定交易到树根的认证路径或者默克尔路径。

在这里插入图片描述

该路径有4个哈希值 HL、HIJ、HMNOP和HABCDEFGH组成,通过这4个哈希值产生的认证路径,任何节点都可以通过计算另外四对哈希值HKL、HIJKL、HIJKLMNOP和默克尔树根,来证明HK包含在默克尔根中。

默克尔路径的效率

为了证明区块中存在某交易而所需转化为默克尔路径的数据量。

在这里插入图片描述

简单支付验证(SPV)

有了默克尔树,一个节点能够仅下载区块头(80字节/区块),然后通过从一个全节点回溯一条小的默克尔路径就能认证一笔交易的存在,而不需要存储或者传输大量区块链中大多数的内容,那些也许有几个GB的大小。这种不需要维护一条完整的区块链的节点,被称作简单支付验证(SPV)节点,它通过默克尔路径去验证交易的存在,而不需要下载整个区块。

一个SPV节点对它钱包中某个比特币地址即将收到的付款感兴趣。该节点会在节点间的通信链接上建立起bloom过滤器,限制只接受含有目标比特币地址的交易。当节点探测到某交易符合bloom过滤器要求,它将以merkleblock消息的形式发送该区块。merkleblock消息包含区块头以及将感兴趣的交易链接到区块中的根的默克尔路径

SPV节点同时也使用区块头去关联区块和区块链中的其余区块。这两种关联(交易与区块、区块和区块链)可以证明交易存在于区块链。

发布了72 篇原创文章 · 获赞 83 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wcc19840827/article/details/105502006