Inhaltsverzeichnis
- Bitcoin Überblick
- Eine Tasse Kaffee kaufen
- Bitcoin-Transaktionen
- Transaktions-Inputs und -Outputs
- Transaktionsketten
- Änderungen vornehmen
- Gemeinsame Transaktionsgestalt
- Aufbau einer Transaktion
- Die richtigen Eingaben erhalten
- Erstellen der Ausgänge
- Hinzufügen der Transaktion zum Hauptbuch
- Übertragung der Transaktion
- Wie es sich ausbreitet
- Valerie’s Ansicht
Das Bitcoin-System basiert im Gegensatz zu herkömmlichen Bank- und Zahlungssystemen auf dezentralem Vertrauen. Statt einer zentralen vertrauenswürdigen Autorität wird in Bitcoin Vertrauen als eine emergente Eigenschaft aus den Interaktionen verschiedener Teilnehmer im Bitcoin-System erreicht.
Wir werden Bitcoin in einer tiefen Ebene untersuchen, indem wir eine einzelne Transaktion durch das Bitcoin-System verfolgen und beobachten, wie es durch den Bitcoin-Mechanismus des verteilten Konsens „vertraut“ und akzeptiert wird und schließlich in der Blockchain, dem verteilten Hauptbuch aller Transaktionen, aufgezeichnet wird. Die folgenden Kapitel befassen sich mit der Technologie hinter Transaktionen, dem Netzwerk und dem Mining.
Bitcoin Überblick
Das Bitcoin-System besteht aus Benutzern mit Wallets mit Schlüsseln, Transaktionen, die über das Netzwerk verbreitet werden, und Minern, die (durch kompetitive Berechnung) die Konsens- (Conensus)-Blockchain erzeugen, die das maßgebliche Hauptbuch aller Transaktionen ist.
Jedes Beispiel in diesem Kapitel basiert auf einer tatsächlichen Transaktion, die auf dem Bitcoin Netwerk durchgeführt wird, wobei die Interaktionen zwischen den Benutzern (Mark, Ryan, Valerie und Annabelle) simuliert werden, indem Geld von einer Wallet zu einer anderen geschickt wird. Während eine Transaktion durch das Bitcoin-Netzwerk zur Blockchain verfolgt wird, verwenden wir einen Blockchain-Explorer, um jeden Schritt zu visualisieren. Ein Blockchain-Explorer ist eine Web-Anwendung, die als Bitcoin-Suchmaschine funktioniert. Sie ermöglicht die Suche nach Adressen, Transaktionen und Blöcken sowie die Beziehungen und Transaktionen zwischen ihnen.
Populäre Blockchain Explorer sind:
Jeder von diesen hat eine Suchfunktion, die eine Bitcoin-Adresse, einen Transaktions-Hash, eine Blocknummer oder einen Block-Hash-Wert annehmen kann und entsprechende Informationen aus dem Bitcoin-Netzwerk abrufen kann.
Eine Tasse Kaffee kaufen
Mark, im vorherigen Blog Artikel vorgestellt, ist ein neuer Benutzer, der gerade seine ersten Bitcoin erworben hat. In „Das wichtigste zu BITCOIN“ traf sich Mark mit seinem Freund Ryan, um etwas Geld für Bitcoins einzutauschen. Die von Ryan erstellte Transaktion finanzierte Marks Wallet mit 0,001 BTC. Jetzt wird Mark seine erste Einzelhandelstransaktion machen und eine Tasse Kaffee in Valerie´s Cafe in Berlin kaufen.
Valerie´s Cafe akzeptiert seit kurzem Bitcoin-Zahlungen, indem es seinem Kassenführung-System (Point-of-Sale-System) eine Bitcoin-Option hinzufügt. Die Preise bei Valerie`s Cafe sind in der lokalen Währung (EURO) aufgeführt, aber im Register haben Kunden die Möglichkeit, entweder Euro oder Bitcoin zu bezahlen. Mark gibt seine Bestellung für eine Tasse Kaffee und Valerie gibt sie in das Register ein, wie sie es für alle Transaktionen vornimmt. Das Point-of-Sale-System konvertiert den Gesamtpreis automatisch zum aktuellen Marktkurs von Euro in Bitcoin und zeigt den Preis in beiden Währungen an:
Gesamt:
1,50 Euro
0,0001 BTC
Valerie sagt: „Das ist Ein Euro und fünfzig Cent“.
Das Valerie Point-of-Sale-System erstellt automatisch einen speziellen QR-Code, der eine Zahlungsanforderung enthält.
Im Gegensatz zu einem QR-Code, der einfach eine Ziel-Bitcoin-Adresse enthält, ist eine Zahlungsanforderung eine QR-codierte URL, die eine Zieladresse, einen Zahlungsbetrag und eine allgemeine Beschreibung wie „Valeries Cafe“ enthält. Dies ermöglicht einer Bitcoin-Wallet-Anwendung, die zum Senden der Zahlung verwendeten Informationen vorzufüllen, während dem Benutzer eine lesbare Beschreibung angezeigt wird.
Mark nutzt sein Smartphone, um den Barcode auf dem Display zu scannen. sein Smartphone zeigt eine Zahlung von 0,0001 BTC und er wählt senden, um die Zahlung zu autorisieren. Innerhalb weniger Sekunden (etwa so lange wie eine Kreditkartenautorisierung) sieht Valerie die Transaktion im Register und schließt die Transaktion ab.
In den folgenden Abschnitten werden wir diese Transaktion genauer untersuchen. Wir werden sehen, wie Mark’s Wallet es aufgebaut hat, wie es über das Netzwerk verbreitet wurde, wie es verifiziert wurde und schließlich, wie Valerie diesen Betrag in nachfolgenden Transaktionen ausgeben kann.
Bitcoin-Transaktionen
In einfachen Worten teilt eine Transaktion dem Netzwerk mit, dass der Besitzer eines Bitcoin-Wertes die Übertragung dieses Wertes an einen anderen Besitzer autorisiert hat. Der neue Besitzer kann nun den Bitcoin ausgeben, indem er eine andere Transaktion erstellt, die die Übertragung an einen anderen Besitzer autorisiert und so weiter, in einer Besitzkette.
Transaktions-Inputs und -Outputs
Transaktionen sind wie Zeilen in einem doppelten Buchführungsbuch. Jede Transaktion enthält eine oder mehrere „Eingaben“, die wie Lastschriften gegen ein Bitcoin-Konto sind. Auf der anderen Seite der Transaktion gibt es einen oder mehrere „Ausgaben“, die wie Guthaben einem Bitcoin-Konto hinzugefügt werden. Die Eingaben und Ausgaben summieren sich zu etwas weniger als Eingaben und die Differenz stellt eine implizite Transaktionsgebühr dar, die eine kleine Zahlung ist, die vom Miner gesammelt wird, der die Transaktion in das Hauptbuch einbezieht. Eine Bitcoin-Transaktion wird als Buchhaltungs-Bucheintrag angezeigt.
Die Transaktion enthält auch einen Eigentumsnachweis für jede Bitcoin-Menge (Eingaben), deren Wert ausgegeben wird, in Form einer digitalen Unterschrift des Eigentümers, die von jedem unabhängig validiert werden kann. In Bitcoin-Begriffen bedeutet „Ausgaben“ das Unterzeichnen einer Transaktion, die den Wert einer früheren Transaktion auf einen neuen Besitzer überträgt, der durch eine Bitcoin-Adresse identifiziert wird.
Transaktionsketten
Die Zahlung von Mark an Ryan verwendet die Ausgabe einer früheren Transaktion als Eingabe. Im vorherigen Blog Artikel erhielt Mark Bitcoin von seinem Freund Ryan gegen Bargeld. Diese Transaktion hat einen Bitcoin-Wert erzeugt, der durch den Schlüssel von Mark gesperrt wurde. Seine neue Transaktion an Valerie’s Cafe bezieht sich auf die vorherige Transaktion als Eingang und schafft neue Ausgaben, um die Tasse Kaffee zu bezahlen und eine Änderung zu erhalten. Die Transaktionen bilden eine Kette, wobei die Eingaben aus der letzten Transaktion den Ausgaben aus früheren Transaktionen entsprechen. Mark’s Key (Private Key, Privater Schlüssel) stellt die Signatur zur Verfügung, die diese früheren Transaktionsausgaben freischaltet und damit dem Bitcoin-Netzwerk beweist, dass er das Geld erhält. Er fügt die Zahlung für Kaffee an Valerie’s Adresse an, „belastet“ diese Ausgabe mit der Anforderung, dass Valerie eine Unterschrift (Signatur) abgibt, um diesen Betrag auszugeben. Dies stellt eine Wertübertragung zwischen Mark und Ryan dar.
Änderungen vornehmen
Viele Bitcoin-Transaktionen enthalten Ausgaben, die sowohl auf eine Adresse des neuen Eigentümers als auch auf eine Adresse des aktuellen Eigentümers verweisen, die als Änderungsadresse bezeichnet wird. Dies liegt daran, dass Transaktionseingaben, wie z. B. Geldscheine, nicht geteilt werden können. Wenn du einen 5-Euro Artikel in einem Geschäft kaufst, aber einen 20-Euro Geldschein verwendest, um den Artikel zu bezahlen, erwartest du 15 Euro Wechselgeld. Das gleiche Konzept gilt für Bitcoin-Transaktionen. Wenn du einen Artikel gekauft habst, der 5 Bitcoin kostet, aber nur einen 20 Bitcoin-Input hast, sendest du eine Ausgabe von 5 Bitcoin an den Verkäufer und eine Ausgabe von 15 Bitcoin an sich selbst als Wechselgeld (abzüglich anfallender Transaktionsgebühren). Wichtig ist, dass die Änderungsadresse nicht dieselbe Adresse sein muss wie die der Eingabe und aus Gründen des Datenschutzes oft eine neue Adresse aus der Wallet des Besitzers ist.
Verschiedene Wallets können unterschiedliche Strategien verwenden, wenn sie Eingaben zusammenfassen, um eine vom Benutzer angeforderte Zahlung vorzunehmen. Sie können viele kleine Eingaben zusammenfassen oder eine verwenden, die gleich oder größer als die gewünschte Zahlung ist. Wenn die Wallet die Eingaben nicht so zusammenfassen kann, dass sie genau mit der gewünschten Zahlung plus Transaktionsgebühren übereinstimmen, muss die Wallet etwas ändern. Das ist sehr ähnlich wie Bargeld mit Bargeld umgehen. Wenn du immer die größten Geldscheine in deiner Tasche verwendest, wirst du mit einer Tasche voller Kleingeld enden. Wenn du nur Kleingeld verwendest, hast du immer nur große Geldscheine. Menschen finden unbewusst einen Unterschied zwischen diesen beiden Extremen und Bitcoin Wallet Entwickler bemühen sich, dieses Gleichgewicht zu programmieren.
Zusammengefasst bewegen Transaktionen den Wert von Transaktions-Eingaben zu Transaktions-Ausgaben. Eine Eingabe ist eine Referenz auf die Ausgabe einer vorherigen Transaktion und zeigt an, woher der Wert kommt. Eine Transaktionsausgabe leitet einen bestimmten Wert an die Bitcoin-Adresse eines neuen Eigentümers und kann eine Änderungsausgabe an den ursprünglichen Eigentümer zurückgeben. Ausgaben aus einer Transaktion können als Eingaben in einer neuen Transaktion verwendet werden, wodurch eine Besitzkette entsteht, wenn die Variable vom Eigentümer zum Eigentümer verschoben wird.
Gemeinsame Transaktionsgestalt
Die häufigste Transaktion ist eine einfache Zahlung von einer Adresse an eine andere, die oft eine „Änderung“ enthält, die an den ursprünglichen Eigentümer zurückgegeben wird. Dieser Transaktionstyp hat einen Eingang und zwei Ausgänge.
Eine andere häufige Form der Transaktion ist eine, die mehrere Eingaben zu einer einzigen Ausgabe zusammenfasst. Dies entspricht dem realen Äquivalent, einen Haufen Münzen und Geldscheine gegen eine einzelne größere Note auszutauschen. Transaktionen wie diese werden manchmal von Wallet-Anwendungen generiert, um viele kleinere Beträge zu bereinigen, die als Änderung für Zahlungen empfangen wurden.
Und schlussendlich eine andere Transaktionsform, das häufig auf dem Bitcoin-Hauptbuch angezeigt wird, ist eine Transaktion, die eine Eingabe an mehrere Ausgaben verteilt, die mehrere Empfänger darstellen. Diese Art von Transaktion wird manchmal von kommerziellen Berechtigungen zur Verteilung von Mitteln, z. B. bei der Verarbeitung von Gehaltszahlungen an mehrere Mitarbeiter genutzt.
Aufbau einer Transaktion
Mark’s Wallet-Anwendung enthält die gesamte Logik zum Auswählen geeigneter Eingaben und Ausgaben, um eine Transaktion zu erstellen, um die Spezifikation zu markieren. Die Markierung muss nur ein Ziel und einen Betrag angeben und der Rest passiert in der Wallet-Anwendung, ohne dass er die Details sieht. Wichtig ist, dass eine Wallet-Anwendung Transaktionen auch dann erstellen kann, wenn sie vollständig offline sind. Wenn Sie einen Scheck zu Hause unterschreiben und ihn später in einem Umschlag an die Bank senden, muss die Transaktion nicht aufgebaut und signiert werden, während Sie mit dem Bitcoin-Netzwerk verbunden sind.
Die richtigen Eingaben erhalten
Mark’s Wallet-Anwendung muss zuerst Eingaben finden, die für den Betrag zahlen können, die er an Valerie senden möchte. Die meisten Wallet verfolgen alle verfügbaren Ausgaben, die zu Adressen in der Wallet gehören. Daher würde die Wallet von Mark eine Kopie der Transaktionsausgabe aus Ryans Transaktion enthalten, die im Austausch gegen Bargeld erstellt wurde. Eine Bitcoin-Wallet-Anwendung, die als Vollknoten-Klient (Full Node Client) ausgeführt wird, enthält tatsächlich eine Kopie jeder nicht ausgegebenen Ausgabe aus jeder Transaktion in der Blockchain. Dies ermöglicht es einer Wallet, Transaktionseingaben zu konstruieren und eingehende Transaktionen schnell auf korrekte Eingaben zu überprüfen. Da ein Client mit vollem Knoten jedoch viel Speicherplatz belegt, führen die meisten Benutzer-Wallets „light“ Clients aus, die nur die nicht ausgegebenen Ausgaben des Benutzers verfolgen.
Wenn die Wallet-Anwendung keine Kopie von nicht ausgegebenen Transaktionsausgaben verwaltet, kann sie das Bitcoin-Netzwerk abfragen, um diese Informationen mithilfe einer Vielzahl von verschiedenen Anbietern verfügbaren APIs abzurufen oder einen vollständigen Knoten mithilfe eines API-Aufrufs anzufordern.
Erstellen der Ausgänge
Eine Transaktionsausgabe wird in Form eines Skripts erstellt, das eine Belastung des Werts erzeugt und nur durch die Einführung einer Lösung für das Skript eingelöst werden kann. Einfacher ausgedrückt enthält die Transaktionsausgabe von Mark ein Skript, das etwa wie folgt lautet: „Diese Ausgabe ist an denjenigen zu richten, der eine Signatur aus dem der öffentlichen Adresse von Valerie entsprechenden Schlüssel präsentieren kann.“ Da nur Valerie die Wallet mit den Schlüsseln hat, die der Adresse entsprechen, kann nur Valerie’s Wallet solch eine Unterschrift präsentieren, um diese Ausgabe einzulösen. Mark wird daher den Ausgabewert mit einer Forderung nach einer Signatur von Valerie „belasten“.
Diese Transaktion wird auch eine zweite Ausgabe beinhalten, da Mark’s Geld in Form einer 0,0001 BTC Ausgabe ausgegeben wird, zu viel Geld für die 0,00001 BTC Tasse Kaffee. Mark wird 0,00009 BTC im Wechsel benötigen. Die Wechselgeldzahlung von Mark wird von der Geldbörse Mark’s als Ausgabe in der gleichen Transaktion wie die Zahlung an Valerie erstellt. Im Wesentlichen bricht Mark’s Wallet sein Geld in zwei Zahlungen: eins zu Valerie und eins zurück zu sich selbst. Er kann dann die Änderungsausgabe in einer nachfolgenden Transaktion verwenden (ausgeben).
Schließlich, für die Transaktion, die durch das Netzwerk rechtzeitig bearbeitet werden soll, wird die Wallet-Anwendung von Mark eine kleine Gebühr hinzufügen. Dies ist nicht explizit in der Transaktion; es wird durch den Unterschied zwischen Eingaben und Ausgaben impliziert.
Die 0,001 BTC der Eingabe wird nicht vollständig mit den zwei Ausgaben ausgegeben, da sie weniger als 0,0001 BTC ergeben. Die resultierende Differenz ist die Transaktionsgebühr, die vom Miner als Gebühr für die Validierung und die Einbeziehung der Transaktion in einen Block zur Aufzeichnung auf der Blockchain erhoben wird.
Hinzufügen der Transaktion zum Hauptbuch
Die Transaktion, die durch die Wallet-Anwendung von Mark erstellt wurde, ist 258 Byte lang und enthält alles, was erforderlich ist, um das Eigentum an den Guthaben zu bestätigen und neue Besitzer zuzuteilen. Jetzt muss die Transaktion an das Bitcoin-Netzwerk übertragen werden, wo sie Teil der Blockchain wird. Im nächsten Abschnitt werden wir sehen, wie eine Transaktion Teil eines neuen Blocks wird und wie der Block „geminet“ wird. Schließlich werden wir sehen, wie der neue Block, der Blockchain hinzugefügt wurde, zunehmend dem Netzwerk vertraut, wenn mehr Blöcke hinzugefügt werden.
Übertragung der Transaktion
Da die Transaktion alle für die Verarbeitung erforderlichen Informationen enthält, spielt es keine Rolle, wie oder wo sie an das Bitcoin-Netzwerk übertragen werden. Das Bitcoin-Netzwerk ist ein Peer-to-Peer-Netzwerk, an dem sich jeder Bitcoin-Client beteiligt, indem er sich mit mehreren anderen Bitcoin-Clients verbindet. Der Zweck des Bitcoin-Netzwerks besteht darin, Transaktionen und Blöcke an alle Teilnehmer weiterzugeben.
Wie es sich ausbreitet
Jedes System, z. B. ein Server, eine Desktop-Anwendung oder eine Wallet, das am Bitcoin-Netzwerk teilnimmt, indem es das Bitcoin-Protokoll „spricht“, wird Bitcoin-Knoten genannt. Marks Wallet-Anwendung kann die neue Transaktion an jeden Bitcoin-Knoten senden, mit dem sie über jede Art von Verbindung verbunden ist: wired, WIFI, mobile usw….. seine Bitcoin-Wallet muss nicht direkt mit Valerie’s Wallet verbunden sein und er muss nicht die Internetverbindung, die vom Café angeboten wird, benutzen, obwohl beide Optionen auch möglich sind. Jeder Bitcoin-Knoten, der eine gültige Transaktion empfängt, die er nicht zuvor gesehen hat, wird sofort an alle anderen Knoten weiterleiten, mit denen er verbunden ist. Daher verbreitet sich die Transaktion schnell über das Peer-to-Peer-Netzwerk und erreicht innerhalb weniger Sekunden einen großen Prozentsatz der Knoten.
Valerie’s Ansicht
Wenn Valerie’s Bitcoin Wallet Anwendung direkt mit Mark’s Wallet Anwendung verbunden ist, dann ist Valerie’s Wallet-Anwendung möglicherweise der erste Knoten, um die Transaktion zu erhalten. Wenn jedoch die Wallet von Mark die Transaktion über andere Knoten sendet, erreicht sie innerhalb weniger Sekunden Valerie’s Wallet. Die Wallet von Valerie wird die Transaktion von Mark sofort als eingehende Zahlung identifizieren, da sie die Ausgaben widerspiegelt, die durch die Schlüssel von Valerie eingelöst werden können. Valerie’s Wallet-Anwendung kann auch unabhängig verifizieren, dass die Transaktion gut aufgebaut ist, zuvor nicht verwendete Eingaben verwendet und genügend Transaktionsgebühren enthält , um in den nächsten Block aufgenommen zu werden. Valerie kann an dieser Stelle mit geringem Risiko davon ausgehen, dass die Transaktion in Kürze in einen Block aufgenommen und bestätigt wird.
Ein häufiges Missverständnis über Bitcoin-Transaktionen besteht darin, dass sie „bestätigt“ werden müssen, indem sie 10 Minuten auf einen neuen Block oder bis zu 60 Minuten auf volle sechs Bestätigungen warten. Obwohl Bestätigungen sicherstellen, dass die Transaktion vom gesamten Netzwerk akzeptiert wurde, ist eine solche Verzögerung für kleine Gegenstände wie eine Tasse Kaffee unnötig. Ein Händler kann eine gültige Transaktion mit geringem Wert ohne Bestätigungen akzeptieren, ohne dass das Risiko besteht, dass eine Kreditkartenzahlung ohne eine ID oder eine Unterschrift erfolgt, wie die Händler heute routinemäßig akzeptieren.