Letztes Jahr schrieb ich hier über 5 Ideen über Bitcoin, und das scheint der erste Artikel über Bitcoin zu sein, heute möchte ich über die Bitcoin-Vereinbarung sprechen.
Dieser Artikel ist eine Übersetzung von Michael Nielsen’s Artikel über das Bitcoin-Protokoll, der der Übersetzer für den klarsten Artikel über Bitcoin hält. Michael Nielsen ist ein Pionier-Wissenschaftler, Autor und Programmierer, der sich mit Quantenrechnen beschäftigt. Für die Details siehe seine eigene Einführung. Dieser Artikel wurde übersetzt, weil der Übersetzer der Meinung war, dass der Artikel über Bitcoin und die Diskussion viele, viele Unterstützer und viele Gegner haben.
Ich würde es helfen, den Artikel zu kondensieren und es so schnell wie möglich weniger promotional zu machen. Nur Leute wissen zu lassen, was es ist, wo es in den elektronischen Geldraum passt, nicht zu versuchen, sie zu überzeugen, dass es gut ist.
Es gibt Tausende von Artikeln, die versuchen, Bitcoin, eine Online-Peer-to-Peer-Währung, zu erklären. Die meisten von ihnen haben nur einen Blick auf die zugrunde liegenden Protokolle und lassen viele Details aus. Selbst die tiefgründigen Artikel sind an wichtigen Stellen verstopft.
Es ist schwierig, die Abmachung zu verstehen, weil man Bitcoin als eine Selbstverständlichkeit betrachtet und darüber nachdenkt, wie man mit anderen Spekulationen Geld verdienen kann, ob es eine Blase ist, ob Bitcoin das Ende der Steuern bedeutet, usw. Das ist zwar lustig, aber es schränkt das Verständnis stark ein. Das Verständnis der Abmachung von Bitcoin selbst öffnet andere Möglichkeiten, die nicht erreichbar sind.
Ich werde Bitcoin-Skripte und Smart Contracts in einem späteren Artikel erklären. In diesem Artikel werde ich mich auf die spezifischen Details des Bitcoin-Protokolls konzentrieren. Um diesen Artikel zu verstehen, müssen Sie sich mit dem öffentlichen Schlüssel und den damit verbundenen digitalen Signaturen vertraut machen.
Bitcoin basiert auf Kryptographie, was Sie vielleicht überraschen könnte, aber ist es eine Art Währung? Ist es eine Art, geheime Nachrichten zu senden? Tatsächlich geht es bei den meisten Problemen, die Bitcoin lösen will, um die Sicherung von Transaktionen, um sicherzustellen, dass Menschen nicht stehlen können oder sich als andere Menschen ausweisen können. In der materiellen Welt, die aus Atomen besteht, gewährleisten wir Sicherheit durch Schlösser, Unterschriften, Banksafes usw. In der Informationswelt gewährleisten wir Sicherheit durch Kryptographie.
Die Strategie in diesem Artikel ist, Bitcoin Stufe für Stufe aufzubauen. Wir beginnen mit einer sehr einfachen digitalen Währung, die wir vorläufig Infocoin-Stau nennen, um sie von Bitcoin zu unterscheiden. Natürlich wird unsere erste Version von Infocoin viele Schwächen haben, also werden wir mehrere Generationen durchlaufen, bei denen jeweils ein oder zwei neue Konzepte eingeführt werden. Nach einigen Generationen haben wir ein vollständiges Bitcoin-Protokoll.
Diese Methode ist etwas langsamer als die direkte Erklärung von Bitcoin. Aber selbst wenn Sie einen Blick darauf werfen, wie Bitcoin funktioniert, ist es schwierig zu verstehen, warum Bitcoin so entworfen wurde. Die langsamere, schrittweise, synthetische Erklärung hat den Vorteil, dass Sie ein klareres Verständnis für jedes Element von Bitcoin erhalten.
Zum Schluss sollte ich sagen, dass ich relativ neu in der Bitcoin-Welt bin. Ich habe 2011 nur ein wenig Aufmerksamkeit geschenkt, aber ich habe mich erst Anfang 2013 ernsthaft mit den Details beschäftigt.
Auf der Oberfläche klingt eine digitale Währung unmöglich. Angenommen, eine Person, die wir Alice nennen, hat eine Reihe von digitalen Währungen, die sie ausgeben möchte. Wenn Alice eine Zeichenfolge als Geld verwenden kann, wie können wir verhindern, dass sie die gleiche Zeichenfolge wiederholt verwendet?
Das sind nur zwei von vielen Problemen, die mit Informationen als Geld zu lösen sind. In der ersten Version von Infocoin haben wir uns überlegt, wie Alice eine Zeichenfolge als Geld anbieten kann und wie sie sich vor Fälschungen schützen kann. Angenommen, Alice möchte eine Infocoin an eine andere Person weitergeben.
Es ist nicht besonders auffällig, aber es hat einige Vorteile. Jeder in der Welt kann Alice’s öffentlichen Schlüssel verwenden, um zu verifizieren, dass Alice wirklich die Person ist, die unterschrieben hat. Niemand sonst kann die Signatur erzeugen (die Signatur kann nur aus dem privaten Schlüssel erzeugt werden, den Alice besitzt, und zwar die oben erwähnte digitale Signatur), so dass Alice nicht mit Bedauern sagen kann, nein, ich habe Bob den Infocoin nicht gegeben.
Ich habe noch nicht gesagt, was das Geld in diesem Protokoll ist. Es ist klar: Das Geld ist eigentlich die Nachricht selbst. Das heißt, die Zeichen, die die Generation unterzeichnet hat, repräsentieren die Zeichen, die meine Alice Bob für eine Infocoin geben will. Das spätere Protokoll wird in dieser Hinsicht ähnlich sein, dass alle digitalen Währungen nur immer detailliertere Nachrichtenzeichen sind.
Das Problem mit unserer ersten Version von Infocoin ist, dass Alice Bob immer wieder die gleiche, unterschriebene Nachricht schicken kann. Angenommen, Bob erhält 10 solcher Nachrichten. Was ist das, Alice gibt Bob 10 verschiedene Infocoins? Oder Alice gibt Bob eine Infocoin und wiederholt die Nachricht versehentlich? Oder will sie Bob dazu bringen, zu glauben, dass sie ihm 10 Infocoins gegeben hat, während die Nachricht, die tatsächlich an die Außenwelt gesendet wird, beweist, dass sie ihm nur eine Infocoin gegeben hat?
Wir wollen, dass infocoin eine einzigartige Identität hat. Es braucht ein Label oder eine Seriennummer. Alice kann in der Nachricht die Infocoin-Einheit mit der Seriennummer 8740348 unterzeichnen.
Um dieses System zu ermöglichen, müssen wir eine serielle Quelle haben, die vertrauenswürdig ist. Eine Möglichkeit, diese zu erzeugen, ist die Einrichtung einer Bank, die die Seriennummern für Infocoins erzeugt, die Aufzeichnungen darüber erstellt, wer welche Infocoins besitzt, und die Authentizität der Transaktionen überprüft.
Genauer gesagt: Nehmen wir an, Alice geht zu einer Bank und sagt: “Ich möchte eine Infocoin aus meinem Konto nehmen”. Die Bank nimmt eine Infocoin aus ihrem Konto ab und gibt ihr eine neue, nie verwendete Seriennummer, also 1234567. Als Alice dann eine Infocoin an Bob senden will, unterschreibt sie diese neue Nachricht: “Alice will Bob eine Infocoin mit der Seriennummer 1234567 geben”. Bob nimmt die Infocoin jedoch nicht nur entgegen, sondern kontaktiert die Bank, um zwei Dinge zu bestätigen: Erstens, die Infocoin mit der Seriennummer 1234567 gehört Alice.
Diese Lösung hier oben sieht sehr potenziell aus. Aber wir könnten etwas noch Ehrgeizigeres tun. Wir könnten die Banken aus diesem Protokoll entfernen. Das ändert die Eigenschaften der Währung selbst erheblich.
Die Methode besteht darin, dass jeder als Bank zusammenarbeitet. Insbesondere nehmen wir an, dass jeder, der Infocoin verwendet, eine vollständige Aufzeichnung darüber aufbewahrt, welcher Infocoin welchem gehört. Sie können sich das als eine gemeinsame, öffentliche Buchführung vorstellen, in der alle Transaktionen von Infocoin aufgezeichnet sind.
Nun nehmen wir an, dass Alice Bob einen Infocoin übergibt. Sie schreibt eine Nachricht an mich. Alice schreibt Bob eine Infocoin-Nachricht mit der laufenden Nummer 1234567 zu.
Wir haben immer noch die Frage, woher die Seriennummer des Pumps stammt, aber das ist eigentlich leicht zu lösen, also erkläre ich später. Noch schwieriger ist es, dass das Protokoll Alice erlaubt, ihre Infocoin zu bezahlen. Sie kann eine unterschriebene Nachricht veröffentlichen, dass Alice Bob eine Infocoin mit der Seriennummer 1234567 geben will, und gleichzeitig kann sie eine unterschriebene Nachricht veröffentlichen, dass Alice Charlie eine Infocoin mit der Seriennummer 1234567 geben will. Bob und Charlie haben beide ihre eigene Blockchain verwendet, um zu überprüfen, ob die Infocoin tatsächlich von Alice stammt.
Auf den ersten Blick scheint es schwierig zu sein, diese Art von Doppel-Ausgaben zu machen. Denn wenn Alice zuerst Bob und dann alle anderen (einschließlich Charlie) eine Nachricht schickt, werden alle anderen ihre Blockchain aktualisieren. Charlie wird nicht von Alice betrogen. Doppel-Ausgaben scheinen also nur für kurze Zeit möglich zu sein.
Die einfachste Lösung ist, dass Bob die Transaktion nicht alleine überprüfen sollte, wenn Alice ihm Infocoin schickt. Er sollte diese Transaktion im gesamten Infocoin-Netzwerk veröffentlichen, damit andere helfen zu beurteilen, ob die Transaktion legitim ist. Wenn sie gemeinsam entscheiden, dass die Transaktion legitim ist, kann Bob die Infocoin annehmen, und alle können ihre Blockchain aktualisieren.
Angenommen, Alice will Bob einen Infocoin geben. Wie zuvor, gibt sie Bob eine Nachricht mit der Signatur eines Infocoin-Kutsches mit der Seriennummer 1234567 und wird die Nachricht mit dem Namen Bob unterzeichnen. Wie zuvor, Bob überprüft mit seiner eigenen Blockchain, ob die Münze tatsächlich Alice gehört.
Es gibt noch viele unsichere Faktoren in dieser Vereinbarung. Zum Beispiel, was bedeutet es, wenn genug Leute diese Nachricht veröffentlichen, wie viele Personen sind genug? Es kann nicht das gesamte Infocoin-Netzwerk sein, weil wir nicht wissen, wer im Infocoin-Netzwerk ist.
Angenommen, Alice will die Doppelzähne in der oben genannten Vereinbarung haben, muss er das gesamte Infocoin-Netzwerk beherrschen. Angenommen, sie verwendet ein automatisiertes System, um viele Konten mit verschiedenen Identitäten auf dem Infocoin-Netzwerk zu erstellen, angeblich 1 Milliarde. Wie zuvor versuchte sie, die Doppelzähne zu erstellen, um die gleichen Infocoins an Bob und Charlie zu geben, aber als Bob und Charlie das Infocoin-Netzwerk befragten, um die Transaktion zu überprüfen, überflutete Alice das gesamte Netzwerk, erzählte Bob und Charlie, dass sie durch die Transaktion gehen könnten und möglicherweise einen oder beide von ihnen annehmen könnten.
Es gibt eine schlaue Methode, die Proof-of-work-Methode genannt wird. Die Methode ist nicht intuitiv und erfordert die Kombination zweier Konzepte, 1) die künstliche Überprüfung des Transaktionsprozesses kostet einen hohen Rechenpreis; 2) die Belohnung für die Hilfe bei der Überprüfung des Transaktions.
Das ist der Kern des Arbeitsnachweises. Aber um wirklich zu verstehen, was ein Arbeitsnachweis ist, müssen wir in noch spezifischere Details gehen.
Angenommen, Alice gibt eine Nachricht an das gesamte Netzwerk weiter, oder ich gebe Bob eine Infocoin mit der laufenden Nummer 1234567. Wenn die anderen Leute im Netzwerk die Nachricht hören, fügt jeder diese in eine Warteschlange von Transaktionen ein, die noch nicht von dem gesamten Netzwerk übernommen wurden. Zum Beispiel könnte ein Mensch namens David im Netzwerk die folgende Warteschlange haben:

