Was sind Doppelausgaben?

Doppelte Ausgaben sind ein potenzielles Problem in einem digitalen Währungssystem, in dem dieselben Gelder im gleichen Zeitintervall zweimal ausgegeben werden können. Ohne angemessene Gegenmaßnahmen ist ein Protokoll, das dieses Problem nicht angeht, anfällig für diese Art von Aktivität – Benutzer können einfach nicht sicher sein, dass ihre Gelder nicht woanders ausgegeben wurden.

Im Kryptoraum ist die Begrenzung der Duplizierung bestimmter Einheiten von größter Bedeutung. Wenn Alice 10 Einheiten empfangen und diese dann 10 Mal kopieren und einfügen könnte, um 100 Einheiten zu erhalten, würde das gesamte System abstürzen. Das System würde auch nicht funktionieren, wenn dieselben 10 Einheiten gleichzeitig an Boris und Katya gesendet würden. Damit digitales Geld funktioniert, müssen Mechanismen geschaffen werden, um diese Möglichkeiten einzuschränken.


Wie können Sie Doppelausgaben verhindern?

Zentralisierter Ansatz

Der zentralisierte Systemtyp ist im Gegensatz zu dezentralen Alternativen viel einfacher zu implementieren. Im Grunde geht es dabei um die Präsenz einer Einheit oder Organisation, die das System verwaltet und die Ausgabe und Verteilung neuer Einheiten kontrolliert. Ein gutes Beispiel für eine zentralisierte Lösung des Problems der doppelten Ausgaben ist eCash von David Chaum.

Um Benutzern einen digitalen Vermögenswert auszustellen, der Bargeld nachahmt (und anonym und Peer-to-Peer-Austausch möglich ist), kann eine Bank Blindsignaturen verwenden – wie der Kryptograph David Chaum in seiner Arbeit „Blind Signatures for Untraceable Payments“ aus dem Jahr 1982 beschreibt.

Wenn ein Benutzer (nennen wir ihn Denis) beispielsweise 100 US-Dollar in digitaler Währung erhalten möchte, muss er dies zunächst der Bank mitteilen. Bei einem Guthaben auf dem Konto werden eine Zufallszahl oder bei kleineren Stückelungen mehrere Zahlen generiert. Nehmen wir an, es werden fünf Zahlen erzeugt, denen jeweils ein Wert von 20 $ zugewiesen ist. Um zu verhindern, dass die Bank die Währungseinheiten verfolgt, verbirgt Denis die Zufallszahlen, indem er ihnen jeweils einen Blindfaktor hinzufügt.

Anschließend übermittelt er die Informationen an die Bank, die sein Konto mit 100 US-Dollar belastet und dann Nachrichten unterzeichnet, in denen er bestätigt, dass jede der fünf Informationen gegen 20 US-Dollar eingetauscht werden kann. Jetzt kann Denis die von der Bank ausgegebenen Mittel ausgeben. Er geht in Irinas Restaurant und kauft Essen, das 40 Dollar kostet.

Denis kann den Blindfaktor entfernen, indem er auf dem Scheck eine mit der digitalen Währung verknüpfte Zufallszahl verwendet, die als eindeutige Kennung für jeden Artikel dient (ähnlich einer Seriennummer). Zwei davon verrät er Irina, die sie nun sofort in der Bank aktivieren muss, damit Denis das gleiche Geld nicht woanders ausgeben kann. Die Bank wird die Unterschriften prüfen und, wenn alles gut geht, Irinas Konto 40 $ gutschreiben.

Nach der Aktivierung werden gebrauchte Schecks verbrannt, und wenn Erin ihr neues Guthaben erneut ausgeben möchte, muss sie auf die gleiche Weise neue Schecks erhalten.

Chaums eCash mag für private Finanztransaktionen praktisch sein, der Ansatz ist jedoch nicht sehr zuverlässig, da die Bank eine zentrale Fehlerquelle darstellt. Der ausgestellte Scheck selbst ist nichts wert, da sein Wert ausschließlich von der Bereitschaft der Bank abhängt, den Scheck in Dollar umzutauschen. Gleichzeitig sind die Kunden der Bank ausgeliefert und müssen sich darauf verlassen, dass sie Geld ausgeben kann, und genau das ist das Problem, das mit der Kryptowährung behoben werden soll.


