本文介绍了比特币轻客户端使用 Bloom 过滤器进行交易验证的原理、挑战和局限性。Bloom 过滤器虽然能在一定程度上保护隐私,但也存在隐私泄露、依赖诚实节点以及给全节点带来额外工作负担等问题。因此,提出了紧凑型区块过滤器(compact block filters)作为替代方案,以解决 Bloom 过滤器的不足。
随着比特币的普及,轻客户端(即无法独立验证交易的网络节点)的数量也在增长。为了确保这些客户端能够验证与其相关的交易,提出了布隆过滤器(bloom filters)的概念,用于所谓的简单支付验证(simple payment verification)。
布隆过滤器的引入和使用使得轻客户端能够以某种程度保护隐私的方式验证感兴趣的区块中的交易。然而,这种“保护隐私”的支付验证方法并非没有漏洞,它需要信任诚实的节点(完整节点)来转发包含所需交易的默克尔区块(Merkle blocks),而完整节点没有动力这样做。
尽管布隆过滤器有很多优点,但其存在的问题促使人们转向基于无需信任的对等连接的客户端交易过滤,且没有隐私泄露。在本文中,我将简要概述轻客户端如何利用布隆过滤器进行支付验证,与其使用相关的一些挑战,以及为什么需要不同的方式来进行交易验证。
并非所有设备都能“奢侈地”执行独立的交易验证,而这只能通过访问完整的比特币账本才能完成。这主要是因为设备在空间、带宽和处理能力方面的特定限制。实际上,这些受限设备只对与其钱包地址相关的交易感兴趣,不应下载多个GB的不相关数据。此外,随着比特币的发展,运行完整节点的成本也越来越高。除了下载区块链之外,节点还必须始终连接到网络上的不同对等节点。内存、处理和带宽要求非常“陡峭”,并且对于网络上的所有节点来说都是不合理的。
图 1:包含轻客户端感兴趣的交易的交易区块
对于像手机和平板电脑这样的设备来说,可以通过运行轻量级客户端来参与网络——这些节点无法访问完整的区块链,但可以通过依赖完整节点及其对完整账本的访问来进行支付验证。 为了验证感兴趣的交易(即向其钱包上的地址支付比特币)是否有效,轻客户端创建并向完整节点发送布隆过滤器(bloom filters),完整节点反过来只转发足够的区块信息(在默克尔区块中)供轻客户端重新计算块头中的默克尔根(Merkle root)。如果默克尔根匹配,轻客户端将检查交易是否包含在内。 这是轻客户端可以确定交易包含在此区块中的唯一方法。
缺乏对完整区块链的访问意味着轻客户端将双重支付检测委托给完整节点和矿工。轻客户端不易受到双重支付攻击,因为它们将检测花费相同 UTXO 的交易的责任外包给矿工。 只要诚实的矿工拥有 >51% 的哈希算力,就不会出现如矿工强制执行的双重支付情况。
完整节点可以隐藏交易,从而拒绝向他们提供服务。为了希望与诚实的的完整节点对等,轻客户端随机连接到网络上的多个节点以对抗上述攻击。 这使得它们容易受到女巫攻击(Sybil attacks),女巫攻击用虚假节点包围它们,将它们与真实网络断开,从而使轻客户端停滞。 这种攻击不会窃取资金,但会影响可用性。
轻客户端使用可调整的布隆过滤器(tune-able bloom filters)进行交易验证,以便它们不会泄露有关其钱包中地址的信息。
轻客户端无法将其地址/script_pubkeys共享给完整节点。 好吧,他们可以,但不应该这样做,因为这样做会损失隐私。 他们可以做的是创建他们可能感兴趣的交易的超集。 这是使用布隆过滤器(bloom filters)完成的——一种概率搜索过滤器。 这些过滤器是大小为 n 的位字段,通过将事务传递到一组哈希函数来创建,记录每个哈希函数的输出数 q (介于 1 和 n 之间),并将位置 q 处的位拨为开 (0 到 1)。
免费加入 Medium 以获取这位作者的更新。
以下是轻客户端如何使用布隆过滤器(bloom filters)。 他们:
图 2:创建交易对象列表
图 3:将交易对象添加到布隆过滤器
布隆过滤器(bloom filters)的工作方式似乎非常简单明了。 轻客户端可以在一定程度上保护其隐私,并将带宽和空间需求保持在最低水平。 然而,这些好处并非没有代价。 轻客户端仍然存在女巫攻击(Sybil attack)的风险。 当完整节点将每个传入的交易与他们收到的布隆过滤器进行匹配时,他们也要承担大量工作。 这是在没有奖励的情况下完成的工作,如果他们收到大量虚假的布隆过滤器,也会使他们遭受拒绝服务攻击。 每个连接的客户端使用一个布隆过滤器是无法扩展的。
就布隆过滤器的所有优点而言,似乎大多数轻客户端都依赖钱包供应商的数据进行交易验证 (Song, 2019)。 使用布隆过滤器的缺点预示着轻客户端执行客户端交易过滤和验证的新方法。 这种方法必须提供以下好处:
紧凑区块过滤器(compact block filters)的提议和实施提供了这些好处。 在本文的后续文章中,我将探讨紧凑区块过滤器,以及它如何成为布隆过滤器(bloom filters)的更好替代方案。
随着比特币的普及,轻客户端的数量也在增长。 这些客户端无法访问完整的账本,因此对其钱包中地址的交易验证有特殊要求。 它们依赖于一种支付验证方法,该方法创建布隆过滤器(bloom filters)并将其发送到完整节点对等方。 这些过滤器是可调整的,使轻客户端可以控制隐私,但也使它们容易受到女巫攻击(Sybil attacks) 。 这些过滤器还给完整节点带来了不成比例的工作量。 为了应对这些缺点,提出了一种称为紧凑区块过滤器(compact block filters)的新型过滤系统,这将是我文章的讨论主题。
我将非常感谢你提供的任何反馈。如果你觉得本文有用/有帮助,或者发现有不符实之处,请随时在此处或在 Twitter @engb_os 上发表评论或与我联系。
- 原文链接: enigbe.medium.com/part-i...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!