Merkle 树与轻量级客户端

默克尔树在轻量级客户端中被广泛使用。轻量级客户端不具备所有交易数据,也不下载完整的区块,仅下载区块头。为了验证某笔交易是否包含在一个区块中,而不必下载该区块中的所有交易数据,它们使用了默克尔路径。

举个例子,考虑一个对其钱包中包含的地址的收款感兴趣的轻量级客户端。轻量级客户端将在与对等节点的连接上建立一个布隆过滤器(参见“布隆过滤器”第231页),以限制接收的交易仅包含感兴趣的地址。当对等节点看到与布隆过滤器匹配的交易时,它将使用 merkleblock 消息发送该区块。merkleblock 消息包含区块头以及将感兴趣的交易链接到区块中的默克尔根的默克尔路径。 轻量级客户端可以使用这个默克尔路径将交易连接到区块头,并验证该交易是否包含在区块中。轻量级客户端还使用区块头将区块链接到区块链的其余部分。这两个链接的组合,交易和区块之间的链接以及区块和区块链之间的链接,证明了该交易已记录在区块链中。总的来说,轻量级客户端仅需要接收区块头和默克尔路径的不到1千字节的数据量,这比完整区块的数据量要小上千倍(目前约为2 MB)。

Last updated