• Keine Ergebnisse gefunden

Die Originalversion von Bitcoin entspringt einem 2008 veröffentlichten Artikel von Satoshi Nakamoto11 und wird seither laufend als Open Source-Projekt weiterentwickelt. Bitcoin kann als eine Art von digitalem Bargeld betrachtet werden, das elektronische Zahlungen zwischen zwei Parteien ermöglicht, ohne dass dafür eine kontoführende Drittpartei notwendig ist. Bitcoin bringt Errungenschaften aus den Bereichen der Kryptographie und verteilten Systemen zu-sammen. Die wesentlichen Elemente werden im Folgenden kurz vorgestellt und anschliessend zur Erläuterung der Bitcoin-Blockchain zusammengeführt.

10 Vgl. zu den Grundlagen der Kryptographie, Ziff. 2.2.

11 Nakamoto 2008.

19/170

Kryptographische Hash-Funktionen

Eine kryptographische Hash-Funktion liefert für einen beliebig langen Eingabewert (Input) eine in der Länge fixierte Zeichenfolge (Hash) als Ausgabewert (Output). Zwei wichtige Eigenschaf-ten einer kryptographischen Hash-Funktion sind12:

 Einwegfunktion: Vom Hash kann mit Hilfe der Hash-Funktion nicht auf die ursprüngli-che Eingabe geschlossen werden;

 Kollisionsresistenz: Es ist praktisch unmöglich, dass zwei unterschiedliche Inputs den-selben Hash ergeben.

Digitale Signaturen

Eine digitale Signatur soll grundsätzlich die Eigenschaften von physischen Unterschriften auf Papier für digitale Dokumente nachbilden. Dazu muss sie zwei Eigenschaften aufweisen:

 Nur die unterzeichnende Person kann signieren, aber jede andere Person die Signatur validieren.

 Die Signatur gilt für ein bestimmtes Dokument und kann nicht ohne Zustimmung der unterzeichnenden Person auf andere Dokumente angewandt werden.

Grundsätzlich ist eine digitale Signatur eine Bit-Folge, die vom Absender mit Hilfe eines Sig-naturschemas13 für eine Nachricht erzeugt wurde. Typischerweise wird diese Signatur an die Nachricht angehängt und mit ihr verschickt, damit der Empfänger überprüfen kann, dass die Nachricht tatsächlich vom Absender stammt und nicht auf dem Übertragungsweg geändert wurde.14 Ein digitales Signaturschema ermöglicht die

 Erzeugung eines Schlüsselpaars, bestehend aus einem Signierschlüssel (Private Key) um Nachrichten zu signieren, sowie einem Verifikationsschlüssel (Public Key), um Sig-naturen zu überprüfen. Der Private Key muss geheim gehalten werden, der Public Key wird typischerweise öffentlich bekannt gegeben.

 Erzeugung einer Signatur für eine gegebene Nachricht mit einem gegebenen Private Key.

 Überprüfung der Gültigkeit einer gegebenen signierten Nachricht anhand eines gege-benen Public Keys.

Public Keys als Identitäten

Public Keys (oder Adressen) entsprechen Identitäten von Bitcoin-Nutzern. Ein Bitcoin-Nutzer kann von seiner Adresse eine Nachricht (resp. Transaktion) senden, indem er diese mit sei-nem Private Key signiert. Es gibt bei Bitcoin keine zentrale Stelle, welche die Benutzer regis-triert und identifiziert. Jeder Nutzer regisregis-triert sich selber, indem er – so oft er will – eine neue Adresse generiert. Auf den ersten Blick erweckt diese dezentrale Identitätsverwaltung den An-schein, den Nutzern eine grosse Anonymität und Privatsphäre zu gewähren. Dieser Eindruck relativiert sich bei einer Betrachtung über die Zeit. Jeder Adresse werden Bewegungen zuge-ordnet, welche für alle Teilnehmer ersichtlich sind und hinter welchen sich Muster erkennen lassen. Man spricht deshalb oft von Bitcoin als einem pseudonymen System.15

