Zum Inhalt springen
buybitcoinsmart

Glossar / Nodes und Software

Vereinfachte Zahlungsverifikation

Auch bekannt als SPV.

Was ist die vereinfachte Zahlungsverifikation?
Die vereinfachte Zahlungsverifikation prüft, dass eine Transaktion in einem Block mit echtem Proof of Work dahinter steht, und nutzt dafür nur Block-Header und einen Merkle-Zweig.

Satoshi Nakamoto beschrieb das Verfahren in Abschnitt 8 des Whitepapers von 2008 als den Weg, Bitcoin zu nutzen, ohne einen Server zu betreiben. Es ist günstig, weil ein Block-Header 80 Byte groß ist: Bei rund 960.000 Blöcken umfasst die gesamte Header-Kette etwa 77 MB, gegenüber 759 GB für die Blöcke selbst im August 2026. Es liefert Ihnen den Nachweis, dass Miner sich auf Ihre Zahlung festgelegt haben, und überhaupt nichts darüber, ob diese Zahlung rechtmäßig war.

Wie es funktioniert

Die vereinfachte Zahlungsverifikation beantwortet eine Frage mit zwei Beweisstücken.

Das erste ist die Header-Kette. Jeder Block-Header ist genau 80 Byte groß und enthält den Hash des vorherigen Headers, die Merkle-Wurzel der darin enthaltenen Transaktionen, einen Zeitstempel und das Difficulty-Ziel, das der Miner übertreffen musste. Ein Client lädt nur Header herunter, prüft, dass jeder mit dem vorherigen verknüpft ist und dass jeder Hash tatsächlich unter seinem angegebenen Ziel liegt, und erhält am Ende eine Kette, die er in Elektrizität bemessen kann. Sie zu fälschen ist keine Frage des überzeugenden Lügens; es bedeutet, das Mining erneut durchzuführen.

Das zweite ist der Merkle-Zweig. Die Transaktionen in einem Block werden paarweise gehasht, bis eine Wurzel übrig bleibt. Um zu beweisen, dass eine bestimmte Transaktion in einem Block enthalten ist, braucht man daher nur die wenigen Geschwister-Hashes entlang des Pfades zu dieser Wurzel. Die Anzahl ist logarithmisch: Ein Block mit 4.096 Transaktionen benötigt 12 Hashes, das sind 384 Byte, und eine Verdopplung des Blocks fügt nur einen weiteren hinzu. Ihr Client rechnet sich den Zweig hinauf, vergleicht das Ergebnis mit der Merkle-Wurzel in dem Header, dem er bereits vertraut, und entweder ist die Transaktion in diesem Block oder nicht.

Fügt man beides zusammen, erhält man die Aussage, die die vereinfachte Zahlungsverifikation trifft: Ein Block hat sich auf diese Transaktion festgelegt, und seitdem wurde eine messbare Menge Arbeit darauf angehäuft.

Nun die Lücken, denn sie sind der nützliche Teil. Enthaltensein ist keine Gültigkeit. Das Verfahren kann Ihnen nicht sagen, dass die ausgegebenen Bitcoin existierten, dass die Signaturen gültig waren, dass der Block dem Miner den korrekte Blockbelohnung gewährte oder dass dieselben Bitcoin nicht in einem anderen Zweig ausgegeben wurden. Es kann auch keinen negativen Sachverhalt beweisen: Ein Server, der eine Zahlung einfach auslässt, hinterlässt keinerlei Beweis. Satoshi schrieb den Vorbehalt direkt ins Whitepaper und merkte an, dass die Technik zuverlässig ist, solange ehrliche Nodes das Netzwerk steuern, und dass Unternehmen, die häufig Zahlungen erhalten, weiterhin einen eigenen Node betreiben wollen.

Warum das beim Bitcoin-Kauf wichtig ist

Das grüne Häkchen in einer Smartphone-Wallet ist meist überhaupt keine Verifikation.

Die meisten Wallets, die Nutzer nach ihrem ersten Kauf an einer Börse installieren, bauen nie eine Header-Kette auf. Sie fragen den Server eines Unternehmens, wie viel Sie haben, zeigen die Antwort an und bezeichnen sie als bestätigt. Das ist eine schwächere Garantie als das Verfahren des Whitepapers, und das Verfahren des Whitepapers ist selbst schwächer als ein Node. Für kleine Alltagssalden ist diese Vertrauenskette in Ordnung, und etwas anderes vorzugeben, hilft niemandem. Sie ist ab dem Punkt nicht mehr in Ordnung, an dem der Betrag wehtun würde.

Die praktische Frage ist, wem Sie vertrauen und wie lange. Unsere Börsenbewertungen führen auf, was jede Plattform verlangt, bevor sie eine Auszahlung freigibt, und jede dieser Bestätigungszahlen ist ein Bericht des eigenen Nodes dieser Börse. Wenn die Bitcoin ankommen, berichtet die Wallet, die sie Ihnen zeigt, wiederum vom Node eines anderen. Keine der beiden Parteien lügt wahrscheinlich. Beide können falsch liegen, offline sein oder eine Kette ausliefern, die ihnen zugeführt wurde, und keine wird Ihnen mitteilen, wenn das geschieht.

