Was ist Double Spending?
In einem digitalen Geldsystem bezeichnet Double Spending („doppelte Ausgaben“) eine betrügerische Aktivität, bei der dasselbe Geld gleichzeitig an zwei Empfänger gesendet wird, was ein Risiko für das System darstellt. Ohne angemessene Gegenmaßnahmen, die das Problem lösen, würde ein Protokoll grundlegend untergraben, denn die Nutzer haben keine Möglichkeit, zu überprüfen, ob die erhaltenen Mittel nicht bereits anderweitig ausgegeben wurden.
Für ein digitales Geldsystem ist es von größter Bedeutung, dass Geldeinheiten nicht dupliziert werden können. Das gesamte System würde untergraben, wenn Alice 10 Einheiten erhalten, sie 10 Mal kopieren und einfügen könnte und dann im Besitz von 100 Einheiten wäre. Ebenso kann ein solches System nicht funktionieren, wenn sie dieselben 10 Einheiten gleichzeitig an Bob und Carol schicken kann. Damit Digitalgeld funktioniert, muss es also Mechanismen geben, die ein solches Verhalten verhindern.
Wie kann Double Spending verhindert werden?
Der zentralisierte Ansatz
Zentralisierte Lösungen sind wesentlich einfacher zu realisieren als dezentrale. Sie verfügen in der Regel über eine Kontrollinstanz, die das gesamte System verwaltet und die Ausgabe und Verteilung der Einheiten kontrolliert. Ein gutes Beispiel für eine zentralisierte Lösung für das Problem der doppelten Ausgaben ist das von Kryptograf David Chaum entwickelte eCash-System.
Die von Chaum in seinem Whitepaper Blind Signatures for Untraceable Payments aus dem Jahr 1982 beschriebenen Blindsignaturen können von einer Bank verwendet werden, um für Nutzer Digitalgeld zu schaffen, das Anonymität gewährleistet und Peer-to-Peer-Transaktionen ermöglicht.
Wenn in diesem Fall ein Nutzer – nennen wir ihn Dan – 100 Dollar in Digitalgeld erhalten möchte, muss er dies zuerst der Bank mitteilen. Vorausgesetzt, Dan hat den Betrag auf seinem Konto, wird er eine Zufallszahl generieren (oder bei kleineren Stückelungen mehrere). In diesem Beispiel erzeugt er fünf Zufallszahlen, denen jeweils ein Wert von 20 Dollar zugewiesen wird. Um die Bank daran zu hindern, diese Einheiten nachzuverfolgen, verschleiert Dan außerdem die Zufallszahlen, indem er jeder dieser Zahlen einen Blindfaktor hinzufügt.
Dann sendet er diese Informationen der Bank, die seinem Konto 100 Dollar belastet, und bestätigt mit seiner Signatur, dass jedes der fünf Datenelemente gegen 20 Dollar getauscht werden kann. Dan kann nun das von der Bank ausgegebene Geld verwenden. Er besucht Erins Restaurant gibt dort 40 Dollar für eine Mahlzeit aus.
Dan kann den Blindfaktor entfernen, um die mit jedem digitalen „Geldschein“ verbundene Zufallszahl offenzulegen, die als eindeutige Kennung für jede Einheit dient (ähnlich wie eine Seriennummer). Zwei davon verrät er Erin, die die digitalen Geldscheine nun sofort bei der Bank umtauschen muss, bevor sie Dan möglicherweise bei einem anderen Anbieter ausgibt. Die Bank prüft, ob die Unterschriften gültig sind, und wenn alles korrekt ist, schreibt sie Erins Konto 40 Dollar gut.
Die verwendeten Scheine sind nun im Wesentlichen „verbrannt“, und es müssen mehr ausgestellt werden, wenn Erin ihren neuen Saldo auf die gleiche Weise ausgeben will.
Das eCash-System von Chaum könnte für private Überweisungen durchaus nützlich sein, aber es scheitert an seiner Resilienz, weil die Bank eine zentrale Schwachstelle ist. Ein ausgegebener Schein ist an sich nichts wert, da sein Wert alleine von der Bereitschaft der Bank abhängt, ihn in Dollar umzutauschen. Die Kunden sind der Bank ausgeliefert und müssen sich auf deren guten Willen verlassen, damit das Geldsystem funktioniert. Genau dieses Problem sollen Kryptowährungen lösen.
Der dezentralisierte Ansatz
Es ist eine größere Herausforderung, sicherzustellen, dass die Mittel in einem Ökosystem ohne Kontrollinstanz nicht doppelt ausgegeben werden können. Gleichstarke Teilnehmer müssen sich anhand einer Reihe von Regeln koordinieren, die Betrug verhindern und alle Nutzer zu ehrlichem Handeln anregen.
Die größte Innovation im Bitcoin-Whitepaper war eine Lösung für das Problem der doppelten Ausgaben. Obwohl es nicht ausdrücklich erwähnt wird, schlug Satoshi die Datenstruktur vor, die heute gemeinhin als Blockchain bekannt ist.
Eine Blockchain ist eigentlich nichts anderes als eine Datenbank mit einigen einzigartigen Eigenschaften. Die Teilnehmer im Netzwerk (sogenannte Knoten) betreiben eine spezielle Software, die es ihnen erlaubt, ihre Kopie der Datenbank mit ihren Peers zu synchronisieren. Auf diese Weise kann das gesamte Netzwerk den Transaktionsverlauf überprüfen, der bis zum Genesis-Block zurückreicht. Da die Blockchain öffentlich einsehbar ist, können betrügerische Aktivitäten wie Double Spending-Versuche leicht identifiziert und verhindert werden.
Wenn ein Nutzer eine Transaktion sendet, wird diese nicht sofort zur Blockchain hinzugefügt, sondern muss zuerst durch Mining in einen Block aufgenommen werden. Daher sollte der Empfänger die Transaktion erst dann als gültig betrachten, nachdem ihr Block an die Blockchain angehängt wurde. Andernfalls riskiert er den Verlust der Mittel, da der Absender dieselben Coins anderswo ausgeben könnte.
Sobald die Transaktion bestätigt ist, können die Coins nicht mehr doppelt ausgegeben werden, da die Eigentumsrechte an einen neuen Nutzer übertragen wurden – und das gesamte Netzwerk kann dies überprüfen. Aus diesem Grund wird häufig empfohlen, mehrere Bestätigungen abzuwarten, bevor eine Zahlung als gültig angenommen wird. Mit jedem zusätzlich hinzugefügten Block erhöht sich der Aufwand für das Ändern oder Neuschreiben des Blocks mit dieser Zahlung (Stichwort: 51%-Angriff) drastisch.
Kommen wir noch einmal auf vorherige Beispiel zurück. Dan besucht Eris Restaurant erneut und bemerkt diesmal einen Aufkleber am Fenster, auf dem „Wir akzeptieren Bitcoin“ steht. Ihm hat das Essen vom letzten Mal geschmeckt, also bestellt er es noch einmal. Es kostet ihn 0,005 BTC.
Erin gibt ihm eine öffentliche Adresse an, an die er den Betrag senden soll. Dan führt die Transaktion aus. Es handelt sich im Wesentlichen um eine signierte Nachricht, die besagt, dass die 0,005 BTC, die sich im Besitz von Dan befanden, nun in Erins Besitz sind. Ohne zu sehr ins Detail zu gehen, kann jeder, dem Dans signierte Transaktion vorgelegt wird, bestätigen, dass Dan tatsächlich im Besitz der Coins war und daher die Befugnis hatte, sie auszugeben.
Wie bereits erwähnt, ist die Transaktion jedoch nur gültig, wenn der Block, in dem sie enthalten ist, auch bestätigt wird. Eine unbestätigte Transaktionen ist mit den 40 Dollar in eCash aus dem vorherigen Beispiel vergleichbar, bevor sie bei der Bank in physisches Geld getauscht werden: der Sender kann sie woanders ein zweites Mal ausgeben. Es wird also empfohlen, dass Erin mindestens 6 Blockbestätigungen (etwa eine Stunde) abwartet, bevor sie Dans Zahlung akzeptiert.
Double Spending bei Bitcoin
Bitcoin wurde mit Sorgfalt entwickelt, um Double Spending-Angriffen vorzubeugen, zumindest wenn das Protokoll erwartungsgemäß verwendet wird. Nachdem ein Block mit einer Transaktion einmal bestätigt worden ist, gibt es für den Sender keine einfache Möglichkeit, die Transaktion rückgängig zu machen. Dazu müsste er die Blockchain „rückgängig machen“, was ein unrealistisches Maß an Hashing-Power erfordern würde.
Es gibt jedoch Double Spending-Angreifer, die es spezifisch auf Nutzer abgesehen haben, die unbestätigte Transaktionen akzeptieren. Bei Verkäufen von geringem Wert möchte ein Händler möglicherweise nicht darauf warten, bis die entsprechenden Transaktionen in einen Block aufgenommen werden. Ein vielbesuchtes Fast Food-Restaurant kann es sich wahrscheinlich nicht leisten, bei jedem Verkauf auf die Abwicklung im Netzwerk zu warten. Wenn ein Geschäft also „Sofortzahlungen“ akzeptiert, wird es anfällig für Double Spending-Angriffe. Jemand könnte einen Burger bestellen, ihn bezahlen und dann sofort dieselben Mittel an seine eigene Adresse schicken. Wählt dieser Betrüger nun für die zweite Transaktion eine höhere Gebühr, als für die erste fällig ist, wird diese neue Transaktion wahrscheinlich zuerst bestätigt und damit die erste ungültig.
Es gibt drei beliebte Methoden zur Tätigung von Doppelausgaben:
51% Angriffe: Einer einzelnen Person oder Organisation gelingt es, mehr als 50% der Hash-Rate zu kontrollieren, was es ihr ermöglicht, Transaktionen auszuschließen oder deren Reihenfolge zu ändern. Ein solcher Angriff ist bei Bitcoin höchst unwahrscheinlich, ist aber bei anderen Netzwerken schon vorgekommen.
Konkurrenz-Angriffe (Race-Attacks): Zwei konkurrierende Transaktionen werden nacheinander gesendet, wobei dieselben Mittel verwendet werden – bestätigt werden kann aber nur eine Transaktion. Das Ziel des Angreifers ist es, die Transaktion mit der Zahlung an einen Dritten zu annullieren, indem er sicherstellt, dass nur die Transaktion validiert wird, die ihm zugutekommt (er könnte z.B. die Mittel an eine von ihm kontrollierte Adresse senden). Bei Konkurrenz-Angriffen bleibt dem Empfänger nichts anderes übrig, als eine unbestätigte Transaktion als Zahlung zu akzeptieren.
Finney-Angriffe: Ein Miner nimmt eine Transaktion, z.B. für eine Zahlung, in einen Pre-Mining-Block auf, ohne diesen sofort im Netzwerk weiterzuleiten. Stattdessen gibt er dieselben Coins im Rahmen einer anderen Transaktion aus und verbreitet erst dann seinen zuvor erstellten Block, was zur Ungültigkeit der ersten Transaktion führen kann. Finney-Angriffe erfordern eine bestimmte Abfolge von Ereignissen und dass der Empfänger nicht-bestätigte Transaktionen akzeptiert.
Wie wir sehen, wird ein Händler, der auf Blockbestätigungen wartet, das Risiko, Opfer eines Double-Spending-Angriffs zu werden, erheblich verringern.
Zusammenfassung
Double Spending erlaubt es einem Benutzer, ein elektronisches Geldsystem zu manipulieren, um einen finanziellen Gewinn zu erzielen, indem er die gleichen Geldbeträge mehr als einmal verwendet. Traditionell stand dem Fortschritt in diesem Bereich ein Mangel an angemessenen Lösungen für das Problem im Wege.
Glücklicherweise boten zunächst Blindsignaturen eine interessante Lösung für zentralisierte Finanzanwendungen. Später legte die Schaffung von Proof of Work-Mechanismen und der Blockchain-Technologie den Grundstein für Bitcoin als eine effektive Form von dezentralem Digitalgeld, was wiederum Tausende von anderen Kryptowährungsprojekte inspirierte.