什么是布隆过滤器?
让我们找出 布隆过滤器 的含义、加密货币中的定义、什么是布隆过滤器 以及所有其他详细事实。
布隆过滤器由 Burton Howard Bloom 于 1970 年开发,可通知用户某个项目是否属于一个集合。但是,过滤器只能完全确定地显示某个项目不在集合中。如果它表明该项目在集合中,在某些情况下,它可能是错误的。
由于其节省空间的效率,布隆过滤器对各种应用都很有吸引力。在加密世界中,它们广泛用于简化支付验证(SPV),特别是在比特币方面。
用户可以通过使用 SPV 客户端来使用比特币网络,而无需操作完整节点。在智能手机等低功耗设备上运行全节点很困难,因为它们具有特定的存储和处理要求。因此,SPV 客户只能向全节点询问有关其钱包的信息。
获取此信息的最简单方法是让全节点了解用户的密钥。这样,只有相关交易才会传输给他们。然而,这是一个糟糕的选择,因为用户的隐私会受到这种方式的损害。
尽管下载所有交易只是为了删除其中的大部分也不是一个好的选择,因为它会浪费大量带宽。这就是布隆过滤器可以发挥作用的地方。
想象一下,Anna 是客户端,John 是全节点。安娜有一笔代价高昂的交易,但她不想让约翰知道。因此,她需要找到一种方法来“掩盖”她的交易。为此,她创建了一个布隆过滤器。假设它看起来像这样:
3 4 2 1 6 8 7 5 0 9
她通过两个不同的哈希函数运行交易数据。这些函数中的每一个最终都会从上面看到的数字字符串中选择两个值。假设这些值为 2 和 8。
3 4 2 1 6 8 7 5 0 9
之后,安娜将过滤器发送给约翰。显然,仅根据此网格不可能知道 Anna 向过滤器提交了哪些数据。
不过,如果约翰拥有包含安娜数据的整个集合,他可以对其进行散列并在过滤器中搜索相似之处。如果有匹配的话,很可能就是安娜要求的数据。
然而,多个输入可能同时引用 2 和 8。因此,约翰无法判断安娜真正对数据的哪一部分感兴趣。因此,他将返回所有匹配项,然后安娜对这些匹配项进行排序。
显然,这个过程比这复杂得多。然而,它确实说明了这样一个事实:布隆过滤器掩盖了客户端的实际利益。
布隆过滤器可能不是检索所需信息的最佳方法,因为它也存在一些隐私问题。然而,与简单地向节点发出不加掩饰的请求相比,它仍然是一个更好的选择。