Die Überprüfung, ob der gelieferte Hash mit dem vorliegenden letzten zusammenpasst, ist ein wesentlich einfacherer Rechen-vorgang, als das Minen an sich, sodass es „normale“ Computer leicht erledigen können. Dahinter steckt höchst effiziente Mathe-matik und dieser Umstand ist auch ein wesentliches Merkmal des Systems: Die Berechnung ist sehr schwierig und aufwendig, die Überprüfung sehr einfach und schnell.
Jeder Block wird also vom Miner an einen oder mehrere Nodes geliefert und diese senden den Block umgehend zu ihren jeweiligen Nachbarn, sodass nach kurzer Zeit alle Nodes und alle daran angeschlossenen Miner den neuen Block, nehmen wir einmal an, es sei der Block Nummer 10, kennen. Die Miner „ärgern" sich und stoppen die eigenen Bestrebungen, den Block 10 zu berechnen und beginnen umgehend mit Block 11.
Die Nodes hängen Block 10 an ihre Kette, die bisher mit Block 9 geendet hat, wenn er zu Block 9 passt und die Kette wird um einen Datenblock, mit den darin enthaltenen Transaktionen, verlängert. Technisch gesehen, sendet der Node den Block nicht automatisch weiter, sondern er wird von seinen Nachbarn gefragt, ob er einen neuen Block hat und der Node beantwortet diese Frage dann entsprechend und sendet den Block. Das ist für das Verständnis des Systems nicht relevant. Entscheidend ist nur, dass die neuen Blocks schnell im ganzen Netzwerk propagiert werden, damit die Miner nicht sinnlos an einem oder mehreren, bereits vorhandenen Blocks weiter rechnen.
Was passiert, wenn zwei Miner gleich schnell lösen?
Immer wieder kommt es allerdings vor, dass zwei Miner zum quasi gleichen Zeitpunkt einen Block lösen. Das kann nicht vermieden werden, denn alle Miner und alle Nodes sind ja völlig unabhängig voneinander. Jeder macht, was er will, sozusagen. Das ist ja auch der ganze Sinn in einem dezentralen Netzwerk, welches nicht mani-puliert werden kann. Einem Netzwerk, dass kein Mensch und kein anderer noch so schlau programmierter Computer kontrollieren kann.
An jeden Miner sind irgendwelche Nodes angeschlossen, die wiederum mit anderen Nodes kommunizieren. Dabei verbinden sich die Nodes mit den anderen Nodes, die sie am schnellsten erreichen. Das hängt davon ab, wie schnell die anderen Nodes mit dem Internet verbunden sind beziehungsweise ob sie gerade online sind und mit welcher Verbindungsqualität. Es ist wahrscheinlich, dass verschiedene Miner mit verschiedenen Nodes verbunden sind, die wiederum auch mit jeweils verschiedenen Nodes weiter verbun-den sind. Alleine deshalb schon, weil die Miner ja weltweit verteilt ist.
Deshalb kann es vorkommen, dass ein Teil des Netzwerks den Block 10 vom Miner A kennt und ein anderer Teil den Block 10 von Miner B. Miner B hat seine Berechnungen nämlich nur 17 Tau-sendstel Sekunden nach Miner A erfolgreich abgeschlossen. Es existieren also Block 10 A und Block 10 B.
Das wäre eine Katastrophe, weil die beiden Blocks ja unter-schiedliche Transaktionsdaten enthalten, die die Miner aus dem Transaktionspool genommen haben. In dem Block 10 A hat Alice 2 BTC and Bob gesendet, aber in Block 10 B ist diese Transaktion noch nicht berücksichtigt.
Streng genommen kann Alice nun also in dem Teil des Netzwerkes, welches den Block 10 B angenommen hat, ihre 2 BTC nochmals nutzen und an Carol überweisen. In dem B-Teil des Netzwerkes würde die Transaktion in dem folgenden Block 11 als gültig anerkannt werden. Damit hätte Alice ihre 2 BTC zweimal ausge-geben. Toll für Alice. Dumm gelaufen für entweder Bob oder Carol — eine weitere Problematik des digitalen Geldes, das Nakamoto erkannt und in seinem Ansatz gelöst hat.
Das sogenannte „Double Spending“-Problem
Double Spending bedeutet, dass man Geld zweimal ausgibt. Einmal aus seinen Guthaben und einmal, weil man es kann und weil es keiner merkt, dass man über gar kein Guthaben mehr verfügt, weil das Konto leer ist. Manche Experten schaffen es sogar zweimal Geld von einem leeren Konto zu überweisen. Richtig gute Betrüger sogar dreimal oder noch häufiger. Wie das geht?
Ganz einfach: Man schreibt Schecks aus und versendet diese durch die Republik. Der Empfänger, der den Scheck, den er erhalten hat, als erster einreicht und dessen Bank am schnellsten den Scheck gutschreibt, bekommt die Belohnung — nämlich die Gutschrift. Der zweite ist schon der erste Verlierer, denn das Konto des Scheckausstellers, früher auch als Scheckbetrüger bekannt, ist leer, der Scheck platzt und für den zweiten fallen zusätzlich auch noch Bankgebühren an. Das ist in Zeiten des Onlinebankings nicht mehr so einfach möglich. Die Menschen in den USA und in anderen Teilen der Welt zahlen aber immer noch sehr viel mit Schecks. Das ist traditionell die bevorzugte Zahlungsart und Schecks platzen so oft wie Luftballons in einer Nadelfabrik.
In der digitalen Welt und damit auch bei elektronischen Zahlungs-vorgängen, zählt die Double-Spending-Problematik zu den größten Herausforderungen, die den Fortschritt des digitalen Zahlungs-verkehrs aufhalten. Wie kann man sicherstellen, dass die Daten, die aus der einen Datei gelöscht sind, nicht nochmals versendet werden können? Wie leicht ist es, eine Datei zu kopieren und an Alice zu senden und dann noch eine Kopie an Bob, eine an Carol und eine an Dave und so weiter und so weiter?
Genau das wird doch zu jeder Sekunde mit Katzenvideos und Musikdateien gemacht. Soziale Netzwerke wie Facebook, Insta-gram und Twitter machen im Kern genau das und bringen so Menschen zusammen. Natürlich werden viele Daten widerrechtlich kopiert und verschickt. Musik wird raubkopiert, Filme schwarz kopiert und jeder tauscht elektronische Kopien von allem, was digitalisiert ist. Rechteinhaber erlebten und erleben eine dunkle Periode, in der alles, was digitalisiert werden kann, auch getauscht wird.
Es liegt im System selbst. Digitale Daten können kopiert und versendet werden. Auf Knopfdruck und per Mausklick. Nichts einfacher als das. Das ist das Problem bei digitalem Geld. Das ist das Double-Spending-Problem.
Nakamoto hat das Double-Spending-Problem mithilfe von Bitcoin gelöst
Natürlich bietet das Bitcoin-System auch dafür eine passgenaue Lösung. Es ist im System intrinsich vorgegeben, dass dieser Split, den man auch als „Fork“ (englisch „Gabel“) bezeichnet, automatisch aufgelöst wird.
Die Auflösung erfolgt umgehend mit dem Block 11, denn der passt, entweder bei 10 A oder bei 10 B nicht mehr. Warum?
Ganz einfach, der Miner, der Block 11 berechnet hat, kennt entweder 10 A oder 10 B. Sein Node hat ihn doch zuvor informiert und ihm entweder 10 A oder 10 B übermittelt, damit er damit beginnen kann, Block 11 zu berechnen. Er beginnt also Block 11 zusammenzurechnen, unter Berücksichtigung des Hashs von Block 10 und zwar entweder des Blocks 10 A oder eben 10 B — beide kann er nicht haben. Damit passt dann, bei erfolgreicher Berech-nung des richtigen Hash-Wertes, sein Block bei einem Teil der von den Nodes gespeicherten Blockchain und bei dem anderen Teil eben nicht.
Wenn er Block 11 auf Basis von 10 A berechnet hat, dann passt 11 A bei allen Nodes, die vorher 10 A hatten, aber nicht bei denjenigen, die 10 B gespeichert haben. Diese werden Block 11 A als ungültig zurückweisen und auf einen Block 11 warten, der mit ihrem gespeicherten Block 10 B kompatibel ist. Verwirrt? Man muss das einige Male durchdenken, dann wird es logisch und leicht nachvoll-ziehbar.
Jetzt ist auch das Rennen gestartet. Wenn ein Block 11 B kommt, dann wird dieser von den 10 B-Nodes angehängt und von den 10 A-Nodes abgelehnt. Zum einen, weil sie schon einen Block 11 haben, nämlich 11 A und zum zweiten, weil 11 B weder zu 10 A noch zu 11 A passt. Wie schnell kommt jetzt ein passender Block 12 ?
In immer seltener werdenden Fällen kommen tatsächlich ein 11 A und ein 11 B und dann ein 12 A, aber das ist schon sehr sehr selten, weil sich bei jedem Verteilvorgang potenziell immer mehr Nodes umentscheiden.
Читать дальше