David überprüft seine eigene Blockchain und sieht, dass die oben genannten Transaktionen berechtigt sind. Er will helfen, diese Bestätigungsnachricht im gesamten Netzwerk zu veröffentlichen.
Um das zu erklären, verwenden wir eine festgelegte Hash-Funktion, die jeder auf dem Netzwerk kennt, um sie in das Protokoll selbst einzubeziehen. Bitcoin verwendet eine bekannte SHA-256 Hash-Funktion, aber jede kryptologische Hash-Funktion kann hier verwendet werden. Wir geben Davids dieser Gruppe eine Transaktionsmarke, die L-Funktion, um sie später zu referenzieren.

Die Aufgabe, die David lösen wird, besteht darin, eine zufällige Zahl x zu finden, die, wenn wir diese x hinter L hinzufügen und diese Kombination haschen, mit mehreren Nullen beginnt. Die Schwierigkeit dieses Problems kann durch Anpassung der Zahlen, die mit Nullen beginnen, angepasst werden. Für eine einfache Rechenarbeit ist es möglich, dass die Rechen nur mit 3 oder 4 Nullen beginnt, für eine schwierige Rechenarbeit sind möglicherweise mehr Nullen erforderlich, z. B. 15 aufeinanderfolgende Nullen.
Und wir können sehen, dass es nicht funktioniert, wenn x = 1.

