Wie wird der Bitcoin-Blockausbreitungsprozess wiederhergestellt, wenn ein falsch positives Ergebnis auftritt?

Ich habe Artikel darüber gelesen, wie Invertible Bloom Filters (IBLT) funktionieren, und ich habe einige Grundkenntnisse, wie Bitcoin für die Blockausbreitung mit IBLT funktioniert. Aber da IBLT falsche positive Ergebnisse einführen würde, hätten die Teilnehmer des Netzwerks die Möglichkeit, alle Unterschiede zwischen zwei IBLTs nicht zu erhalten. Ich frage mich also, wie Bitcoin dieses Problem löst, um alle Blöcke wiederherzustellen?

Antworten (1)

Der Zweck des IBLT-basierten Blockübertragungsmechanismus besteht darin, die Bandbreite (wie viele Daten insgesamt gesendet werden) und die Latenz (wie lange es dauert, den Block zu übertragen) zu reduzieren, und je nachdem, was die Priorität hat, gibt es unterschiedliche Lösungen.

Wenn die Latenz überhaupt keine Rolle spielt, würden Sie einfach einen Blockheader zusammen mit einer Liste von (abgeschnittenen) txids senden, und der Peer würde mit "i'm missing transaction 3, 7, 112 und 234" antworten, gefolgt von Senden Sie einfach diese Transaktionen. Eine solche Lösung würde mehrere Roundtrips erfordern: zuerst das Senden der txids, der Peer fordert die fehlenden an und wir senden die Transaktionen.

Wenn die Latenz jedoch ein Problem darstellt, sind das immer noch nur 3 Schritte, aber jeder dieser Schritte kann in der Größenordnung von einer halben Sekunde oder mehr liegen, je nachdem, wie weit Sie entfernt sind. Wenn Ihre Netzwerkverbindung über 10 Mbit/s beträgt, könnten Sie einfach den gesamten Block in der zusätzlichen Zeit übertragen, die durch die Roundtrips verschwendet wird.

Hier kommen also IBLT und andere effiziente Blockausbreitungsprotokolle ins Spiel: Sie versuchen, ein einzelnes Paket zu konstruieren, das dem Peer genügend Informationen liefert, um den Block zu rekonstruieren, ohne jedoch den vollständigen Block zu senden. Gelegentlich schlägt dieser Versuch fehl, es treten Fehlalarme auf und die Rekonstruktion schlägt fehl (da der Block-Hash nicht mit dem übereinstimmt, was behauptet wurde). In diesem Fall greifen wir einfach auf die naive Version zurück: Fordern Sie die Transaktionen an, die Ihnen fehlen, und verursachen Sie die damit verbundene zusätzliche Latenz.