Wie funktioniert das Bitcoin-Protokoll?

Schriftsteller:Kleine Träume, Erstellt: 2017-01-19 18:30:04, aktualisiert:

Wie funktioniert das Bitcoin-Protokoll?

  • Bitcoin

    Lassen Sie uns jetzt von Infocoin weggehen und auf das echte Bitcoin-Protokoll umsteigen.

    Um Bitcoin zu verwenden, müssen Sie zuerst eine Brieftasche in den Computer installieren. Um Ihnen ein besseres Verständnis zu vermitteln, folgt ein Screenshot einer Brieftasche namens Multibit. In der oberen linken Ecke können Sie sehen, dass das Bitcoin-Balance 0.06555555 Bitcoins beträgt, was dem damaligen Preis der Transaktion in der Abbildung nahezu 70 US-Dollar entspricht.

    img

    Nehmen wir an, Sie sind ein Händler und haben einen Online-Shop eingerichtet, und Sie entscheiden, Kunden Bitcoin-Zahlungen zu erlauben. Alles, was Sie tun müssen, ist, eine neue Bitcoin-Adresse mit Ihrem Wallet-Programm zu erzeugen.

    img

    Dann sendest du deine Bitcoin-Adresse an die Person, die dir Geld zahlen wird. Du kannst sie in die E-Mail-Box schicken oder direkt auf deine Webseite stellen. Das ist sicher, denn deine Adresse ist nur ein hashter öffentlicher Schlüssel, den du für jeden freigeben kannst. Ich werde später erklären, warum Bitcoin-Adressen den Hashwert des öffentlichen Schlüssels und nicht den öffentlichen Schlüssel selbst verwenden.

    Jetzt muss derjenige, der bereit ist, Geld zu zahlen, eine neue Transaktion erstellen. Lassen Sie uns eine echte Transaktion mit 0.319 Bitcoins betrachten. Nachfolgend ist dies fast die ursprüngliche Datenzahl und es gibt drei Veränderungen: 1) Die Daten sind nicht kontinuierlich; 2) Die Zeilenummern wurden hinzugefügt, um es besser zu verstehen; 3) Eine lange Reihe von Zahlen aus dem Hash-Daten wird weggelassen und nur die ersten 6 Ziffern bleiben.

    1.  {"hash":"7c4025...",
    2.  "ver":1,
    3.  "vin_sz":1,
    4.  "vout_sz":1,
    5.  "lock_time":0,
    6.  "size":224,
    7.  "in":[
    8.    {"prev_out":
    9.      {"hash":"2007ae...",
    10.      "n":0},
    11.    "scriptSig":"304502... 042b2d..."}],
    12. "out":[
    13.   {"value":"0.31900000",
    14.    "scriptPubKey":"OP_DUP OP_HASH160 a7db6f OP_EQUALVERIFY OP_CHECKSIG"}]}
    
    • Lassen Sie uns es Ihnen Zeilen für Zeilen erklären.

      Zeile 1, Hash-Wert der Transaktion ((16-Zahlen), er ist die einzige Markierung, die für diese Transaktion verwendet wird.

      Die zweite Zeile sagt uns, dass die Transaktion mit der ersten Version des Bitcoin-Protokolls durchgeführt wird.

      Zeilen 3 und 4 sagen uns, dass die Transaktion eine Eingabe und eine Ausgabe hat.

      Die fünfte Zeile ist eine Sperrzeit (lock_time), mit der man kontrollieren kann, wann die Transaktion abgeschlossen wird.

      Linie 6 zeigt uns, wie viele Bytes der Transaktionsgröße sind, und beachten Sie, dass dies kein Transaktionsgeld ist.

      Zeilen 7 bis 11 definieren den Eingabe-Teil der Transaktion, genauer gesagt, Zeilen 8 bis 10 sagen uns, dass der Eingabe-Wert des Geldes, mit dem wir das Geld umwandeln wollen, aus dem Eingabe-Wert des letzten Transaktions-Ausgabes stammt. Das 2007ae... ist der 16-fache Hash-Wert des letzten Transaktions, der auf einen Transaktions-Ausgang hinweist.

      Bemerkenswert ist, dass der Eingabeanteil hier nicht sagt, wie viele Bitcoins aus dem ersten Transaktionszeitraum in den nächsten übertragen werden. Tatsächlich wurden alle Bitcoins aus dem ersten Transaktionszeitraum von n = 0 in den letzten Transaktionen übertragen. Zum Beispiel, wenn zwei Bitcoins aus dem ersten Transaktionszeitraum von n = 0 in den ersten Transaktionszeitraum waren, werden beide Bitcoins in diesem neuen Transaktionszeitraum ausgegeben.

      Zeilen 12 bis 14 definieren die Ausgabe der Transaktion. Insbesondere Zeilen 13 sagen uns, wie viel Geld ausgegeben wird, hier 0.319 Bitcoins. Zeilen 14 sind komplizierter, und es ist bemerkenswert, dass die String a7db6f... die Adresse der Bitcoin-Abrechnung ist.

      Jetzt können Sie sehen, wie Bitcoin die Frage löst, woher die Sequenznummern stammen, die wir zuvor erwähnt haben. Erstens, Bitcoin ist nicht eine getrennte einzelne Münze, sondern eine lange Reihe von Transaktionen, die auf der Blockchain existieren.

      Es gibt zwei Möglichkeiten, wenn wir am Ende ankommen. Erstens, Sie kommen vielleicht zu der ersten Bitcoin-Transaktion, die in einem Block existiert, den wir den Genesis-Block nennen. Es ist eine spezielle Transaktion, die keine Eingaben hat und nur 50 Bitcoins ausgibt.

      Das zweite Ergebnis, das man in der Reihe der Transaktionskette immer wieder sieht, ist, dass man eine Transaktion erreicht, die als Coinbase-Transaction bezeichnet wird. Außer dem Genesis-Block beginnt jeder Block mit einer speziellen Coinbase-Transaktion. Diese Transaktion wird verwendet, um die Miner zu belohnen, die in diesem Block handeln.

      Die obige Beschreibung ist nicht sehr klar, was genau in den 11 Zeilen digital signiert wird. Der offensichtlichste Weg ist, dass der Zahler die gesamte Transaktion digital signiert. Für den Moment wird dies nicht getan, einige Transaktionen werden ignoriert. Dies macht einen Teil der Transaktionen plastisch, dh sie können später geändert werden.

  • Es gibt mehrere Eingabe- und Ausgabe-Transaktionen.

    In der vorherigen Rubrik haben wir über eine Transaktionsdaten mit nur einer einzigen Eingabe und einer einzigen Ausgabe gesprochen. In der Tat sind die meisten Bitcoin-Transaktionen mit mehreren Eingaben oder mehreren Ausgängen.

    1. {"hash":"993830...",
    2. "ver":1,
    3. "vin_sz":3,
    4.  "vout_sz":2,
    5.  "lock_time":0,
    6.  "size":552,
    7.  "in":[
    8.    {"prev_out":{
    9.      "hash":"3beabc...",
    10.        "n":0},
    11.     "scriptSig":"304402... 04c7d2..."},
    12.    {"prev_out":{
    13.        "hash":"fdae9b...",
    14.        "n":0},
    15.      "scriptSig":"304502... 026e15..."},
    16.    {"prev_out":{
    17.        "hash":"20c86b...",
    18.        "n":1},
    19.      "scriptSig":"304402... 038a52..."}],
    20.  "out":[
    21.    {"value":"0.01068000",
    22.      "scriptPubKey":"OP_DUP OP_HASH160 e8c306... OP_EQUALVERIFY OP_CHECKSIG"},
    23.    {"value":"4.00000000",
    24.      "scriptPubKey":"OP_DUP OP_HASH160 d644e3... OP_EQUALVERIFY OP_CHECKSIG"}]}
    
    • Wie bereits erwähnt, haben wir eine Zeile lang erklärt, die zum größten Teil dieselbe ist wie zuvor.

      Zeile 1, der Hash-Wert der Transaktion, dient als einziger Marker für diese Transaktion.

      Zeile 2, Version des Bitcoin-Protokolls, 1. Ausgabe.

      Die Linie 3 oder 4 besagt, dass es drei Eingaben und zwei Ausgänge in der Transaktion gibt.

      In der 5. Zeile wird die Zeit gesperrt (wie zuvor).

      Zeile 6, die Bytegröße der Transaktion.

      Die Zeilen 7 bis 19 definieren alle Eingaben, die jeweils der Ausgabe der vorherigen Transaktion entsprechen. Die erste Eingabe ist die Zeile 8 bis 11. Ihre Inhaltsform ist die gleiche wie die vorherige. Die zweite Eingabe ist die Zeile 12 bis 15 und die dritte die Zeile 16 bis 19.

      Zeilen 20 bis 24 definieren alle Ausgänge. Die erste Ausgabe ist Zeile 21 und 22, und wie zuvor sagt Zeile 21, dass es 0.01068 Bitcoins gibt. Zeile 22 ist die Skriptsprache eines Bitcoins. Die String e8c30622... ist die Adresse des Empfängers.

      Es sieht etwas seltsam aus, dass zwar jede Ausgabe die Anzahl der Bitcoins aufzeichnet, aber keine Eingaben. Wie viele Bitcoins kann jede Eingabe natürlich aus ihrer letzten Transaktion erhalten. In einer normalen Bitcoin-Transaktion ist die Summe aller Eingaben größer als die Summe aller Eingaben (mit Ausnahme der eben genannten Genesis-Block- und Coinbase-Transaktionen).

      Viele Eingaben und Ausgänge dienen der Suche nach Nullen. Angenommen, ich möchte dir 0.15 Bitcoins geben. Ich kann die 0.2 Bitcoins, die ich vorher erhalten habe, ausgeben. Natürlich möchte ich dir nicht alle 0.2 geben.

  • Abschluss

    Die grundlegenden Konzepte hinter Bitcoin sind bereits beschrieben. Natürlich habe ich auch viele Details übersehen. Es ist nicht eine offizielle Anleitung.

    Obwohl die Regeln hinter Bitcoin einfach und leicht verständlich sind, bedeutet das nicht, dass alle möglichen Folgen dieser Regeln leicht zu verstehen sind. Es gibt noch viel mehr zu sagen über Bitcoin, was ich in einem späteren Artikel erläutern werde.

    Wie anonym ist Bitcoin? Viele Leute sagen, dass Bitcoin anonym verwendet werden kann. Diese Behauptung entstand auf einem Schwarzmarkt wie der Silk Road. Diese Behauptung ist jedoch fiktiv. Die Blockchain ist öffentlich und bedeutet, dass jeder alle Bitcoin-Transaktionen sehen kann. Obwohl die Bitcoin-Adressen nicht direkt mit der Identität einer Person in der realen Welt übereinstimmen, haben Computerwissenschaftler viel Arbeit geleistet, um das anonymisierte soziale Netzwerk zu entschlüsseln.

    Kann man mit Bitcoin reich werden? Vielleicht, so Tim O'Reilly. Geld verdienen ist wie eine Tankstelle im Auto, auf die man achten muss, sonst hängt man an der Straße fest, aber das Leben dreht sich nicht um eine Tankstelle. Das größte Interesse an Bitcoin scheint von Leuten zu stammen, deren Ziel es ist, nur eine große Tankstelle zu finden. Ich muss zugeben, dass das verwirrend ist.

    Details, die ich übersehen habe: Obwohl der Artikel die wichtigsten Konzepte hinter Bitcoin beschreibt, gibt es viele Details, die ich nicht erwähnt habe. Eine davon ist die großartige Speicher-Technik des Protokolls, die auf einer Datenstruktur namens Merkle Tree basiert. Das sind Details, aber es ist ein extrem tolles Detail, wenn Sie Datenstrukturen mögen, das sich lohnt.

    Bitcoin-Skript: In diesem Artikel erkläre ich Bitcoin als eine Online-Elektronikwährung. Aber das ist nur ein kleiner Teil der größeren und interessanteren Geschichte. Wie wir gesehen haben, gibt es eine Bitcoin-Skriptsprache für jede Bitcoin-Transaktion. Das Skript wurde in diesem Artikel so vereinfacht, dass es ähnlich aussieht wie:

    Wenn es hilfreich erscheint, empfehle ich dir, Michael Nielsen, dem Autoren dieses Artikels, zu Tippen. Er wohnt unter 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ. Du kannst ihm auch auf Twitter folgen.

    Bitte verzeihen Sie mir, wenn es irgendwelche Unannehmlichkeiten gibt.

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


Mehr