精通比特币(66):Merkle树和简单支付验证(SPV)

  • A+
SPV节点不保存所有交易也不会下载整个区块,仅仅保存区块头。它们使用认证路径或者Merkle路径来验证交易存在于区块中,而不必下载区块中所有交易。

 

例如,一个SPV节点想知道它钱包中某个比特币地址即将到达的支付。该节点会在节点间的通信链接上建立起bloom过滤器,限制只接受含有目标比特币地址的交易。当节点探测到某交易符合bloom过滤器,它将以Merkleblock消息的形式发送该区块。Merkleblock消息包含区块头和一条连接目标交易与Merkle根的Merkle路径。

 

  • SPV节点能够使用该路径找到与该交易相关的区块,进而验证对应区块中该交易的有无。

 

  • SPV节点同时也使用区块头去关联区块和区块链中的其余区块。

 

这两种关联,交易与区块、区块和区块链,就可以证明交易存在于区块链。

 

简而言之,SPV节点会收到少于1KB的有关区块头和Merkle路径的数据,其数据量比一个完整的区块(目前大约有1MB)少了一千多倍。

发表评论

您必须才能发表评论!