Und dann versuchen wir es mit x = 2, dann versuchen wir es mit x = 3, 4, 5… und dann wissen wir, dass wir am Ende, wenn wir x = 4350 finden, dann haben wir das Ergebnis, dass x = 4350 ist.

Diese Zufallszahl x gibt uns ein Ergebnis von vier Hashs, die mit Null beginnen. Das reicht aus, um eine einfache Aufgabe zu lösen, bei der die Funktion von Zitrone bewiesen wird.
Das Problem wird durch die Tatsache erschwert, dass das Ergebnis der Code-Hash-Funktion immer zufällig ist. Jede kleinste Änderung der Eingabe wird das Ergebnis der gesamten Hash-Funktion völlig verändern, so dass es schwierig ist, sie vorherzusagen. Wenn wir also herausgeben müssen, dass die Ausgabe mit 10 0er beginnt, dann wird David durchschnittlich 1610 ≈ 1012 verschiedene x benötigen, um den richtigen Wert zu finden.
Offensichtlich können wir die Schwierigkeit der Proof-of-Work-Probleme kontrollieren, indem wir festlegen, wie viele Nullen benötigt werden. In der Tat kann die Bitcoin-Vereinbarung die Schwierigkeit des Problems besser kontrollieren, indem sie die oben genannten Proof-of-Work-Probleme ein wenig modifiziert. Es wird nicht mehr festgesetzt, wie viele Anfangs-Nullen benötigt werden, sondern die Hash-Ausgabe des Blocks wird kleiner als oder gleich einem Zielwert festgelegt, der automatisch eingestellt wird, um sicherzustellen, dass jeder Block von Bitcoin im Durchschnitt 10 Minuten dauert.
Nun, nehmen wir an, David hat Glück und hat eine passende x ((nonce) gefunden, dann sind wir zufrieden mit ihm! ((Er wird dafür belohnt, dass er diese Antwort gefunden hat)). Er wird veröffentlichen, dass er die Transaktionen innerhalb des Blocks als legitim bewiesen hat, und gleichzeitig die x-Werte veröffentlichen, die sie gefunden hat, so dass die anderen Teilnehmer des Infocoins die gültige Lösung für die Beweise für die Arbeit von x beweisen können.
Um die Arbeit zu beweisen, dass das Programm funktioniert, sollten die Teilnehmer des Netzwerks einen Anreiz benötigen, um die Transaktionen zu überprüfen. Ohne einen Anreiz würde niemand bereit sein, seine eigenen Rechenkräfte auszugeben, um die Transaktionen zu überprüfen.
In der Bitcoin-Vereinbarung wird dieser Prozess der Verifizierung als Mining-Prozess bezeichnet. Der erfolgreiche Verifizierer jedes Transaktionsblocks erhält Bitcoins als Belohnung. Zunächst wurden 50 Bitcoins belohnt. Aber für 210.000 verifizierte Blöcke (etwa alle 4 Jahre) wird die Belohnung halbiert. Dies ist bisher nur einmal geschehen, d. h. die Belohnung für die Verifizierung eines Blocks beträgt 25 Bitcoins.
Man kann den Proof-of-Work als einen Prozess betrachten, bei dem ein Wettbewerb stattfindet. Jeder Teilnehmer verbringt einen Teil der Computerleistung. Die Chance, dass ein Miner gewinnt, ist ungefähr proportional zur Größe der Computerleistung, die er kontrolliert, und der Rechenleistung des gesamten Netzwerks.
Natürlich haben wir nicht genug Vertrauen, um die Blockchain als Währung zu nutzen, auch wenn unehrliche Miner nur eine geringe Chance haben, die gesamte Blockchain zu zerstören. Insbesondere haben wir das Problem der Doppelblumen noch nicht endgültig gelöst.
Ich analysiere das Problem der Doppelblume gleich, aber vorher möchte ich einen wichtigen Detail in das Konzept von Infocoin einfügen. Idealerweise möchten wir, dass das Infocoin-Netzwerk die Reihenfolge der Transaktionen vereinheitlicht. Wenn wir keine einheitliche Reihenfolge haben, ist es nicht sehr klar, wer zu welchem Zeitpunkt welches Infocoin hat.

In einigen Fällen gibt es Abzweigungen auf einer Blockchain. Dies liegt daran, dass manchmal zwei Miner fast gleichzeitig Transaktionen für einen Block verifizieren. Sie werden gleichzeitig im Netzwerk veröffentlicht. Einige Leute aktualisieren ihre Blockchain mit einer Methode, andere mit einer anderen Methode.

Das führt zu einer Situation, die wir vermeiden wollen: Die Reihenfolge der Transaktionen ist unklar, und es ist nicht klar, wer welche Infocoin besitzt. Zum Glück gibt es eine einfache Methode, um die Zweige zu entfernen.
Nehmen wir an, wir haben eine Abzweigung, und einige Miner erhalten Block A und andere erhalten Block B. Die Miner, die Block A erhalten haben, werden weiterhin auf ihrer Abzweigung arbeiten, während die anderen auf der Abzweigung von Block B arbeiten.

Nachdem sie diese Nachricht erhalten haben, werden die Leute in der Branche A bemerken, dass die Branche B jetzt die längste ist, und sie werden in die Branche B übertragen. Die Arbeit in der Branche A wird schnell beendet, so dass jeder auf der gleichen Blockchain arbeitet.
Genauso, wenn der Miner auf dem Zweig A zuerst den nächsten Block erobert, dann wird der Mann auf dem Zweig B aufhören und zu Zweig A wechseln.
Was auch immer das Ergebnis ist, dieser Prozess garantiert, dass die Blockchain eine einheitliche Reihenfolge hat. In Bitcoin kann eine Transaktion nicht als Bestätigung gelten, bis 1) sie in dem Block mit der längsten Verzweigung existiert und 2) mindestens 5 Bestätigte Blöcke hinter ihr verifiziert sind. In diesem Fall sagen wir, dass die Transaktion 6 Bestätigungsblöcke hat.
Nun, da wir die Zeitreihenfolge verstehen, gehen wir zurück und denken darüber nach, was passiert, wenn ein unehrlicher Mensch eine doppelte Ausgabe will. Angenommen, Alice will Bob und Charlie gleichzeitig die gleiche Transaktion geben. Eine Möglichkeit ist, dass sie einen Block mit zwei Transaktionen gleichzeitig verifiziert. Angenommen, sie hat ein Prozent der Rechenleistung, dann ist es möglich, dass sie relativ glücklich ist, den Block zu verifizieren.
Eine andere Möglichkeit ist jedoch, dass sie versucht, zwei Transaktionen separat zu veröffentlichen. Sie könnte einen Transaktionsteil für einen Teil der Miner und einen anderen Teil für einen anderen Teil der Miner veröffentlichen, und sie möchte, dass beide Transaktionen verifiziert werden.
Eine andere Möglichkeit ist, dass Alice = Bob, also Alice versucht, einen Coin an Charlie zu geben, während sie den Coin an sich selbst gibt, da sie selbst mehrere Accounts haben kann. In diesem Fall wartet Alice darauf, dass Charlie den Infocoin annimmt, das heißt, nachdem der Handel in der längsten Blockchain etwa 6 Mal bestätigt wurde. Sie versucht dann, die andere Blockbranche zu lösen, die den Handel besitzt, den sie an sich selbst sendet.

