180 / 691BIP157/158

Compact Block Filters

Kompakte Blockfilter im Walletbetrieb

Compact Block Filters helfen einer leichten Wallet, Blöcke anhand lokaler Skriptabgleiche zum Download auszuwählen. Ein Treffer verlangt Prüfung und ist weder Zahlungsbestätigung noch Anonymitätsgarantie.

Compact Block Filters sind kleine, deterministisch erzeugte probabilistische Indizes einzelner Blöcke. BIP 158 definiert Inhalt und Kodierung, BIP 157 Übertragung und Verkettungsprüfung; gesuchte Skripte werden lokal abgeglichen.

Die Wallet synchronisiert Block- und Filterheader, lädt Filter und prüft ihre Skripte lokal. Bei einem Treffer lädt sie den ganzen Block und sucht die konkrete Transaktion. Der Treffer allein darf den Kontostand nicht erhöhen: Der Filter liefert weder Betrag noch Eigentumsnachweis oder vollständige Transaktionshistorie. [BIP 157 — Client Side Block Filtering]

BIP 158 basic enthält scriptPubKey neuer Outputs außer solchen mit führendem OP_RETURN sowie Skripte früherer Outputs, die Nicht-Coinbase-Inputs ausgeben. Leere Elemente entfallen. Ein Adressstring muss in das richtige Skript umgewandelt werden; der Filter ist kein Universalindex für txid, Witness-Daten oder beliebige Notizen. [BIP 158 — Compact Block Filters for Light Clients] [Bitcoin Core — BasicFilterElements]

Golomb-Rice speichert Differenzen sortierter Hashwerte; basic verwendet P=19 und M=784931. Eine Abfrage eines Nichtmitglieds kann mit ungefähr 1/M treffen. Mehr überwachte Skripte schaffen mehr Kollisionsmöglichkeiten, keine feste Fehlerquote der gesamten Wallet. Ein korrekt erstellter Filter lässt ein enthaltenes Element nicht aus. [BIP 158 — Compact Block Filters for Light Clients]

Ein Filterheader verknüpft den aktuellen Filterhash mit dem vorherigen Header. Die Prüfung erkennt Abweichungen von einer bereits akzeptierten Kette, doch diese Verpflichtung steht nicht im Bitcoin-Blockheader. Angreifer können intern konsistente falsche Filter liefern; ein korrekt berechneter Hash allein garantiert keinen wahren Inhalt. [BIP 157 — Client Side Block Filtering]

BIP 157 erkennt falsche Filter durch Peer-Vergleich mit mindestens einem ehrlichen Teilnehmer. Die Rekonstruktion von basic kann auch Skripte ausgegebener früherer Outputs benötigen. Bei einer Reorganisation muss die Wallet den Filtern des neuen Zweigs folgen und ihren Zustand neu berechnen; dieselbe alte Höhe bezeichnet nicht denselben Block. [BIP 157 — Client Side Block Filtering] [Bitcoin Core — BasicFilterElements]

Anders als bei BIP 37 sendet der Client keinen persönlichen Adressfilter zum Server. Ein Peer kann weiterhin IP-Adresse, Zeitabläufe und angeforderte Blöcke beobachten. Verschiedene Download-Peers begrenzen die Bündelung dieser Daten, aber nicht jede Korrelation; zufällige Treffer allein machen die Kommunikation nicht anonym. [BIP 157 — Client Side Block Filtering]

Bitcoin Core RPC getblockfilter liefert bei aktiviertem passendem Index Filter und Filterheader zu einem Blockhash. Das beweist weder einen öffentlichen P2P-Dienst noch die Verfügbarkeit jedes historischen Blocks beim Peer. Der Client braucht eine funktionierende Blockquelle; Filter abgeschlossener Blöcke melden keine unbestätigten Mempool-Transaktionen. [BIP 157 — Client Side Block Filtering] [Bitcoin Core 30.0 — getblockfilter]

Compact Blocks nach BIP 152 beschleunigen neue Blockübertragungen mit kurzen Transaktionskennungen und lokalem Mempool. Compact Block Filters wählen relevante Blöcke für einen Client aus. Weder lokaler Treffer noch Prüfung der Transaktionsaufnahme ersetzen die unabhängige vollständige Konsensvalidierung aller Blöcke. [BIP 157 — Client Side Block Filtering] [BIP 152 — Compact Block Relay]

Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Compact Block Filters, Neutrino, Full Node, Bitcoin-Privatsphäre, Compact-Block-Relay. Auf diesen Eintrag verweisen außerdem Neutrino.

DOC · 001BIP 157 — Client Side Block FilteringSpezifikationDOC · 002BIP 158 — Compact Block Filters for Light ClientsSpezifikationDOC · 003Bitcoin Core — BasicFilterElementsPrimärquelleDOC · 004Bitcoin Core 30.0 — getblockfilterDokumentationDOC · 005BIP 152 — Compact Block RelaySpezifikation
Quellenbasiert · Keine Anlageberatung