Was ist das Problem der doppelten Ausgaben?
Das Problem der doppelten Ausgaben ist ein potenzielles Problem in digitalen Bargeldsystemen, bei denen die gleichen Gelder gleichzeitig an zwei Zahlungsempfänger ausgezahlt werden. Ohne entsprechende Gegenmaßnahmen kann das Protokoll allein dieses Problem nicht vollständig lösen. Schließlich haben Benutzer keine Möglichkeit zu überprüfen, ob die erhaltenen Gelder an andere ausgezahlt wurden.
In der Welt des digitalen Bargeldes muss sichergestellt werden, dass eine bestimmte Währungseinheit nicht kopiert werden kann. Wenn Alice 10 Währungseinheiten erhalten, sie 10 Mal kopieren und einfügen könnte und dann selbst 100 Währungseinheiten hätte, würde das ganze System zusammenbrechen. Wenn sie dieselben 10 Währungseinheiten gleichzeitig an Bob und Carol senden könnte, würde das System ebenfalls nicht funktionieren. Daher müssen Mechanismen vorhanden sein, um dies zu verhindern und das ordnungsgemäße Funktionieren digitaler Währungen sicherzustellen.
Wie kann man das Problem der doppelten Ausgaben verhindern?
Zentralisierter Ansatz
Zentralisierte Ansätze sind einfacher zu implementieren als dezentrale Lösungen, die in der Regel einen Vorgesetzten erfordern, der das System verwaltet und die Ausgabe und Ausgabe von Währungseinheiten kontrolliert. eCash von David Chaum löst das Problem der doppelten Ausgaben durch einen zentralisierten Ansatz.
Banken können Blindsignaturen verwenden, um bargeldähnliche digitale Vermögenswerte an Benutzer auszugeben (was anonyme Peer-to-Peer-Transaktionen ermöglichen kann). Dies wird in der Arbeit „Blind Signature Techniques for Untraceable Payments“ des Kryptographen David Chaum aus dem Jahr 1982 ausführlich beschrieben.
Wenn Benutzer Dan in diesem Fall 100 US-Dollar in digitalem Bargeld erhalten möchte, muss er dies zunächst der Bank mitteilen. Wenn auf seinem Konto ein Guthaben vorhanden ist, wird eine Zufallszahl generiert (mehr, wenn der Nennwert kleiner ist). Angenommen, es werden fünf Zufallszahlen generiert, von denen jede 20 $ wert ist. Um zu verhindern, dass Banken bestimmte Währungseinheiten verfolgen, verwirrt Dan die Situation, indem er zu jeder Zufallszahl einen Blindfaktor hinzufügt.
Anschließend gab er diese Daten an die Bank weiter, die den Restbetrag von 100 US-Dollar von seinem Konto abbuchte und die Nachricht unterzeichnete, um zu beweisen, dass jede der fünf Nachrichten für 20 US-Dollar einlösbar war. Zu diesem Zeitpunkt kann Dan von der Bank ausgegebenes digitales Bargeld verwenden. Er ging zum Essen in Erins Restaurant und gab 40 Dollar aus.
Dan eliminiert den Blendungsfaktor und legt die mit jedem digitalen Geldschein verbundene Nonce offen, die eine eindeutige Kennung für jede Währungseinheit darstellt (ungefähr äquivalent zu einer Seriennummer). Er gibt Erin zwei der Zufallszahlen bekannt, die das Geld sofort mit der Bank austauschen muss, um zu verhindern, dass Dan an andere Händler zahlt. Die Bank prüft, ob die Unterschrift gültig ist, und überweist, wenn sie korrekt ist, 40 $ auf Erins Konto.
Die verbrauchten „Banknoten“ werden dann vernichtet, und wenn Erin ihren Kontostand auf die gleiche Weise verwenden möchte, müssen weitere Banknoten ausgegeben werden.
Der Chaumian eCash-Mechanismus ist für private Überweisungen äußerst wertvoll. Der eCash-Mechanismus selbst bietet jedoch keinen Widerstand. Da es sich bei Banken um zentralisierte Knotenpunkte handelt, werden alle leiden, wenn das System einmal schief geht. Von Banken ausgegebene Banknoten haben an sich keinen Wert; ihr Wert ergibt sich ausschließlich aus der Bereitschaft der Bank, die Banknoten in US-Dollar umzutauschen. Kunden sind der Bank unterworfen und müssen sich bei der Verwaltung von Geldern auf den Ruf der Bank verlassen. Genau dieses Problem wollen Kryptowährungen lösen.
Dezentraler Ansatz
Noch schwieriger ist es, das Problem der doppelten Ausgaben in einem Ökosystem ohne Aufsichtsmechanismen zu vermeiden. Teilnehmer mit gleicher Macht müssen sich untereinander nach denselben Regeln abstimmen, um Betrug zu verhindern und alle Nutzer zu integrem Handeln zu motivieren.
Die größte im Bitcoin-Whitepaper vorgestellte Innovation ist die Lösung des Double-Spending-Problems. Satoshi Nakamoto schlug eine beispiellose Datenstruktur vor, die heute als Blockchain bekannt ist.
Blockchain ist eigentlich nur eine Datenbank mit einigen einzigartigen Eigenschaften. Netzwerkteilnehmer (sogenannte Knoten) führen spezielle Software aus, die es ihnen ermöglicht, ihre eigenen Kopien der Datenbank miteinander zu synchronisieren. Auf diese Weise kann das gesamte Netzwerk den Transaktionsverlauf ab dem Genesis-Block prüfen. Da die Blockchain öffentlich einsehbar ist, ist es einfacher, Betrug zu erkennen und zu verhindern, beispielsweise durch die Identifizierung versuchter Transaktionen mit doppelten Ausgaben.
Wenn ein Benutzer eine Transaktion veröffentlicht, wird diese nicht sofort zur Blockchain hinzugefügt und muss zunächst abgebaut werden, bevor der Block geladen werden kann. Daher kann der Zahlungsempfänger erst dann bestätigen, dass die Transaktion gültig ist, wenn der Block in die Kette eingegeben wird. Andernfalls riskiert der Empfänger, Geld zu verlieren, wenn der Absender den gleichen Token an anderer Stelle bezahlt.
Sobald eine Transaktion bestätigt ist, wird der Token-Besitz dem neuen Benutzer zugewiesen und vom gesamten Netzwerk überprüft, sodass Token nicht mehr doppelt ausgegeben werden können. Aus diesem Grund empfehlen viele Leute, auf mehrere Bestätigungen zu warten, bevor sie eine gültige Zahlung akzeptieren. Jeder nachfolgende Block erhöht den Arbeitsaufwand zum Ändern oder Umschreiben der Kette erheblich (z. B. im Fall eines 51-Prozent-Angriffs).
Kommen wir zurück zur Restaurantsituation. Dan kehrte ins Restaurant zurück und bemerkte dieses Mal den Aufkleber am Fenster mit der Aufschrift „Dieser Laden unterstützt Bitcoin-Zahlungen“. Er konnte seine letzte Mahlzeit nicht vergessen und bestellte das gleiche Essen noch einmal für 0,005 Bitcoins.
Erin zeigt Dan die öffentliche Adresse, bei der es sich um die Übertragungsadresse handelt. Dans Ankündigung der Transaktion ist im Wesentlichen eine unterzeichnete Nachricht, in der bekannt gegeben wird, dass die 0,005 Bitcoins, die er besitzt, nun im Besitz von Erin sind. Ohne zu sehr ins Detail zu gehen: Jeder, der Dans unterzeichnete Transaktion sieht, kann bestätigen, dass die Token tatsächlich ihm gehören und Dan daher befugt ist, sie zu senden.
Allerdings ist die Transaktion, wie bereits erwähnt, erst gültig, nachdem sie in den Block geladen und bestätigt wurde. Der Empfang einer unbestätigten Transaktion ist so, als hätte man zuvor 40 US-Dollar in eCash erhalten. Wenn das Geld nicht sofort von der Bank eingelöst wird, kann der Absender das Geld woanders ausgeben. Daher sollte Erin mindestens 6 Blockbestätigungen (ca. eine Stunde) warten, bevor sie die Zahlung von Dan akzeptiert.
Das Problem der doppelten Ausgaben bei Bitcoin
Bitcoin ist sorgfältig darauf ausgelegt, Double-Spend-Angriffe zu verhindern, zumindest wenn das Protokoll bestimmungsgemäß verwendet wird. Das heißt, wenn jemand darauf wartet, dass eine Transaktion eine Blockbestätigung erhält, kann der Absender die Transaktion nicht einfach rückgängig machen. Nur durch „Umkehren“ der Blockchain kann eine Transaktion rückgängig gemacht werden, was enorme Mengen an Hashing-Leistung erfordert.
Einige Double-Spend-Angriffe zielen jedoch speziell auf Benutzer ab, die unbestätigte Transaktionen akzeptieren. Beispielsweise möchten Händler bei kleinen Einkäufen nicht warten, bis die Transaktion in den Block aufgenommen wird. Vielbeschäftigte Fast-Food-Restaurants können möglicherweise nicht so lange warten, wie das Netzwerk für die Verarbeitung jeder Transaktion benötigt. Wenn ein Händler „sofortige“ Zahlungen aktiviert hat, kann es daher zu einem Problem mit doppelten Ausgaben kommen. Jemand kann einen Burger bestellen und bezahlen und dann den gleichen Betrag sofort an die eigene Adresse zurücksenden. Solange die Bearbeitungsgebühr der späteren Transaktion höher ist, kann diese zuerst bestätigt werden, wodurch die vorherige Transaktion ungültig wird.
Derzeit gibt es drei häufige Angriffe auf doppelte Ausgaben:
51 %-Angriff: Einer einzelnen Entität oder Organisation gelingt es, mehr als 50 % der Hash-Rate zu kontrollieren, um die Reihenfolge von Transaktionen zu löschen oder zu ändern. Es ist äußerst unwahrscheinlich, dass diese Art von Angriff im Bitcoin-Netzwerk auftritt, in anderen Netzwerken kam es jedoch bereits vor.
Rassenangriff: Zwei widersprüchliche Transaktionen werden nacheinander mit denselben Mitteln veröffentlicht, aber nur eine Transaktion wird bestätigt. Das Ziel des Angreifers besteht darin, eine andere Zahlung ungültig zu machen, indem er eine Transaktion zu seinen Gunsten validiert. Zum Beispiel das Senden von Geldern an eine von ihm kontrollierte Adresse. Bei einem Race-Angriff akzeptiert der Empfänger typischerweise eine unbestätigte Transaktion als Zahlung.
Finney-Angriffe: Ein Angreifer ermittelt eine Transaktion vorab und fügt sie in einen Block ein, veröffentlicht sie jedoch nicht sofort im Netzwerk. Stattdessen zahlte er denselben Token in eine andere Transaktion ein, bevor er einen zuvor abgebauten Block veröffentlichte, wodurch die Zahlung ungültig wurde. Voraussetzung für einen Fenney-Angriff ist, dass die Ereignisse in einer bestimmten Reihenfolge ablaufen und der Erfolg auch davon abhängt, ob der Empfänger die unbestätigte Transaktion akzeptiert.
Wie wir sehen, können Händler ihr Risiko erheblich reduzieren und vermeiden, Opfer doppelter Ausgaben zu werden, indem sie einfach geduldig auf Blockbestätigungen warten.
Zusammenfassen
Benutzer können Double-Spend-Angriffe nutzen, um Peer-to-Peer-E-Cash-Systeme zu manipulieren und dieselben Gelder mehrfach zu verwenden, um ungerechtfertigte Gewinne zu erzielen. Da dieses Problem in der Vergangenheit gut gelöst werden musste, stagnierte die Entwicklung dieses Bereichs.
Glücklicherweise ist die Verwendung von Blindsignaturen zu einer auffälligen Lösung in zentralisierten Finanzlösungen geworden. Anschließend führte die Entwicklung des Proof-of-Work-Mechanismus und der Blockchain-Technologie zu Bitcoin, einer leistungsstarken Form einer dezentralen Währung, die wiederum Inspiration für Tausende von Kryptowährungsprojekten lieferte.

