Wie funktioniert das Bitcoin-Protokoll?

Schriftsteller:Kleine Träume, Erstellt: 2017-01-19 18:04:02, aktualisiert: 2017-01-19 18:11:24

Wie funktioniert das Bitcoin-Protokoll?

Ich habe hier im vergangenen Jahr fünf Ideen über Bitcoin geschrieben, und es scheint der erste Artikel über Bitcoin zu sein.

Dieser Artikel wurde von Michael Nielsen über den Bitcoin-Protokoll übersetzt, der der Meinung ist, dass er den klarsten Artikel über Bitcoin ist. Michael Nielsen ist ein Pionierwissenschaftler, Schriftsteller und Programmierer, der sich mit Quantenrechen beschäftigt. Die Details finden Sie in seiner eigenen Einführung. Der Artikel wurde übersetzt, weil der Übersetzer viele, viele unterstützende Argumente für den Bitcoin-Artikel und die Diskussion vertrat.

Ich habe nie versucht, andere zu überzeugen, sondern ich habe den Artikel online veröffentlicht, damit andere es selbst beurteilen können. Ich habe gesagt, dass es mir helfen würde, den Artikel zu kondensieren und ihn so schnell wie möglich weniger werbewirksam zu machen.

  • Hier ist der Originaltext:

    Tausende von Artikeln haben versucht, Bitcoin, eine Online-Peer-to-Peer-Währung, zu erklären. Die meisten Artikel haben viele Details über das zugrunde liegende Protokoll weggelassen. Selbst tiefgreifende Artikel sind an wichtigen Stellen verstopft.

    Ein tiefes Verständnis des Protokolls ist schwierig, weil es leicht ist, Bitcoin als gegeben zu betrachten und darüber nachzudenken, wie man damit spekuliert, ob es eine Blase ist, ob es das Ende der Steuern bedeutet usw. Das ist interessant zu denken, aber die Ideen beschränken dein Verständnis ernsthaft. Ein Verständnis des Protokolls selbst wird andere Möglichkeiten eröffnen, die nicht erreichbar sind. Zum Beispiel, das Protokoll ist die Grundlage der in Bitcoin integrierten Skriptsprache, die es dir ermöglicht, mit Bitcoin neue Finanzinstrumente wie Smart Contracts zu erstellen.

    Ich werde die 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 wahrscheinlich mit dem Public-Key-Passwort und der damit verbundenen digitalen Signatur vertraut sein.

    Die Basis von Bitcoin ist Kryptographie, was Sie vielleicht überraschen wird. Ist Bitcoin nicht eine Währung? Ist es eine Möglichkeit, geheime Informationen zu senden? In der Tat geht es bei Bitcoin hauptsächlich darum, die Transaktionen zu schützen, um sicherzustellen, dass Menschen nicht etwas von anderen stehlen oder sich als andere darstellen können. In der physischen Welt, die aus Atomen besteht, sichern wir uns mit Schlössern, Signaturen, Bankversicherungen usw. In der Informationswelt sichern wir uns mit Kryptographie.

    Die Strategie in diesem Artikel ist ein Layer-by-Layer-Aufbau von Bitcoin. Wir werden mit einer sehr einfachen digitalen Währung beginnen, die wir vorläufig Infocoin-Klammern nennen, um sie von Bitcoin zu unterscheiden. Natürlich wird unsere erste Version von Infocoin viele Nachteile haben, so dass wir mehrere Iterationen durchlaufen werden, bei denen jeweils ein oder zwei neue Konzepte eingeführt werden.

    Es ist langsamer, Bitcoin direkt zu erklären, als von Anfang an. Aber selbst wenn Sie die Grundsätze von Bitcoin verstehen, ist es schwierig zu verstehen, warum Bitcoin so gestaltet ist. Die Vorteile einer langsamen, schrittweisen, iterativen Erklärung sind, dass Sie jedes Element von Bitcoin besser verstehen können.

    Zu guter Letzt sollte ich sagen, dass ich relativ neu in der Bitcoin-Welt bin. Ich habe 2011 eine grobe Aufmerksamkeit, aber ich habe die Details wirklich ernsthaft untersucht, und zwar Anfang 2013. Ich bin gerne willkommen, wenn jemand meine Fehler korrigiert.

  • Schritt 1: Unterzeichnung des Absichtsschreibens

    • Wie entsteht eine Währung?

      Auf der Oberfläche klingt eine digitale Währung unmöglich. Nehmen wir an, dass eine Person, die wir Alice nennen, einige digitale Währungen hat, die sie ausgeben möchte. Wenn Alice eine Reihe von Zeichen als Geld verwenden kann, wie können wir verhindern, dass sie dieselben Zeichen wiederholt verwendet?

      Das sind nur zwei der vielen Probleme, die mit Informationen als Währung zu lösen sind. In der ersten Ausgabe von Infocoin haben wir versucht, Alice zu bitten, eine String als Geld anzubieten und eine Möglichkeit zu finden, sie vor Fälschung zu schützen. Angenommen, Alice will Bob eine Infocoin geben.

      Die Methode ist nicht sehr bekannt, aber sie hat einige Vorteile. Jeder in der Welt kann mit Alices öffentlichem Schlüssel überprüfen, dass Alice wirklich die Person ist, die unterschrieben hat. Niemand sonst kann das Ergebnis dieser Signatur erzeugen. (Diese Signatur kann nur aus dem privaten Schlüssel erzeugt werden, den Alice besitzt, in der Regel siehe oben erwähnte digitale Signatur).

      Ich habe noch nicht gesagt, was das Geld in diesem Protokoll genau ist. Klar gesagt: Das Geld ist die Botschaft selbst. Das heißt, die Zeichen, die die Generationen unterschrieben haben, repräsentieren die Zeichen, die meine Mutter Alice Bob geben wird, um ein Infocoin zu bekommen. Das spätere Protokoll wird in diesem Punkt ähnlich sein, d.h. alle digitalen Währungen sind nur immer detailliertere Nachrichtenzeichen.

  • Die Währung wird mit einer Seriennummer eindeutig identifiziert.

    Das Problem mit unserer ersten Version von Infocoin war, dass Alice Bob immer wieder die gleiche signierte Nachricht schicken konnte. Angenommen, Bob erhielt 10 Nachrichten, in denen hieß: "Ich, Alice, will Bob ein Infocoin geben".

    Wir wollen, dass die Infocoin ein einzigartiges Logo hat. Sie benötigt ein Label oder eine Seriennummer. Alice kann in der Nachricht an mich unterschreiben, dass Alice Bob eine Infocoin mit der Seriennummer 8740348 geben soll.

    Um dies zu ermöglichen, müssen wir eine vertrauenswürdige Seriennummerquelle benötigen. Eine Möglichkeit, die Seriennummer zu erzeugen, ist die Einrichtung einer Institution wie einer Bank. Diese Bank wird die Seriennummer für das Infocoin erzeugen, um zu erfassen, wer welches Infocoin besitzt, und um die Echtheit der Transaktion zu überprüfen.

    Genauer gesagt, nehmen wir an, Alice geht zu einer Bank und sagt: "Hey, ich will einen Infocoin aus meinem Konto holen". Die Bank subtrahiert einen Infocoin aus ihrem Konto und gibt ihr dann eine neue, nie benutzte Seriennummer, sagen wir 1234567. Dann, wenn Alice Bob einen Infocoin senden will, unterschreibt sie diese neue Nachricht.

  • Jeder soll Bank sein.

    Diese Lösung scheint viel Potenzial zu haben. Aber wir können etwas Ambitionierteres tun. Wir können Banken aus dem Abkommen entfernen. Das ändert die Eigenschaften der Währung drastisch. Das bedeutet, dass es keine einzelne Organisation mehr gibt, die für die Währung verantwortlich ist.

    Die Methode besteht darin, dass alle zusammenarbeiten, um eine Bank zu werden. Insbesondere nehmen wir an, dass jeder, der ein Infocoin verwendet, eine vollständige Aufzeichnung hält, einschließlich der Aufzeichnung dessen, wem das Infocoin gehört. Sie können es sich als ein geteiltes öffentliches Ledger vorstellen, in dem alle Transaktionen von Infocoins aufgezeichnet sind.

    Nun nehmen wir an, dass Alice Bob ein Infocoin geben will. Sie gibt mir eine Nachricht und Alice gibt Bob eine Signatur auf dem Infocoin-Table mit der Seriennummer 1234567. Und die Signatur wird an Bob ausgeliefert, und Bob kann es mit seiner eigenen Blockchain überprüfen. OK, das ist tatsächlich das Infocoin, das Alice mir gegeben hat.

    Wir haben immer noch ein Problem, woher die Infocoin-Seriennummern kommen, aber das ist eigentlich leicht zu lösen, also erkläre ich es später. Das schwierige Problem ist, dass das Protokoll Alice erlaubt, ihr Infocoin wiederholt auszugeben. Sie kann eine signierte Nachricht veröffentlichen, dass Alice Bob eine Infocoin-Seriennummer 1234567 geben wird, und sie kann auch eine signierte Nachricht veröffentlichen, dass Alice Charlie eine Infocoin-Seriennummer 1234567 geben wird. Bob und Charlie benutzen beide ihre eigene Blockchain, um zu überprüfen, dass das Infocoin tatsächlich von Alice stammt.

    Wir nannten das Problem "Double Spending" und es schien auf den ersten Blick schwierig zu sein. Denn wenn Alice Bob zuerst die Nachricht sendet und Bob dann alle anderen (einschließlich Charlie), die ihre Blockchain aktualisiert haben, anzeigt, wird Charlie nicht getäuscht. Es scheint also, dass doppelte Ausgaben nur in kurzer Zeit möglich sind. Schlimmer noch, Alice kann einige Tricks nutzen, um die Zeit zu verlängern.

    Wie löst man das Problem? Der einfachste Weg ist, dass Bob die Transaktion nicht alleine prüfen sollte, wenn Alice Bob Infocoin sendet. Er sollte die anstehende Transaktion dem gesamten Infocoin-Netzwerk mitteilen, damit andere helfen, zu beurteilen, ob die Transaktion vernünftig ist. Wenn sie gemeinsam entscheiden, dass die Transaktion vernünftig ist, kann Bob die Infocoin annehmen, und dann können alle ihre Blockchain aktualisieren.

    Genauer gesagt: Angenommen, Alice möchte Bob ein Infocoin geben. Wie zuvor, gibt sie ihm eine Nachricht, die sie unterschreibt. Alice gibt Bob ein Infocoin mit der Seriennummer 1234567 und unterschreibt Bob die Nachricht. Wie zuvor macht Bob eine Überprüfung mit seiner eigenen Blockchain, die tatsächlich Alice gehört.

    Es gibt viele Unsicherheiten in diesem Protokoll; zum Beispiel, was bedeutet es, wenn genug Leute die Nachricht veröffentlichen, wie viele Menschen sind genug? Es kann nicht das ganze Infocoin-Netzwerk sein, weil wir nicht wissen, wer im Infocoin-Netzwerk ist. Auch kann es nicht ein fester Teil der Benutzer sein.

  • Arbeitsnachweis Proof-of-work

    Angenommen, Alice möchte in den oben genannten Protokollen doppelte Blumen, er muss die gesamte Infocoin-Netzwerk steuern. Angenommen, sie verwendet ein automatisches System, um viele verschiedene Identitäten, angenommen eine Milliarde, auf dem Infocoin-Netzwerk zu erstellen. Wie zuvor versuchte sie, doppelte Blumen zu machen und Bob und Charlie die gleichen Infocoins zu geben, aber als Bob und Charlie die Infocoin-Netzwerke fragten, um die Transaktion zu überprüfen, überfluteten Alice-Hähnchen das gesamte Netzwerk und erzählten Bob und Charlie, dass sie durch die Transaktion gehen können und dass sie möglicherweise einen oder beide von ihnen täuschen oder die Transaktion akzeptieren könnten.

    Es gibt eine clevere Methode, eine sogenannte Proof-of-Work-Methode. Die Methode ist nicht intuitiv und erfordert eine Kombination aus zwei Konzepten: 1) den Prozess der Überprüfung einer Transaktion künstlich zu machen, der größere Rechenkosten verursacht; 2) sie zu belohnen, die helfen, die Transaktion zu überprüfen.

    Das ist der Punkt des Arbeitsnachweises. Aber um es wirklich zu verstehen, müssen wir in detailliertere Details gehen.

    Angenommen, Alice gibt der gesamten Netzwerk eine Nachricht über einen Infocoin mit der Seriennummer 1234567. Wenn alle anderen im Netzwerk diese Nachricht hören, fügen sie sie zu einer Liste von Pending Transactions, die noch nicht von der gesamten Netzwerk angenommen wurden.

    img

    David überprüft seine eigene Blockchain und sieht, dass die oben genannten Transaktionen gerechtfertigt sind. Er will helfen, diese Verifizierungsnachricht über das gesamte Netzwerk zu verbreiten. Bis dahin muss David jedoch ein Rechenproblem lösen, nämlich einen Arbeitsbeweis.

    Was für ein Problem will David dann lösen? Um das zu erklären, setzen wir eine festgelegte Hash-Funktion, die jeder im Netz kennt, in den Hash-Funktionsfenster, um sie in das Protokoll selbst aufzunehmen. Bitcoin verwendet eine bekannte SHA-256 Hash-Funktion, aber jede kryptographische Hash-Funktion kann hier verwendet werden. Wir geben Davids Gruppe von ausstehenden Transaktionen eine Markierung, ein L-Funktion, um sie später zu zitieren.

    img

    Die Aufgabe, die David lösen wird, ist es, eine zufällige Zahl x zu finden, und wenn wir diese x hinter L hinzufügen und diese Kombination von Hashs erhalten, dann beginnt das Ergebnis mit mehreren Nullen. Die Schwierigkeit dieses Problems kann durch Anpassung der Anzahl der anfänglichen Nullen angepasst werden. Eine einfache Zellbelegung benötigt nur 3 oder 4 anfänglichen Nullen, eine schwierige Zellbelegung benötigt möglicherweise mehr Nullen, z. B. 15 aufeinanderfolgende Nullen. In diesem Fall ist der Hash, der x = 0 erreicht, nicht erfolgreich, da das Ergebnis nicht 0 ist.

    Wir können sehen, dass das nicht funktioniert, wenn x gleich 1 ist.

    img

    Und dann versuchen wir x gleich 2 und dann versuchen wir x gleich 3, 4, 5 und dann wissen wir, dass wir am Ende x gleich 4350 bekommen.

    img

    Diese Zufallszahl x gibt uns ein Ergebnis, das ein Hash mit vier Nullen beginnt.

    Was das Problem erschwert, ist, dass das Ergebnis der Code-Hash-Funktion immer zufällig ist und jede kleine Änderung des Eingabewerts das Ergebnis der gesamten Hash-Funktion völlig verändert, so dass es schwierig ist, es vorherzusagen. Wenn wir also die Ausgabe von 10 Nullen benötigen, dann wird David im Durchschnitt 1610 ≈ 1012 verschiedene x benötigen, um den passenden Wert zu finden.

    Offensichtlich können wir die Schwierigkeit der Arbeitsbeweisprobleme kontrollieren, indem wir festlegen, wie viele Nullen erforderlich sind. In der Tat kann das Bitcoin-Protokoll die Schwierigkeit der Arbeitsbeweisprobleme besser kontrollieren, indem es die oben genannten Beweise leicht modifiziert. Es wird nicht mehr festgelegt, wie viele anfängliche Nullen erforderlich sind, sondern es wird festgelegt, dass die Hash-Ausgabe eines Blocks kleiner oder gleich einem Zielwert ist, der automatisch angepasst wird, um sicherzustellen, dass jeder Block von Bitcoin im Durchschnitt 10 Minuten dauert, um zu lösen.

    Okay, nehmen wir an, dass David Glück hat und einen passenden x findet, und gratulieren wir ihm! (Er wird belohnt, wenn er diese Antwort findet). Er wird veröffentlichen, dass er die Transaktionen in diesem Block bewiesen hat, und gleichzeitig veröffentlichen, dass er den x-Wert gefunden hat.

    Um die Funktionsweise des Programms nachzuweisen, sollten die Teilnehmer des Netzwerks einen Anreiz benötigen, um die Transaktionen zu verifizieren. Ohne einen Anreiz würde niemand bereit sein, seine eigenen Rechenkräfte auszugeben, um die Transaktionen zu verifizieren. Wenn die Teilnehmer des Netzwerks nicht bereit sind, Rechenkräfte auszugeben, funktioniert das System nicht.

    Im Protokoll von Bitcoin wird der Prozess der Verifizierung als "mining" bezeichnet. Der erfolgreiche Verifizierer eines jeden Blocks erhält Bitcoin als Belohnung. Zunächst ist es eine Belohnung von 50 Bitcoins pro 210.000 verifizierten Blöcken (d. h. etwa alle 4 Jahre). Die Belohnung wird jedoch halbiert. Bisher ist dies nur einmal passiert, d. h. die Belohnung für die Verifizierung eines Blocks beträgt 25 Bitcoins. Der Halbierungsprozess dauert bis etwa 2140 an.

    Man kann den Proof-of-Work als einen Prozess betrachten, bei dem ein konkurrierendes Verifizierungsgeschäft stattfindet. Jeder Teilnehmer wird einen Teil der Rechenleistung aufwenden. Die Chance eines Miners zu gewinnen ist wahrscheinlich proportional zur Größe der Rechenleistung, die er kontrolliert, und dem Verhältnis der Rechenleistung des gesamten Netzwerks. Zum Beispiel, wenn ein Miner einen Prozent der Rechenleistung des gesamten Netzwerks kontrolliert, ist die Wahrscheinlichkeit, dass er gewinnt, wahrscheinlich ein Prozent.

    Selbst wenn es eine geringe Chance gibt, dass unehrliche Miner die gesamte Blockchain zerstören, haben wir natürlich nicht die nötige Zuversicht, sie als Währung zu nutzen.

    Ich werde gleich die Frage der Doppelblumen analysieren, aber bevor ich das tue, möchte ich ein wichtiges Detail zu dem Konzept von Infocoin hinzufügen. Idealerweise möchten wir, dass das Infocoin-Netzwerk die Reihenfolge der Transaktionen vereinheitlicht. Wenn wir keine einheitliche Reihenfolge haben, ist es nicht klar, wer zu welchem bestimmten Zeitpunkt welches Infocoin hat.

    img

    Zufälligerweise entstehen Verzweigungen auf einer Blockchain. Dies geschieht, weil manchmal zwei Miner fast gleichzeitig eine Transaktion eines Blocks verifizieren. Sie werden gleichzeitig ins Netz veröffentlicht. Einige Leute aktualisieren ihre Blockchain in einer Weise, andere in einer anderen.

    img

    Dies führt zu den Situationen, die wir vermeiden wollen. In solchen Situationen ist die Reihenfolge der Transaktionen unklar, und es ist auch unklar, wer welche Infocoins hat. Glücklicherweise gibt es eine einfache Möglichkeit, um die Zweige zu verschieben. Die Regel lautet: Wenn eine Zweigung auftritt, halten die Leute im Netzwerk zwei Zweige, und in jedem Fall arbeiten die Miner nur auf der längsten Blockchain.

    Angenommen, wir haben eine Abteilung, und einige Miner erhalten Block A zuerst, und andere Miner erhalten Block B zuerst. Die Miner, die Block A erhalten, werden weiter in ihrer Abteilung graben, während andere die Abteilungen von Block B graben. Angenommen, die Miner in Abteilung B graben den nächsten Block zuerst:

    img

    Wenn sie diese Nachricht erhalten, bemerken die Leute in Branch A, dass Branch B jetzt der längste ist, und wechseln zu Branch B. Die Arbeit an Branch A wird schnell gestoppt, so dass alle in derselben Reihenfolge auf der Blockchain arbeiten. Dann wird Block A ignoriert. Natürlich werden alle ausstehenden Transaktionen in Block A weiterhin ausstehend bleiben und dann in den neuen Block in Branch B gelegt, so dass alle Transaktionen schließlich verifiziert werden.

    Ähnlich, wenn ein Bergarbeiter in der Abteilung A zuerst den nächsten Block ausgraben würde, dann würde der Bergarbeiter in der Abteilung B aufhören und auf die Abteilung A wechseln.

    Was auch immer das Ergebnis sein mag, dieser Prozess gewährleistet eine einheitliche Reihenfolge der Blockchain. In Bitcoin gilt eine Transaktion nicht als bestätigt, bis 1) sie in dem Block in der längsten Verzweigung existiert und 2) mindestens 5 verifizierte Blöcke hinter ihr bestätigt wurden. In diesem Fall sagen wir, dass die Transaktion 6 bestätigte Blöcke hat.

    Jetzt, da wir die Zeitreihenfolge verstanden haben, gehen wir zurück und denken, was passiert, wenn ein unehrlicher Mensch doppelte Ausgaben will. Nehmen wir an, Alice soll Bob und Charlie gleichzeitig die gleichen Transaktionen geben. Eine Möglichkeit ist, dass sie einen Block mit zwei Transaktionen gleichzeitig überprüft. Nehmen wir an, sie hat ein Prozent Rechenkenntnis, dann ist es wahrscheinlich, dass sie glücklicher ist, diesen Block zu überprüfen.

    Aber eine andere Möglichkeit ist, dass sie versucht, zwei Transaktionen zu veröffentlichen. Sie könnte eine Transaktion an einen Teil der Miner veröffentlichen und eine andere an einen anderen Teil der Miner, und sie möchte, dass beide Transaktionen überprüft werden. Glücklicherweise wird in diesem Fall, wie wir gerade gesagt haben, das Netzwerk letztendlich nur eine der Transaktionen bestätigen.

    Eine andere Möglichkeit ist, dass Alice = Bob, also Alice versucht, Charlie eine Münze zu geben, während sie die Münze auch sich selbst gibt, da sie selbst mehrere Konten haben kann. In diesem Fall wartet Alice, bis Charlie das Infocoin akzeptiert hat, was wahrscheinlich nach sechs bestätigten Transaktionen in der längsten Blockchain ist. Sie versucht erneut, einen anderen Block-Branch zu lösen, der die Transaktionen hat, die sie sich selbst gesendet hat.

    img

    Unglücklicherweise ist Alice zu diesem Zeitpunkt bereits sechs Schritte hinter der längsten Blockchain zurück. Sie hat Schwierigkeiten, mit dem längsten Zweig Schritt zu halten. Die anderen Miner werden ihr nicht helfen, da sie alle an dem längsten Zweig arbeiten müssen, um belohnt zu werden. Es sei denn, Alice kann sich schneller als alle anderen auf dem Netzwerk kombinieren, wenn sie ihre Arbeit belegt.

    Natürlich ist dies nicht sehr streng, um zu sagen, dass Alice sicherlich nicht doppelt bezahlt werden kann. Das ist nur eine vernünftige Schlussfolgerung. Das Bitcoin-Whitepaper hat keine strenge Sicherheitsanalyse durchgeführt, sondern nur eine informelle Schlussfolgerung, die mir hier ähnelt.

    In der ersten Hälfte, in der zweiten Hälfte, verzichtet der Autor Michael auf das Konzept von Infocoin, um das Protokoll von Bitcoin aus der Sicht von Bitcoin-Transaktionen in mehr Detail zu erklären.

    Auch: Tippen Sie, wenn Sie dies hilfreich finden, an den Autor dieses Artikels, Michael Nielsen, an 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ, oder folgen Sie ihm auf Twitter.

Ich bin ein junger Mann, aber ich bin ein junger Mann.


Mehr