Dezentraler Ansatz

Eine größere Herausforderung besteht darin sicherzustellen, dass Gelder in einem Ökosystem ohne eine dritte Aufsichtsbehörde nicht doppelt ausgegeben werden können. In diesem Fall müssten sich gleich mächtige Teilnehmer auf bestimmte Regeln einigen, um Betrug zu verhindern und alle Nutzer zu ehrlichem Verhalten zu motivieren.

Die größte im Bitcoin-Whitepaper vorgestellte Innovation war die Lösung des Problems der doppelten Ausgaben. Obwohl dies nicht als solche erwähnt wird, ist die von Satoshi vorgeschlagene Datenstruktur heute allgemein als Blockchain bekannt.

Blockchain ist eine Datenbank mit einer Reihe einzigartiger Eigenschaften. Netzwerkteilnehmer (sogenannte Knoten) verwenden spezielle Software, um eine Kopie der Datenbank mit anderen Teilnehmern zu synchronisieren. Dadurch können alle Netzwerkteilnehmer den Verlauf jeder Transaktion ab dem Genesis-Block überprüfen. Dank des öffentlichen Charakters der Blockchain können betrügerische Aktivitäten wie Transaktionen mit doppelten Ausgaben leicht erkannt und verhindert werden.

Wenn ein Benutzer eine Transaktion sendet, wird diese nicht sofort zur Blockchain hinzugefügt: Zuerst muss sie durch Mining in den Block aufgenommen werden. Der Empfänger betrachtet die Übertragung erst dann als gültig, wenn er den Block mit der Transaktion zur Kette hinzugefügt hat. Andernfalls besteht die Gefahr, dass der Empfänger die versprochenen Gelder nicht erhält, da der Absender die gleichen Münzen woanders ausgeben könnte.

Sobald die Transaktion bestätigt ist, können die Coins nicht mehr doppelt ausgegeben werden, da das Eigentum auf den neuen Benutzer übergeht und das gesamte Netzwerk dies überprüfen kann. Aus diesem Grund empfehlen viele, mit der Annahme einer Zahlung zu warten, bis Sie mehrere Bestätigungen erhalten. Jeder nachfolgende Block erhöht den Aufwand, der erforderlich ist, um die Kette zu ändern oder neu zu schreiben (wie bei einem 51 %-Angriff).

Nehmen wir noch einmal das Beispiel Restaurant. Denis kehrt in das Restaurant zurück und bemerkt eine Anzeige, dass dieses Lokal Zahlungen für Dienstleistungen in Bitcoin akzeptiert. Ihm gefielen die Gerichte vom letzten Mal, also bestellt er sie noch einmal. Es kostet 0,005 BTC.

Irina gibt ihre öffentliche Adresse an, an die er Gelder schicken soll. Denis sendet die Transaktion, bei der es sich im Wesentlichen um eine unterzeichnete Nachricht handelt, dass Denis‘ 0,005 BTC nun an Irina übertragen werden. Jeder, dem Denis‘ unterzeichnete Transaktion vorgelegt wird, kann bestätigen, dass er tatsächlich der Eigentümer der Münzen war und daher das Recht hatte, sie zu versenden.

Wie bereits erwähnt, ist eine Transaktion nur dann gültig, wenn sie in einem bestätigten Block enthalten ist. Das Akzeptieren unbestätigter Transaktionen ähnelt dem Empfang von 40 $ in eCash aus dem vorherigen Beispiel, ohne den Scheck rechtzeitig bei der Bank einzulösen, sodass der Absender den gleichen Betrag woanders ausgeben kann. Daher sollte Irina mindestens sechs Blockbestätigungen (etwa eine Stunde) abwarten, bevor sie Denis‘ Zahlung akzeptiert.