12 Für eine detaillierte Diskussion von kryptographischen Hash-Funktionen in Kryptowährungen, vgl. z. B.

Narayan/Bonneau/Felten/Miller/Goldfeder 2016.

13 Bitcoin stellt auf das von der US-Regierung entwickelte digitale Signaturschema Elliptic Curve Digital Signature Algorithm (ECDSA) ab.

14 Brünnler 2018: 4.

15 Vgl. auch Ziff. 2.3.5.

20/170

Transaktionen

Mit den vorgestellten Elementen kann der Aufbau einer Bitcoin Transaktion dargestellt werden (siehe Abbildung 1). Alice (Owner 1) sendet einen Token16 an Bob (Owner 2) indem sie den Hash der früheren Transaktion und Bobs Public Key signiert. Bob kann die Signatur und damit die früheren Besitzverhältnisse verifizieren. Dadurch hat Bob Gewissheit, dass die Nachricht von Alice signiert und nicht verfälscht wurde. Als Token wird dabei eine auf einer Blockchain abgelegte Information verstanden (wobei die Begriffe Coin und Token oft synonym verwendet werden können).

Abbildung 1 Bitcoin Transaktion (Satoshi 2008)

Noch nicht adressiert ist dabei das Problem des Double-Spending: Bob weiss nicht, ob Alice den Token bereits an jemanden anderen gesendet hat. In einem dezentralen System kann dieses Problem nur gelöst werden, wenn alle Transaktionen bekannt sind und sich alle Teil-nehmer über deren zeitliche Reihenfolge einig sind. Dazu sind weitere Elementen notwendig:

Blockchain

Eine Blockchain ist eine Datenstruktur, in der die Daten in einzelnen, verlinkten Blöcken abge-legt sind. Die Verlinkung der einzelnen Blöcke entsteht mit einem sogenannten Hashpointer.

Der Hashpointer enthält einerseits die Information, wo bestimmte Daten abgelegt sind,

16 Genauer gesagt: Eine Transaktion besteht aus Inputs und Outputs. Ein Output ist im Wesentlichen eine Summe dessen, was der Zahlungsempfänger als Resultat dieser Transaktion ausgeben kann. Ein Input ist eine Referenz auf einen Output einer vorigen Transaktion. Wenn Alice 5 Token hat und diese an Bob überweisen will, dann erstellt sie eine Transaktion mit einem Input und einem Output. Der Input referenziert ihre 5 Token. Der Output enthält die Zahl 5 und den Public Key von Bob. Wenn Bob mit diesen 5 Token nun von Charlie einen Kaffee im Wert von nur 3 Token kaufen möchte, so erstellt er eine Transaktion mit einem Input und zwei Outputs. Der Input referenziert den Output von Alices Transaktion. Der erste Output enthält die Zahl 3 und den Public Key von Charlie. Der zweite Output enthält die Zahl 2 und Bobs eigenen Public Key – er überweist also 2 der überwiesenen 5 Token an sich selbst. Analog gibt es eine Transaktionen mit zwei Inputs und einem Output, wenn Charlie aus unterschiedlichen Quellen je 2 und 3 Token erhalten hat und nun 5 an Dave überweisen will (vgl. Brünnler 2018: 38).

21/170

rerseits einen Hash dieser Daten (siehe Abbildung 2). Werden die Daten eines Blockes ver-ändert, verändert sich auch der Hash dieses Blockes. Die Blockchain ist damit eine mögliche Form eines Hauptbuches (Ledger), in dem Daten abgelegt werden.

Abbildung 2 Blockchain mit Hashpointers

Digitale Zeitstempel

