12 Juni 2021 14:04

Wie verhindert eine Blockkette doppelte Ausgaben von Bitcoins?

Eines der Hauptanliegen eines jeden Kryptowährungsentwicklers ist das Problem der Doppelausgaben. Dies bezieht sich auf die Inzidenz, dass eine Person einen Saldo dieser Kryptowährung mehr als einmal ausgibt, was effektiv eine Diskrepanz zwischen den Ausgabenaufzeichnungen und der verfügbaren Menge dieser Kryptowährung sowie der Art und Weise ihrer Verteilung verursacht.

Das Problem der doppelten Ausgaben ist ein Problem, das Bargeld nicht hat. Wenn Sie für ein Sandwich mit einer 10-Dollar-Rechnung bezahlen und diese Rechnung dem Hersteller des Sandwichs übergeben, können Sie sich nicht umdrehen und die gleichen 10 Dollar woanders ausgeben. Eine Transaktion mit einer digitalen Währung wie Bitcoin erfolgt jedoch vollständig digital. Dies bedeutet, dass es möglich ist, die Transaktionsdetails zu kopieren und erneut zu übertragen, sodass dieselbe BTC mehrmals von einem einzigen Eigentümer ausgegeben werden könnte. Im Folgenden untersuchen wir, wie Kryptowährungsentwickler sichergestellt haben, dass keine Doppelausgaben erfolgen können.

Die zentralen Thesen

  • Ein technisches Problem, das bei der Idee einer digitalen Währung auftritt, ist die Möglichkeit für jemanden, das digitale Geld zu duplizieren und gleichzeitig an zwei oder mehr Orten auszugeben.
  • Dieses „Double-Spend“-Problem wird in Blockchain-basierten Kryptowährungen wie Bitcoin durch einen Konsensmechanismus, der als Proof-of-Work (PoW) bekannt ist, verhindert.
  • Dieses PoW wird von einem dezentralisierten Netzwerk von „Minern“ durchgeführt, die nicht nur die Treue der vergangenen Transaktionen im Ledger der Blockchain sicherstellen, sondern auch Doppelausgaben erkennen und verhindern.

Die Blockchain verstehen

Die Blockchain, die einer digitalen Währung wie Bitcoin zugrunde liegt, ist allein nicht in der Lage, Doppelausgaben zu verhindern. Vielmehr werden alle verschiedenen Transaktionen mit der jeweiligen Kryptowährung in die Blockchain gebucht, wo sie separat verifiziert und durch einen Bestätigungsprozess geschützt werden. Bei Bitcoin und vielen anderen Kryptowährungen werden so bestätigte Transaktionen irreversibel; Sie werden öffentlich veröffentlicht und auf Dauer gepflegt.

Bitcoin war die erste große digitale Währung, die das Problem der doppelten Ausgaben löste. Dies geschah durch die Implementierung dieses Bestätigungsmechanismus und die Pflege eines gemeinsamen, universellen Ledger-Systems. Auf diese Weise speichert die Bitcoin-Blockchain Aufzeichnungen über mit Zeitstempeln versehene Transaktionen, die bis zur Gründung der Kryptowährung im Jahr 2009 zurückreichen.

In Bitcoin-Begriffen ist ein „ Block “ eine Datei mit dauerhaft aufgezeichneten Daten. Alle aktuellen Transaktionen werden in Blöcke geschrieben, ähnlich wie bei einem Aktientransaktions-Ledger an einer Börse. Alle paar Minuten werden dem Ledger Informationen aus Blöcken hinzugefügt; Alle Knoten im Netzwerk führen eine Kopie des Blockchain-Ledgers. Benutzer können in der Blockchain für Bitcoin navigieren und Transaktionen nur in Bezug auf die Menge überprüfen. Details über die Identität des Käufers und Verkäufers bei jeder Transaktion werden durch eine High-Level-Verschlüsselung geschützt, die auch das Ledger vor Manipulation durch externe Quellen schützt. Wenn das Blockchain-Ledger aktualisiert wird, werden auch alle Bitcoin-Geldbörsen aktualisiert.

Umgang mit Doppelausgaben

Stellen Sie sich vor, Sie haben 1 BTC und versuchen, es zweimal in zwei separaten Transaktionen auszugeben. Sie können dies versuchen, indem Sie dieselbe BTC an zwei separate Bitcoin-Wallet-Adressen senden. Beide Transaktionen gehen dann in den Pool der unbestätigten Transaktionen ein. Die erste Transaktion würde über den Bestätigungsmechanismus genehmigt und dann im nachfolgenden Block verifiziert. Die zweite Transaktion würde jedoch durch den Bestätigungsprozess als ungültig erkannt und nicht verifiziert. Werden beide Transaktionen gleichzeitig aus dem Pool zur Bestätigung gezogen, wird die Transaktion mit der höchsten Anzahl an Bestätigungen in die Blockchain aufgenommen, während die andere verworfen wird.

