180 / 691BIP157/158

Compact Block Filters

Kompaktowe filtry bloków w działaniu portfela

Compact Block Filters pomagają lekkiemu portfelowi wybierać bloki do pobrania przez lokalne dopasowanie skryptów. Trafienie wymaga sprawdzenia, nie potwierdza płatności ani nie gwarantuje anonimowości.

Compact Block Filters to małe probabilistyczne indeksy pojedynczych bloków tworzone deterministycznie. BIP 158 określa zawartość i kodowanie, BIP 157 przesyłanie i kontrolę ciągłości; klient porównuje obserwowane skrypty lokalnie.

Portfel synchronizuje nagłówki bloków i filtrów, pobiera filtry i lokalnie testuje swoje skrypty. Po trafieniu pobiera cały blok i szuka konkretnej transakcji. Samo trafienie nie powinno zwiększać salda: filtr nie zwraca kwoty, dowodu własności ani pełnej historii transakcji. [BIP 157 — Client Side Block Filtering]

BIP 158 basic obejmuje scriptPubKey nowych wyjść poza zaczynającymi się od OP_RETURN oraz skrypty poprzednich wyjść wydawanych przez wejścia poza coinbase. Puste elementy są pomijane. Adres trzeba zamienić na właściwy skrypt; filtr nie indeksuje uniwersalnie txid, danych witness ani dowolnych notatek. [BIP 158 — Compact Block Filters for Light Clients] [Bitcoin Core — BasicFilterElements]

Golomb-Rice koduje różnice uporządkowanych wartości hash; basic używa P=19 i M=784931. Zapytanie o element spoza zbioru może trafić z prawdopodobieństwem około 1/M. Więcej skryptów oznacza więcej okazji do kolizji, a nie stały poziom błędu całego portfela. Poprawny filtr nie pomija zawartego elementu. [BIP 158 — Compact Block Filters for Light Clients]

Nagłówek łączy hash obecnego filtru z poprzednim nagłówkiem. Kontrola ciągłości wykrywa rozbieżność z zaakceptowanym łańcuchem, lecz tego zobowiązania nie ma w nagłówku bloku Bitcoin. Atakujący może podać wewnętrznie spójne fałszywe filtry; poprawnie obliczony hash sam nie gwarantuje prawdziwej zawartości. [BIP 157 — Client Side Block Filtering]

BIP 157 wykrywa fałszywe filtry przez porównanie peerów z co najmniej jednym uczciwym uczestnikiem. Odtworzenie basic może wymagać też skryptów wydanych poprzednich wyjść. Reorganizacja wymaga śledzenia filtrów nowej gałęzi i ponownego obliczenia stanu portfela; ta sama dawna wysokość nie określa tego samego bloku. [BIP 157 — Client Side Block Filtering] [Bitcoin Core — BasicFilterElements]

W odróżnieniu od BIP 37 klient nie wysyła serwerowi osobistego filtru adresów. Peer nadal może obserwować IP, czas i żądane bloki. Pobieranie od różnych peerów ogranicza skupienie informacji, nie wszystkie korelacje; przypadkowe trafienia same nie zapewniają anonimowej komunikacji. [BIP 157 — Client Side Block Filtering]

Bitcoin Core RPC getblockfilter zwraca filtr i nagłówek dla hasha bloku przy włączonym odpowiednim indeksie. Nie dowodzi to publicznej usługi P2P ani możliwości udostępnienia wszystkich dawnych bloków przez peera. Klient potrzebuje sprawnego źródła bloków; filtry ukończonych bloków nie ogłaszają niepotwierdzonych transakcji Mempool. [BIP 157 — Client Side Block Filtering] [Bitcoin Core 30.0 — getblockfilter]

Compact Blocks według BIP 152 przyspieszają przesył nowych bloków dzięki krótkim identyfikatorom transakcji i lokalnemu Mempool. Compact Block Filters wybierają istotne bloki dla klienta. Ani lokalne trafienie, ani kontrola włączenia transakcji nie zastępują niezależnej pełnej walidacji konsensusu wszystkich bloków. [BIP 157 — Client Side Block Filtering] [BIP 152 — Compact Block Relay]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Compact Block Filters, Neutrino, Full Node, Prywatność w Bitcoinie, Compact block relay. Do tego hasła prowadzą również odsyłacze z Neutrino.

DOC · 001BIP 157 — Client Side Block FilteringSpecyfikacjaDOC · 002BIP 158 — Compact Block Filters for Light ClientsSpecyfikacjaDOC · 003Bitcoin Core — BasicFilterElementsŹródło pierwotneDOC · 004Bitcoin Core 30.0 — getblockfilterDokumentacjaDOC · 005BIP 152 — Compact Block RelaySpecyfikacja
Najpierw źródła · To nie jest porada inwestycyjna