Wie genau funktioniert SPV?

Hier ist, was ich bisher habe:

  1. Ein Mobiltelefon verbindet sich über rpc mit einem Knoten.
  2. Das Mobiltelefon bittet dann den Knoten, ihm einen Satz von Transaktionen für einen Satz von öffentlichen Schlüsseln zu geben.
  3. Der Knoten sucht dann nach allen Transaktionen, die mit den angegebenen öffentlichen Schlüsseln übereinstimmen, und gibt sie an das Mobiltelefon zurück.

Das Handy kann einen Bloom-Filter einrichten, sodass einige der enthaltenen Schlüssel nicht von ihm sind?

Wenn der Knoten eine Anfrage erhält, muss er die Blockchain noch einmal scannen, um den Transaktionsverlauf zu erhalten?

Antworten (1)

Ein Mobiltelefon verbindet sich über rpc mit einem Knoten.

Knoten verbinden sich nicht über RPC. RPC ist für Knotenbesitzer und hat normalerweise ein langes Passwort.

Das Mobiltelefon bittet dann den Knoten, ihm einen Satz von Transaktionen für einen Satz von öffentlichen Schlüsseln zu geben.

Nicht genau. Zunächst einmal haben Block-Header einen Teil namens „Merkle-Root“, mit dem Clients überprüfen können, ob sich eine Transaktion im Block befindet. Theoretisch können SPV-Knoten, wie im Whitepaper beschrieben, Block-Header behalten und andere Knoten um einen Merkle-Beweis ihrer Transaktion bitten. In der Praxis ist es komplizierter. Derzeit verwenden 99 % der SPV-Knoten BIP 37 . Außerdem wird an besseren SPV-Methoden wie BIP 157 und Neutrino geforscht.

Wenn der Knoten eine Anfrage erhält, muss er die Blockchain noch einmal scannen, um den Transaktionsverlauf zu erhalten?

Knoten müssen die gesamte Blockchain nach einer Transaktion scannen, wenn sie ihre Blockhöhe nicht kennen, es sei denn, sie verwenden txindex=1, usw. ... Wenn sie dies tun, ist der Zugriff darauf trivial.

Wenn mobile/leichte Clients kein rpc verwenden, wie ist es ihnen dann möglich, Knoten mit Befehlen wie gettxout abzufragen? Oder andere Leute, um Knoten mit gettxout abzufragen? Wenn ich dem Knoten den öffentlichen Schlüssel und keine Transaktion gebe, müsste er die gesamte Kette scannen? Weil Light Wallets dem Full Node öffentliche Schlüssel geben und meines Wissens keine Transaktionen
Sie verwenden nicht gettxout. Hier ist, was sie verwenden . Außerdem geben SPVs niemals die öffentlichen Schlüssel heraus, das würde die Privatsphäre verletzen.
Oh, ich dachte, filteradd wäre ein RPC-Befehl. Wenn sie keine öffentlichen Schlüssel ausgeben, lädt ein SPV, wenn er für eine Weile weg ist, die Header herunter, sobald er zurück ist, und was sendet er dann an den Knoten, um die relevanten Informationen zu erhalten? Ich sehe Daten in filteradd, aber was sind die Daten? Nochmals vielen Dank für die Hilfe
Eigentlich mein Fehler. Sie verteilen öffentliche Schlüssel zusammen mit einigen gefälschten öffentlichen Schlüsseln. (Nur Pre-Bip37-Download-Everything-Knoten teilen keine öffentlichen Schlüssel, auch bekannt als „beschnitten“.) Wie in der folgenden Tabelle beschrieben merkleblock, senden die Knoten [alle Transaktionen in diesen Blöcken] die Hashes. Filteradd teilt den Nodes mit, an welchen Pubkeys das SPV interessiert ist. Wenn der Block den Bloom-Filter nicht bestanden hat, können die Nodes tx-Hashes weglassen und Daten speichern. Kann einige weitere Details geben: bitcoin.stackexchange.com/a/11721/38618
Ahh ok, die Tabelle ist sehr hilfreich. Danke für die Auskunft