Bộ lọc Bloom là cấu trúc dữ liệu có thể được sử dụng để thông báo cho người dùng xem một mục cụ thể có phải là một phần của tập hợp hay không. Mặc dù không thể nói chắc chắn liệu một phần tử có trong tập hợp hay không, nhưng nó có thể nói chắc chắn nếu phần tử đó không có.
Được tạo bởi Burton Howard Bloom vào năm 1970, bộ lọc Bloom là một sản phẩm hấp dẫn dành cho nhiều loại các ứng dụng do hiệu quả của chúng trong việc sử dụng không gian. Trong một số loại tiền điện tử (đáng chú ý nhất là Bitcoin), chúng đóng vai trò không thể thiếu trong Xác minh thanh toán đơn giản hay SPV.
Khi sử dụng ứng dụng khách SPV, người dùng có thể tương tác với mạng Bitcoin mà không cần chạy nút đầy đủ. Các nút đầy đủ đi kèm với các yêu cầu về lưu trữ và tính toán nhất định khiến chúng khó chạy trên các thiết bị có công suất thấp như điện thoại thông minh. Mặt khác, máy khách SPV chỉ cần truy vấn các nút đầy đủ để biết thông tin liên quan đến (các) ví của người dùng.
Giải pháp đơn giản nhất để chuyển tiếp dữ liệu này đến người dùng là làm cho các nút đầy đủ nhận biết được khóa của khách hàng để chỉ những giao dịch thích hợp mới được gửi cho họ. Rõ ràng, đây là một giải pháp phụ vì quyền riêng tư của khách hàng sẽ bị hy sinh. Mặt khác, việc tải xuống tất cả giao dịch chỉ để loại bỏ phần lớn trong số chúng sẽ gây lãng phí băng thông. Nhập bộ lọc Bloom.
Hãy minh họa. Giả sử rằng một khách hàng, Alice, có một giao dịch có giá trị cao mà cô ấy không muốn Bob, người điều hành một nút đầy đủ, biết đến. Cô ấy xây dựng bộ lọc Bloom mà chúng tôi sẽ minh họa dưới dạng lưới 10x1:
Cô ấy chuyển dữ liệu giao dịch mà cô ấy quan tâm thông qua hai hàm băm khác nhau, tạo ra hai số từ 0 đến 9. Hãy gọi chúng là 4 và 7. Cô ấy gửi bộ lọc cho Bob.
Nhìn vào lưới này, bạn không biết Alice đã chuyển dữ liệu gì vào bộ lọc. Nếu bạn có một tập hợp chứa dữ liệu, bạn có thể băm nó và so sánh nó với bộ lọc – nếu có sự trùng khớp thì có khả năng đó là thông tin mà Alice yêu cầu.
Đồng thời, có thể có nhiều đầu vào sẽ ánh xạ tới 4 và 7, vì vậy Bob không thể xác định phần nào của dữ liệu mà Alice quan tâm. Anh ấy chỉ trả về tất cả các kết quả trùng khớp và Alice sẽ lọc chúng từ phía cô ấy.
Tất nhiên, đây là một sự đơn giản hóa quá mức nhưng nó thể hiện khái niệm: Bộ lọc Bloom làm xáo trộn lợi ích thực sự của khách hàng. Đây không phải là một phương pháp hoàn hảo (vẫn có những lo ngại về quyền riêng tư của nó), nhưng đó là một cải tiến so với yêu cầu không được bảo vệ đối với một nút.