布隆過濾器

來源 LBank時間 2024-08-09 05:51:03

想象一下,你在網上購物時想要快速檢查某件商品是否在你的願望清單裏,但又不想透露願望清單的全部內容。這時候,一個叫做“布隆過濾器”的神奇工具就能大顯身手。


1970年,由伯頓·霍華德·布魯姆發明的布隆過濾器,是一種特殊的數據結構,它能告訴你某個東西是否可能屬於一個集合,儘管它不能100%確定這個東西是否真的在裏面,但如果它說不在,那絕對是真的不在。


在金融科技領域,尤其是比特幣這樣的加密貨幣中,布隆過濾器扮演着重要角色,特別是在簡化支付驗證(SPV)過程中。對於普通用戶來說,運行一個完整的比特幣節點需要大量的存儲空間和計算能力,這對於手機這類低功耗設備來說並不現實。而SPV客戶端則提供了一種輕便的解決方案,用戶只需查詢與自己錢包相關的交易信息即可。


問題來了,怎樣才能既保護隱私,又高效地獲取這些信息呢?如果直接讓全節點知道你的錢包地址,雖然可以篩選出相關交易,但你的隱私就會暴露無遺。反過來,下載所有交易記錄再篩選掉大部分,又會浪費寶貴的網絡帶寬。這時,布隆過濾器閃亮登場。


假設Maria有一個不想讓全節點運營者David知道的大額交易。她使用一個簡化模型——10乘1的網格來構建布隆過濾器。接着,她把關心的交易數據通過兩個不同的哈希函數處理,得到兩個數字,比如4和7,然後將這些位置在過濾器中標記出來併發送給David。


David收到的這個網格,就像一個謎題,他不知道Maria具體對哪些數據感興趣,只知道某些數據經過哈希後可能會落在4和7這兩個位置上。於是,David將數據庫中的交易信息經過同樣的哈希運算後,找到所有匹配的位置,並將這些可能相關的交易返回給Maria。最後,Maria在自己的終端進一步篩選,找出真正關心的交易。


當然,這只是一個非常簡化的例子,實際上布隆過濾器要複雜得多,而且它並非完美無缺,仍然存在一些隱私泄露的風險。但相比直接向節點請求信息,布隆過濾器無疑提供了一個更加隱蔽且高效的選擇,它就像一個聰明的信使,幫你保密的同時,還能準確傳達你的需求。在區塊鏈和數字貨幣日益普及的今天,布隆過濾器正以其獨特的魅力,爲我們的數字生活增添了一層神祕而安全的保護傘。