Doppelte Ausgaben im Bitcoin-Netzwerk

Der Bitcoin-Mechanismus verhindert Double-Spending-Angriffe, zumindest solange das Protokoll ordnungsgemäß funktioniert. Das heißt, wenn jemand auf die Bestätigung von Transaktionen in einem Block wartet, wird es für den Absender nicht einfach sein, diese rückgängig zu machen. Um dies zu erreichen, muss die Blockchain umgekehrt werden, was jedoch eine enorme Menge an Hashing-Leistung erfordert.

Es gibt jedoch mehrere Double-Spending-Angriffe, die auf unbestätigte Transaktionen abzielen. Wenn der Verkäufer beispielsweise Einkäufe zu einem niedrigen Preis tätigt, möchte er möglicherweise nicht darauf warten, dass Transaktionen in den Block aufgenommen werden. Auch ein mit Bestellungen überlastetes Fast-Food-Restaurant kann bei einer so langen Bearbeitungszeit für jeden Einkauf nicht richtig funktionieren. Wenn ein Unternehmen also auf Sofortzahlungen angewiesen ist, ist es anfällig für Doppelausgaben. Jemand könnte einen Hamburger bestellen, ihn bezahlen und dann sofort den gleichen Betrag an seine Adresse senden. Eine neue Transaktion mit einer höheren Gebühr wird höchstwahrscheinlich zuerst bestätigt und anschließend die Validierung der vorherigen abgebrochen.

Es gibt drei beliebte Methoden zur Umsetzung von Double Spending:

  • Ein 51-Prozent-Angriff liegt vor, wenn es einer Entität oder Organisation gelingt, die Kontrolle über mehr als 50 Prozent der gesamten Netzwerk-Hashrate zu übernehmen, wodurch Transaktionen eliminiert oder ihre Reihenfolge geändert werden können. Ein solcher Angriff ist im Fall von Bitcoin unwahrscheinlich, kann aber in Bezug auf andere Blockchain-Netzwerke auftreten.

  • Ein Race-Angriff liegt vor, wenn zwei widersprüchliche Transaktionen mit denselben Mitteln gleichzeitig übertragen werden, aber nur eine davon bestätigt wird. Das Ziel des Angreifers besteht darin, die Validierung ungültig zu machen, indem er nur die von ihm gewünschte Transaktion bestätigt (z. B. den gleichen Betrag an seine Adresse sendet). Voraussetzung für einen solchen Angriff ist die Erlaubnis des Verkäufers, die Ware durch unbestätigte Transaktionen zu bezahlen.

  • Finney-Angriffe treten auf, wenn ein Angreifer mit seiner Transaktion einen Block vorab abbaut, ohne ihn sofort an das Netzwerk zu senden. Stattdessen gibt es die Münzen erneut aus, allerdings im Rahmen einer anderen Transaktion, und sendet erst dann den vorherigen Block, wodurch die Übertragung an den Verkäufer abgebrochen wird. Finney-Angriffe erfordern eine bestimmte Abfolge von Ereignissen und hängen auch von der Bereitschaft des Empfängers ab, unbestätigte Transaktionen zu akzeptieren.

Wie wir sehen, hat ein Verkäufer, der auf die Bestätigung einer Sperre wartet, ein deutlich geringeres Risiko, Opfer doppelter Ausgaben zu werden.


Zusammenfassung

Durch doppelte Ausgaben können Sie das System des digitalen Geldes für einen finanziellen Gewinn nutzen, indem Sie den gleichen Betrag mehr als einmal ausgeben. Das Fehlen angemessener Lösungen für dieses Problem behindert weitere Fortschritte in diesem Bereich.

Glücklicherweise hat das Aufkommen blinder Signaturen viele Probleme zentralisierter Finanzsysteme gelöst. Und die Schaffung von Proof-of-Work-Mechanismen und der Blockchain-Technologie brachte Bitcoin hervor, eine leistungsstarke Form dezentralen Geldes, die viele Benutzer dazu inspiriert hat, Tausende anderer Kryptowährungsprojekte zu erstellen.