Leider ist Alice zu diesem Zeitpunkt bereits 6 Schritte hinter der längsten Blockchain zurück. Es ist ihr schwer, mit dem längsten Zweig zu kommen. Die anderen Miner helfen ihr nicht, weil sie alle auf dem längsten Zweig arbeiten müssen, um belohnt zu werden. Es sei denn, Alice kann schneller zusammenkommen als jeder andere im Netzwerk, wenn sie einen Beweis der Arbeit löst (das heißt, sie hat wahrscheinlich mehr als 50% der Rechenleistung des gesamten Netzwerks).
Natürlich ist das nicht sehr streng, dass Alice sicherlich nicht doppelt aussehen kann. Das ist nur eine vernünftige Schlussfolgerung. Die Bitcoin-Whitepaper-Originalversion führt keine strenge Sicherheitsanalyse durch, sondern nur eine informelle Schlussfolgerung, die mir ähnelt.
Michael, der Autor des ersten Teils, hat das Konzept von Infocoin übergangen und die Bitcoin-Vereinbarung im Detail mit Blick auf den Bitcoin-Handel dargestellt. Wenn Sie das hier sehen, können Sie sich auf meinen Weibo und meinen Blog konzentrieren.
Wenn es hilfreich ist, schicken Sie einen Tip an Michael Nielsen, den Autor dieses Artikels, 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ, den Sie auch auf Twitter folgen können. Oder folgen Sie dem ersten Kapitel seines bevorstehenden Buches über Neural Networks and Deep Learning.
Das ist ein Artikel von Jean-Luc Godard.