紧凑块过滤器

2016年,一位匿名开发者在Bitcoin-Dev邮件列表上提出了一个逆向布隆过滤器过程的想法。根据BIP37布隆过滤器,每个客户端将它们的地址哈希为一个布隆过滤器,而节点则对每个交易的部分进行哈希以尝试匹配该过滤器。在新提议中,节点将每个区块中的交易部分进行哈希以创建一个布隆过滤器,而客户端则对它们的地址进行哈希以尝试匹配该过滤器。如果客户端找到匹配项,它们将下载整个区块。

尽管名称相似,但BIP152紧凑块和BIP157/158紧凑块过滤器是无关的。

这使得节点能够为每个区块创建一个单一的过滤器,并将其保存到磁盘上并重复提供,从而消除了BIP37的拒绝服务漏洞。客户端不向完整节点提供有关其过去或未来地址的任何信息。它们只下载可能包含数千个并非由客户端创建的交易的区块。它们甚至可以从不同的对等体下载每个匹配的区块,从而使完整节点更难以连接属于单个客户端的多个区块中的交易。

这种服务器生成的过滤器并不提供完美的隐私保护;它仍然给完整节点带来一些成本(并且需要轻量级客户端为区块下载使用更多带宽),而且这些过滤器只能用于已确认的交易(而非未确认的交易)。然而,它比BIP37客户端请求的布隆过滤器更加隐私和可靠。

在描述了基于布隆过滤器的原始想法之后,开发者们意识到了一种更好的服务器生成的过滤器的数据结构,称为Golomb-Rice编码集(GCS)。

Last updated