Wie wenden SPV-Clients eine neue Sperre an?

Benutzer von SPV (lightweight) haben keine Kette. (Nun, einige SPV-Benutzer haben einen Bruchteil der gesamten Kette, aber einige SPV-Benutzer haben nur Block-Header. Liege ich richtig?)

Wenn ein Block von einem Miner erstellt wird und ein SPV-Benutzer diesen Block erhält, muss er diesen Block an die vorhandene Blockchain anhängen, aber dieser SPV-Benutzer hat in diesem Fall keine Blockchain, also was macht ein SPV-Benutzer wann mit einem Block? bekommt er es?

Hängen sie einfach ihren Block-Header an das an, was der SPV-Benutzer zu diesem Zeitpunkt hat?

Antworten (2)

Benutzer von SPV (lightweight) haben keine Kette. (Nun, einige SPV-Benutzer haben einen Bruchteil der gesamten Kette, aber einige SPV-Benutzer haben nur Block-Header. Liege ich richtig?)

SPV-Clients verfolgen nur die Block-Header, verlassen sich normalerweise auf andere Knoten, um die Blockgültigkeitsprüfung durchzuführen, und behalten keine vollständigen Blöcke herum. Dies mag einem beschnittenen Knoten ähneln, der nur einen Teil der neuesten Blöcke behält, aber völlig anders ist. Vollständige Knoten benötigen die vollständigen Blöcke, um den Status ihres Hauptbuchs (das UTXO-Set) zu aktualisieren, beschnittene Knoten verifizieren jeden Block vollständig und verwerfen später einen Teil der ursprünglichen Kette. Das bedeutet nur, dass sie nicht alle Blöcke an andere Knoten liefern können und die Blöcke bei einer Neuindizierung erneut herunterladen müssen, aber sie haben immer die vollständige Blockchain selbst verifiziert. SPV-Knoten verfolgen nur die Block-Header, und wenn sie an einem Block interessiert sind, verbrauchen sie diesen Block vollständig. Erst dann führen sie einige Plausibilitätsprüfungen durch, z. B. die Überprüfung, ob der Block wohlgeformt ist. Wie auch immer, es'

Wenn ein Block von einem Miner erstellt wird und ein SPV-Benutzer diesen Block erhält, muss er diesen Block an die vorhandene Blockchain anhängen, aber dieser SPV-Benutzer hat in diesem Fall keine Blockchain, also was macht ein SPV-Benutzer wann mit einem Block? bekommt er es?

SPV-Kunden verfolgen nicht das vollständige Hauptbuch, sie verfolgen nur den Status der Transaktionen, die sie erstellt oder an sie gesendet haben. SPV-Clients verwenden eine von mehreren Methoden, um herauszufinden, ob ein Block interessante Transaktionen enthält, wie die vollständige Delegierung an Dritte (z. B. Wallet-Service, Electrum-Server) und die Aufforderung an Full-Node-Peers, den BIP37-Bloom-Filter des SPV-Clients für alle neuen Blöcke auszuführen , oder suchen Sie die recht neuen BIP158 Compact Block Filter . Sobald der SPV-Kunde festgestellt hat, dass er an einem Block interessiert ist, fordert er entweder den vollständigen Block an, um die tatsächlichen Transaktionsdaten zu erhalten, oder er fragt nach dem Merkle-Zweig und der Transaktion.

Hängen sie einfach ihren Block-Header an das an, was der SPV-Benutzer zu diesem Zeitpunkt hat?

Ja, SPV-Clients führen eine Kette aller Block-Header, und für alle Transaktionen, an denen sie interessiert sind, behalten sie den Merkle-Zweig, der die Transaktion mit dem Block verbindet.

SPV kann gut verstanden werden, wenn man sich den Zweck von SPV ansieht. SPV wird zur schnellen Überprüfung einer Transaktion in der Blockchain erstellt. Dies ist nützlich, wenn ein Benutzer nur wissen möchte, ob eine ihn betreffende Transaktion in die Blockchain eingebettet ist und wie viel Rechenleistung die Community danach aufgewendet hat.

Jeder Block in der Blockchain hat eine Größe von 1 MB, während die Block-Header-Größe nur 80 Byte beträgt. Die Gesamtgröße aller bisherigen Blockheader beträgt immer noch nur wenige MByte, die problemlos auf einem mobilen Gerät gespeichert werden können.

In einem Block werden die Transaktionen im Merkle-Baum verfolgt, wo die Existenz einer Transaktion in O(log n)-Zeit verifiziert werden kann, wenn der Pfad zur Transaktion bekannt ist. Wann immer also ein SPV-Client daran interessiert ist, die Existenz einer Transaktion zu erfahren, kann er den entsprechenden Block von einem vollständigen Knoten herunterladen und ihn dann überprüfen.

Nun zu deiner Frage

Nun, einige SPV-Benutzer haben einen Bruchteil der gesamten Kette, aber einige SPV-Benutzer haben nur Block-Header

Es hängt davon ab, ob ein SPV den aktualisierten Blockheader von einem vollständigen Knoten angefordert hat oder nicht.

Was macht der SPV-Benutzer mit einem Block, wenn er diesen erhält?

Idealerweise sollte es den Block an Knoten weitergeben, mit denen es verbunden ist, aber ein SPV kann einfach entscheiden, ihn zu löschen und nichts zu tun.

Einfach seinen Block-Header an das anhängen, was der SPV-Benutzer zu diesem Zeitpunkt hat?

Dies ist nicht möglich, da der Blockheader des vorherigen Blocks nicht übereinstimmt

Tatsächlich kann ein Block seit BIP141 größer als 1 MB sein. bitcoin.stackexchange.com/questions/69468/…