Es gibt auch eine Datenschutz-Dimension. Die Studie von 2014 über Clients mit Bloom-Filtern ergab, dass die Filter, die verbergen sollten, welche Adressen eine Wallet betrafen, die meisten davon preisgaben. Deshalb hat Bitcoin Core die Funktion in Version 0.19.0 im November 2019 standardmäßig abgeschaltet, und deshalb laden neuere Light Wallets kompakte Filter herunter, anstatt Anfragen hochzuladen.

Was die vereinfachte Zahlungsverifikation im September 2018 übersehen hätte

CVE-2018-17144 ist die klarste Illustration des Unterschieds zwischen Enthaltensein und Gültigkeit in der Geschichte von Bitcoin.

Eine in Bitcoin Core 0.14.0 hinzugefügte Optimierung ließ eine Prüfung aus, die als redundant gegolten hatte, mit dem Ergebnis, dass betroffene Versionen einen Block teilweise verarbeiteten, der eine Transaktion enthielt, die denselben Input zweimal ausgab. Auf die eine Weise behandelt, stürzte der Node ab. Auf die andere Weise behandelt, erlaubte es einem Miner, Bitcoin aus dem Nichts zu schaffen. Der Fehler wurde am 17. September 2018 gemeldet und am folgenden Tag in Bitcoin Core 0.16.3 behoben. Niemand hat ihn im Live-Netzwerk ausgenutzt.

Stellen Sie sich vor, jemand hätte es getan. Ein Miner erzeugt einen Block, der das Angebot aufbläht, mit einem Header, der einen völlig echten Proof of Work trägt, und einem vollkommen korrekten Merkle-Baum. Ein aktualisierter Full Node analysiert den Block, findet den doppelten Input, lehnt ihn ab und trennt den Peer, der ihn gesendet hat. Ein Client, der eine vereinfachte Zahlungsverifikation durchführt, prüft den Header, prüft den Zweig und meldet die darin enthaltene Zahlung als bestätigt, weil jedes ihm verfügbare Beweisstück gültig ist. Er hat keinen Zugriff auf den ausgegebenen Input, sodass sich die Frage nie stellt.

Das ist der ganze Kompromiss. Die vereinfachte Zahlungsverifikation übernimmt ihre Regeln von dem, der gerade mint. Ein Node nicht.

Vereinfachte Zahlungsverifikation vs. Neutrino

Die vereinfachte Zahlungsverifikation und Neutrino ermöglichen beide, dass eine Wallet ohne die vollständige Kette funktioniert, und sie richten die Filterung in entgegengesetzte Richtungen aus. Der klassische Ansatz unter BIP37 sendet Ihre Interessen an einen Peer: Sie laden einen Filter hoch, der Peer sucht für Sie, und er erfährt ungefähr, welche Adressen Ihnen gehören. Bei Neutrino, der Implementierung von BIP157 und BIP158, die die meisten mobilen Lightning-Wallets nutzen, veröffentlicht der Node einen kompakten Filter pro Block für alle; Ihre Wallet lädt Filter herunter, prüft sie privat und fordert nur die Blöcke an, die passten. Die Verifikation, die Sie danach durchführen, ist dieselbe Merkle- und Header-Arithmetik. Was sich ändert, ist, dass niemand am anderen Ende erfährt, wonach Sie gesucht haben.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Ist eine SPV-Wallet für große Beträge sicher?

Sie ist sicher gegen Diebstahl und schwach gegen Täuschung. Ihre Schlüssel bleiben Ihre, aber die Wallet kann einen ungültigen Block oder eine Zahlung, die ein Server nicht erwähnt hat, nicht erkennen. Große Bestände gehören hinter eine Hardware-Wallet, die gegen einen Node geprüft wird, den Sie selbst betreiben.

Führt eine Hardware-Wallet eine vereinfachte Zahlungsverifikation durch?

Nein. Eine Hardware-Wallet schützt und verwendet Ihre privaten Schlüssel; sie enthält keine Blockchain-Daten und verifiziert keine Blöcke. Die Software, mit der Sie sie verbinden, entscheidet darüber, was Sie besitzen, und deshalb ist es wichtig, diese Software mit Ihrem eigenen Node zu verbinden.

Wie viele Daten benötigt die vereinfachte Zahlungsverifikation?

Rund 77 MB für die gesamte Header-Kette bei etwa 960.000 Blöcken, plus ein paar hundert Bytes pro Merkle-Beweis. Die Header wachsen um etwa 4,2 MB pro Jahr, denn 80 Bytes mal die etwa 52.560 Blöcke pro Jahr sind ein fester Kostenfaktor.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Nodes und Software

Diese Seite auf Englisch lesen