Digitale Zeitstempel dienen dazu, die Existenz von bestimmten Daten zu einem bestimmten Zeitpunkt nachzuweisen. Bei Bitcoin wird dem Hash eines Blockinhalts ein Zeitstempel hinzu-gefügt. Damit wird bewiesen, dass der Blockinhalt zu einem bestimmten Zeitpunkt existiert hat.

Proof-of-Work Konsensmechanismus

Das Bitcoin-System ist darauf ausgerichtet, dass die Akteure unter sich einen Konsens über den Ledger finden, ohne dass eine zentrale Stelle diese Rolle übernimmt. Diesem Konsens unterliegt schliesslich auch die Zuordnung, wer wieviel Bitcoin besitzt. Dies entspricht auch dem Prinzip der Wahrheit bei Bitcoin: Die Zuordnung eines Bitcoins ist nichts anderes, als dass die Nodes sich einig sind, wem dieser Bitcoin zugeordnet wird.17

Die Konsensfindung in einem dezentralen System stellt eine grosse Herausforderung dar. Im Fall von Bitcoin werden von den Nutzern verschiedene Transaktionen an das Netzwerk ge-schickt und die einzelnen Nodes müssen Konsens darüber finden, welche Transaktionen in welcher Reihenfolge stattgefunden haben. Denn nur wenn sich alle Nodes auf ein bestimmtes Set von Transaktionen einigen können (zusammengefasst in einem Block), kann das Double Spending Problem gelöst werden. Die Konsensfindung findet jeweils statt, wenn Transaktio-nen zur Erstellung eines Blocks zusammengefasst werden könTransaktio-nen.

Bitcoin verwendet zur Konsensfindung den Proof-of-Work Mechanismus. Dabei werden mittels (erheblicher) Rechenleistung solange kryptographische Funktionen ausgeführt, bis das Resul-tat gewisse Eigenschaften aufweist. Man spricht von einem gültigen Proof-of-Work, wenn die gesuchte Eigenschaft erfüllt ist. Die kryptographische Funktion macht es dabei unmöglich, die Gültigkeit des Proof-of-Work zu überprüfen, ohne die Funktion tatsächlich auszuführen. Aber mit einer gültigen Eingabe ist es trivial, deren Gültigkeit zu überprüfen. Dadurch wird der Teil-nehmer gezwungen, durch wiederholtes ausprobieren (Work) eine gültige Eingabe zu erraten.

Bei Bitcoin wendet man eine Einwegfunktion (konkret eine SHA-256-Hash-Funktion18) solange an, bis die Ausgabe ein gewisses Präfix (konkret mehrere 0-Ziffern) aufweist.

17 Narayan/Bonneau/Felten/Miller/Goldfeder 2016: 47.

18 SHA steht für Secure Hash Algorithm. Dieser wurde von der amerikanischen National Security Agency (NSA) entwickelt.

22/170

Bitcoin Netzwerk

Das Bitcoin Netzwerk ist ein Peer-to-Peer Netzwerk und besteht aus vielen gleichberechtigten Nodes. Jeder kann einen Node betreiben, indem er eine Bitcoin Client Software auf seinem Computer installiert. Der Zweck des Netzwerkes besteht darin, die Blockchain zu verwalten.

Dazu wird sichergestellt, dass alle Transaktionen validiert (korrekte Form, kein Double-Spen-ding) und an alle Nodes verteilt werden. Dasselbe geschieht mit neu erstellten Blöcken. Hier beinhaltet die Validierung eine Überprüfung des Hash für den erstellten Block, eine Überprü-fung aller darin enthaltenen Transaktionen sowie die Sicherstellung, dass der Block an den längsten Strang19 der Blockchain angefügt wurde.

Funktionsweise von Bitcoin

Mit den beschriebenen Elementen können der dezentrale Charakter und das Funktionieren des Bitcoin beschrieben werden:

