180 / 691BIP157/158

Compact Block Filters

지갑 운용에서의 압축 블록 필터

Compact Block Filters는 로컬 스크립트 대조로 경량 지갑이 내려받을 블록을 고르게 돕습니다. 일치는 검사 후보이며 지급 확인이나 익명성 보장이 아닙니다.

Compact Block Filters는 개별 블록으로부터 결정론적으로 만드는 작은 확률적 색인입니다. BIP 158은 내용과 인코딩, BIP 157은 전달과 연결성 검사를 정하며 클라이언트는 관심 스크립트를 로컬에서 대조합니다.

지갑은 블록·필터 헤더를 동기화하고 필터를 내려받아 스크립트를 로컬 검사합니다. 일치하면 전체 블록에서 실제 거래를 찾습니다. 일치만으로 잔액을 늘려서는 안 됩니다. 필터는 금액, 소유 증명이나 완전한 거래 내역을 반환하지 않습니다. [BIP 157 — Client Side Block Filtering]

BIP 158 basic은 OP_RETURN으로 시작하지 않는 새 출력의 scriptPubKey와 coinbase 외 입력이 소비하는 이전 출력 스크립트를 포함합니다. 빈 항목은 생략합니다. 주소 문자열은 올바른 스크립트로 변환해야 하며, 필터는 txid, witness 데이터나 임의 메모의 범용 색인이 아닙니다. [BIP 158 — Compact Block Filters for Light Clients] [Bitcoin Core — BasicFilterElements]

Golomb-Rice는 정렬한 해시값의 차이를 인코딩하며 basic은 P=19, M=784931을 사용합니다. 비구성원 조회 한 번은 약 1/M 확률로 일치할 수 있습니다. 감시 스크립트가 많으면 충돌 기회도 늘며 지갑 전체의 고정 오류율은 아닙니다. 올바른 필터는 포함된 요소를 놓치지 않습니다. [BIP 158 — Compact Block Filters for Light Clients]

필터 헤더는 현재 필터 해시를 이전 헤더와 연결합니다. 연결성 검사로 이미 수용한 체인과의 차이는 찾지만 이 커밋먼트는 Bitcoin 블록 헤더에 없습니다. 공격자는 내부적으로 일관된 거짓 필터를 제공할 수 있습니다. 정확히 계산된 해시만으로 내용의 진실성을 보장하지 않습니다. [BIP 157 — Client Side Block Filtering]

BIP 157은 적어도 하나의 정직한 참여자가 있는 피어 비교로 거짓 필터를 찾습니다. basic을 재구축하려면 소비된 이전 출력의 스크립트도 필요할 수 있습니다. 재구성 때는 새 분기의 필터를 따르고 지갑 상태를 다시 계산해야 하며, 같은 과거 높이가 같은 블록을 뜻하지 않습니다. [BIP 157 — Client Side Block Filtering] [Bitcoin Core — BasicFilterElements]

BIP 37과 달리 개인 주소 필터를 서버에 보내지 않습니다. 그래도 피어는 IP, 시점과 요청 블록을 관찰할 수 있습니다. 여러 피어에서 블록을 받으면 정보 집중은 줄지만 모든 상관관계를 막지는 못합니다. 우연한 일치만으로 통신이 익명화되지 않습니다. [BIP 157 — Client Side Block Filtering]

Bitcoin Core RPC getblockfilter는 해당 색인이 활성화되면 블록 해시에 대한 필터와 헤더를 반환합니다. 이것만으로 공개 P2P 서비스나 모든 역사적 블록 제공 능력을 입증하지는 않습니다. 클라이언트에는 작동하는 블록 출처가 필요하며 완료 블록 필터는 Mempool의 미확인 거래를 알리지 않습니다. [BIP 157 — Client Side Block Filtering] [Bitcoin Core 30.0 — getblockfilter]

BIP 152의 Compact Blocks는 짧은 거래 식별자와 로컬 Mempool로 새 블록 전달을 빠르게 합니다. Compact Block Filters는 클라이언트 관련 블록을 고릅니다. 로컬 일치나 거래 포함 확인은 모든 블록에 대한 독립적인 완전한 합의 검증을 대신하지 않습니다. [BIP 157 — Client Side Block Filtering] [BIP 152 — Compact Block Relay]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Compact Block Filters, Neutrino, Full Node, Bitcoin 프라이버시, Compact block relay. 다음 항목에서도 이 글을 참조합니다 Neutrino.

DOC · 001BIP 157 — Client Side Block Filtering명세DOC · 002BIP 158 — Compact Block Filters for Light Clients명세DOC · 003Bitcoin Core — BasicFilterElements1차 출처DOC · 004Bitcoin Core 30.0 — getblockfilter문서DOC · 005BIP 152 — Compact Block Relay명세
1차 출처 우선 · 투자 조언이 아닙니다