Damit wird zwar das Problem der doppelten Ausgaben effektiv bekämpft, es ist jedoch nicht ohne Probleme. Zum Beispiel würde der beabsichtigte Empfänger der zweiten (fehlgeschlagenen) Transaktion nicht an dem Scheitern der Transaktion selbst beteiligt sein, und dennoch würde diese Person nicht die erwartete Bitcoin erhalten. Viele Händler warten auf mindestens 6 Bestätigungen einer Transaktion (was bedeutet, dass nach der betreffenden Transaktion sechs aufeinanderfolgende Transaktionsblöcke zur Blockchain hinzugefügt wurden). Zu diesem Zeitpunkt kann der Händler sicher davon ausgehen, dass die Transaktion gültig ist.

Es gibt noch andere Sicherheitslücken in diesem System, die Angriffe mit doppelten Ausgaben ermöglichen könnten. Wenn ein Angreifer zum Beispiel irgendwie in der Lage ist, mindestens 51 % der Macht des Netzwerks zu kontrollieren, kann er doppelte Ausgaben begehen. Wenn ein Angreifer irgendwie in der Lage wäre, die Kontrolle über diese Rechenleistung zu erlangen, könnte er Transaktionen rückgängig machen und eine separate, private Blockchain erstellen. Das schnelle Wachstum von Bitcoin hat jedoch praktisch sichergestellt, dass diese Art von Angriff unmöglich ist.

Arbeitsnachweis & ‚Mining‘ erklärt

Kommen wir nun etwas technischer. Die Art und Weise, wie Benutzer Manipulationen wie den Versuch, doppelt auszugeben, in der Praxis erkennen, sind  Hashes, lange Zahlenfolgen, die als Arbeitsnachweis (PoW) dienen. Setzen Sie einen bestimmten Datensatz durch eine Hash-Funktion (Bitcoin verwendet SHA-256), und es wird immer nur ein Hash generiert. Aufgrund des „Lawineneffekts“ führt jedoch bereits eine geringfügige Änderung eines Teils der Originaldaten zu einem völlig unerkennbaren Hash. Unabhängig von der Größe des ursprünglichen Datensatzes hat der von einer bestimmten Funktion generierte Hash dieselbe Länge. Der Hash ist eine Einwegfunktion: Er kann nicht verwendet werden, um die Originaldaten zu erhalten, sondern nur um zu überprüfen, ob die Daten, die den Hash generiert haben, mit den Originaldaten übereinstimmen.

Für einen modernen Computer wäre es trivial, einen beliebigen Hash für eine Reihe von Bitcoin-Transaktionen zu generieren. Um den Prozess in „Arbeit“ zu verwandeln, legt das Bitcoin-Netzwerk einen gewissen „Schwierigkeitsgrad“ fest. Diese Einstellung wird so angepasst, dass etwa alle 10 Minuten ein neuer Block „ gemined “ wird – durch Generieren eines gültigen Hashs zur Blockchain hinzugefügt wird. Die Einstellungsschwierigkeit wird erreicht, indem ein  „Ziel“ für den Hash festgelegt wird : Je niedriger das Ziel, desto kleiner die Menge gültiger Hashs und desto schwieriger ist es, einen zu generieren. In der Praxis bedeutet dies einen Hash, der mit einer langen Folge von Nullen beginnt: Der Hash für Block #429818 ist zum Beispiel 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Dieser Block enthält 2.012 Transaktionen mit etwas mehr als 1.000 Bitcoin sowie den Header des vorherigen Blocks. Wenn ein Benutzer einen Transaktionsbetrag um 0,0001 Bitcoin ändert, wäre der resultierende Hash nicht wiederzuerkennen und das Netzwerk würde den Betrug ablehnen.

Da ein bestimmter Datensatz nur einen Hash generieren kann, wie stellen die Miner sicher, dass sie einen Hash unterhalb des Ziels generieren? Sie ändern die Eingabe, indem sie eine ganze Zahl hinzufügen, die als  Nonce  („einmal verwendete Zahl“) bezeichnet wird. Sobald ein gültiger Hash gefunden wurde, wird er an das Netzwerk gesendet und der Block wird der Blockchain hinzugefügt.

Bergbau ist ein kompetitiver Prozess, aber es ist eher eine Lotterie als ein Rennen. Im Durchschnitt erstellt jemand alle zehn Minuten einen akzeptablen Arbeitsnachweis, aber wer es sein wird, ist unklar. Miner bündeln sich, um ihre Chancen auf das Mining von Blöcken zu erhöhen, was Transaktionsgebühren und für eine begrenzte Zeit eine Belohnung für neu erstellte Bitcoins generiert.

Ein Arbeitsnachweis macht es äußerst schwierig, jeden Aspekt der Blockchain zu ändern, da eine solche Änderung ein erneutes Mining aller nachfolgenden Blöcke erfordern würde. Es macht es auch für einen Benutzer oder eine Gruppe von Benutzern schwierig, die Rechenleistung des Netzwerks zu monopolisieren, da die Maschinen und die Leistung, die zum Vervollständigen der Hash-Funktionen erforderlich sind, teuer sind.