Wer Bitcoin senden oder empfangen will muss dafür nicht seine Identität preisgeben, sondern er erstellt eine pseudonyme Adresse und den dazugehörigen Private Key. Die Instruktionen für den Transfer von Bitcoins (d.h. für eine spezifische Transaktion) zwischen verschiedenen Adressen werden anschliessend in Form einer Nachricht an das Peer-to-Peer-Netzwerk ge-schickt. Das Netzwerk ist darum bemüht, dass alle Nachrichten an alle teilnehmenden Nodes verteilt werden. Die in den Nachrichten enthaltenen Transaktionen müssen vom Netzwerk va-lidiert werden (vgl. oben). Die Miner (die validierenden Nodes) fassen hierzu Transaktionen zu einem Block zusammen und versuchen, möglichst schnell den Proof-of-Work zu erbringen und diesen zur Verifizierung an das Netzwerk zu senden. Die Nodes akzeptieren einen Block nur dann, wenn die darin enthaltenen Transaktionen gültig sind. Wenn dies der Fall ist, beginnen die Miner an der Erstellung des nächsten Blockes zu arbeiten. Miner werden mit neu geschaf-fenen Bitcoin sowie mit Transaktionsgebühren entschädigt.

Nodes erachten immer die längste Kette20 von aneinandergehängten Blöcken als die Richtige.

Die Unwiderruflichkeit einer Transaktion wird deshalb mit jedem angehängten Block wahr-scheinlicher, aber in diesem probabilistischen Ansatz nie definitiv.

Forks

Das Bitcoin Protokoll wird laufend weiterentwickelt.21 Eine neue Version des Protokolls muss jeweils von den Nodes im Netzwerk übernommen und implementiert werden. Dies gestaltet sich in der Praxis schwierig, da den Nodes nicht vorgeschrieben werden kann, eine Änderung des Protokolls durchzuführen. Damit verfügen die Nodes über unterschiedliche Versionen des Protokolls, was – abhängig von der Änderung – unterschiedliche Folgen haben kann.22 Werden mit der Änderung die Regeln so verändert, dass Blöcke validiert werden, die in der früheren Version nicht validiert worden wären (z. B. grössere Blöcke), spricht man von einer Hard Fork. Dadurch entsteht eine Kette von Blöcken mit den neuen Eigenschaften, welche von den Nodes mit neuem Protokoll weiterentwickelt wird. Da diese Blöcke von den anderen Nodes als ungültig betrachtet werden, existieren neu zwei parallele Transaktionshistorien mit einer gemeinsamen Vorgeschichte: die eine ohne die Änderung, die andere mit. Die beiden Ketten sind inkompatibel und nicht mehr interoperabel.

19 Per Definition ist der längste Strang immer der mit der meisten kumulierten Rechenleistung. Ansonsten könnte relativ einfach eine längere Kette mit einer tieferen difficulty (also weniger kumulierter Rechenleistung) erstellt werden.

20 Narayan/Bonneau/Felten/Miller/Goldfeder 2016: 47.

21 Dies geschieht grundsätzlich Open Source, das heisst jeder kann Änderungen im Protokoll anbringen.

Treibende Kraft ist dabei eine Gruppe von rund 100 Programmierern (Bitcoin-Core).

22 Narayan/Bonneau/Felten/Miller/Goldfeder 2016: 73 ff.

23/170

Werden mit einer Änderung die Validierungsregeln verschärft, führt dies dazu, dass Nodes mit dem neuen Protokoll einige der von alten Nodes akzeptierten Blöcke ablehnen. Wenn die Mehrheit der Nodes mit dem neuen Protokoll arbeitet, werden sich die neuen Regeln durch-setzen. Die Miner mit dem alten Protokoll werden feststellen, dass einige ihrer vorgeschlage-nen Blöcke abgelehnt werden und die Entschädigung dafür entfällt. Wollen sie diese Verluste nicht hinnehmen, werden sie das neue Protokoll übernehmen. Dadurch wird eine permanente Abtrennung einer Kette von Blöcken verhindert. Man spricht von einer Soft Fork.