블룸필터(Bloom Filter)는 특정 원소가 집합에 속하는지 검사하는 데 사용할 수 있는 확률형 자료구조다.
확률적 검색 필터로 우너하는 패턴이 무엇인지 정확하게 규정할 필요 없이 원하는 패턴을 설명하는 방식
블룸필터는 프라이버시를 보호하면서 검색 패턴을 구현하기 위한 효율적인 방법을 제공함
SPV(Simplified Payment Verification)노드는 블록헤더만을 저장하여 거래의 유효성을 높이는 노드인데
블룸필터를 사용해서 이웃노드들에게 특정 거래를 제공해달라고 요청하는 데 이 떄 노드는 검색중인 주소에 대해 정확히 밝힐 필요가 없음
블룸필터는 m 비트 크기의 비트 배열구조를 가지고 k가지의 해시함수를 사용해서 입력된 원소에 대해 m가지의 값을 균등한 확률로 출력한다.
블룸필터는 길이 N의 이진 배열(Binary array)와 1부터 N까지의 출력값을 갖는 J개의 해시함수를 가지고 있다고 하는데 이 N과 J를 조절함으로써 정확도와 정확도와 프라이버시 보호 수준을 조절할 수 있음
오탐지율이 존재하기 때문에 결정적(Deterministic) 결과 대신 부정확한 결과를 얻을 수 있음
False Negative(거짓-부정, 존재하지만 부정하는 것)은 존재하지 않는다고 보장할 수 있습니다.
하지만 False Positive(거짓-긍정, 존재하지 않지만 있다고 하는 것)가 존재할 수 있습니다.
즉 특정 원소가 존재하지 않는다는 부정적인 답변을 받으면 이 원소는 확실하게 없다고 할 수 있음
있는지 없는지만을 보는 특성 때문에 삽입만 가능하고 제거가 안된다.
블룸필터는 처리능력 대비 적은 메모리 공간을 필요로 하는 장점때문에 DB 이외에도 많은곳에서 사용
1. IP 주소 검색 및 차단 필터링
2. 문자열 맞춤법 교정
3. 가상화폐
4. 라우터
5. 크롬 브라우저
6. 빅데이터 환경
go로 구현하는 블룸필터 : 링크
참고
코드스테이츠
채굴 풀(Mining Pool) (0) | 2023.02.01 |
---|---|
간략히 알아보는 프루닝 (0) | 2023.01.26 |
비트코인의 업데이트 세그윗과 탭루트(Tap root) (0) | 2023.01.26 |
kubo를 활용한 IPFS를 설치하고 데몬 서버 띄워보기 ~ (0) | 2023.01.25 |
IPFS의 동작방식 (0) | 2023.01.25 |