Archiv Juni 2015

Bitcoin Teil 3 – Hashes, Public-Key-Kryptosysteme „für Dummies“ und die Blockchain

Dies ist Teil 3 meiner Blog-Serie über Kryptogeld. Den ersten, einführenden Teil finden Sie hier. Der zweite Teil über das sogenannte Schürfen von Bitcoin ist hier zu finden.

Kurze Wiederholung – Bitcoin = direkte elektronische Transaktionen ohne Mittelsperson

Im ersten Teil habe ich die Hauptidee hinter dem Bitcoin-Protokoll erläutert, das elektronische Peer-to-Peer-Transaktionen ohne eine Mittelsperson ermöglicht. Kurz zusammengefasst funktioniert das Verfahren folgendermaßen:

  1. Ich besitze eine bestimmte Summe Bitcoin. Dies kann öffentlich überprüft werden, da jede Bitcoin-Transaktion seit der allerersten (dem sogenannten Genesis Block) in ein öffentliches Kassenbuch eingetragen wird, der Blockchain (vormals auch auf Deutsch Blockkette genannt). Deshalb kann ich nicht vorgeben, mehr zu besitzen, als ich habe.
  2. Ich kann dann eine bestimmte Bitcoin-Summe an einen Empfänger senden, und ich kann dabei nicht schummeln, da die Transaktion öffentlich an alle Knoten im Netzwerk übermittelt wird.
  3. Ich könnte natürlich gleichzeitig mehr Bitcoins versenden, als ich besitze, aber das Netzwerk entscheidet durch eine öffentliche Abstimmung (wobei tatsächlich ein kompliziertes mathematisches Problem gelöst wird), dem sogenannten Mining oder Schürfen, welche Transaktionen gültig sind und welche nicht.
  4. Die Transaktionen, die als gültig gewählt wurden, werden in die Blockchain eingetragen und sind endgültig. Und wenn mein nachweisliches Bitcoin-Guthaben erschöpft ist, kann ich nicht mehr ausgeben, als ich besitze, da jeder und jede das in der Blockchain nachprüfen kann.

Die zwei Schlüsselelemente im Bitcoin-Prozess sind das öffentliche Kassenbuch, die Blockchain und das Abstimmverfahren, das Schürfen (Mining), das im Wesentlichen daraus besteht, dass die Knoten des Bitcoin-Netzwerks ein komplexes mathematisches Problem lösen. Ich habe Mining im vorangegangenen Blog-Beitrag erläutert, den Sie hier finden. Sehen wir uns nun das Kassenbuch, die Blockchain genauer an.

Die Blockchain (vormals auch Blockkette)

Die Blockchain ist, wie schon mehrmals erwähnt, das öffentliche Kassenbuch mit allen Bitcoin-Transaktionen seit der ganz ersten Transaktion, dem Genesis-Block. Alle aktiven Knoten im Bitcoin-Netzwerk haben eine Kopie der Blockchain. Jedes Mal, wenn ein neuer Block via Schürfen entdeckt wird, wird er an die Blockchain angehängt, wie schon der Name andeutet. Die Blockchain ist also nichts anderes als eine sehr lange Liste mit Bitcoin-Transaktionen.

Grob umrissen und ohne Crypto-Lingo enthält ein Block die folgenden Hauptelementen (plus ein paar weitere, das sind aber hier nicht relevante technische Details):

  • Einen Zeitstempel
  • Einen Verweis auf den folgenden Block — deshalb die Bezeichnung „Kette“
  • Die Transaktionen, die mit diesem Block bestätigt und damit endgültig abgeschlossen und öffentlich bekanntgegeben werden
  • Das komplexe mathematische Problem, das von den Schürfern zur Auffindung des nächsten Blocks gelöst werden muss

Auf die Blockchain kann man öffentlich über eine lokale API, d. h. einen Bitcoin-Client, zugreifen, oder auch via Webbrowser auf Blockchain.info, wie unten abgebildet.

Blockchain.info

Blockchain.info

In der webbasierten API sehen Sie die Höhe der Kette, wie die Blocknummer genannt wird, das Alter (den Zeitstempel), die Anzahl und den Gesamtwert der gesendeten Transaktionen im jeweiligen Block, den Namen des Computers (oder Mining-Pools), der das jeweilige mathematische Problem gelöst hat (also den Block geschürft hat) und die Speichergröße des Blocks. Darunter ist links eine Liste der neuesten Transaktionen sowie ein Suchfeld rechts, wo Sie nach bestimmten Transaktionen suchen können, und ein News-Feed.

Wenn Sie auf einen bestimmten Block klicken (also auf die Nummer des Blocks in der Spalte „Höhe“), werden detaillierte Informationen über den Block und die Transaktionen darin angezeigt, wie in der Abbildung unten illustriert. Die folgenden Abbildungen stammen von der englischsprachigen Schnittstelle von Blockchain.info, die Schnittstelle ist jedoch auch auf Deutsch verfügbar. Wenn Sie auf die eingebettete Karte klicken, können Sie sogar sehen, woher die Transaktionen stammen. Die Karte ist jedoch mit Vorsicht zu interpretieren, da viele BTC-Benutzer aus den verschiedensten Gründen VPNs benutzen, um ihren tatsächlichen Standort zu verbergen.

Detailed block information

Detaillierte Block-Informationen

Wenn Sie weiter nach unten scrollen, wird eine Liste der Transaktionen angezeigt, wie unten illustriert. Alle Transaktionen sind für den Laien etwas ungewohnt mit einem sogenannten Hash-Wert nummeriert. Die erste Transaktion „647b…“ zeigt die Belohnung für den Miner, der den Block gefunden hat, in diesem Fall 25 BTC. Die Belohnung ist daran zu erkennen, dass es bei dieser Transaktion keinen Eingang gibt, d. h. die Bitcoins wurden geschürft.

Transactions in the block

Transaktionen im Block

Die anderen Transaktionen zeigen Ein- und Ausgänge sowie die BTC-Menge, die übermittelt wurde. Die Ein- und Ausgänge sind mit Bitcoin-Adressen gekennzeichnet, die ebenfalls in Form von Hash-Werten kodiert werden. Bitcoin-Adressen starten im Allgemeinen mit „1“, in manchen Fällen mit „3“. Die Adressen haben eine ähnliche Funktion wie Kontonummern, sind jedoch nicht mit fixen Kontonummern gleichzusetzen, die sich im Allgemeinen nicht ändern! Bevor ich jedoch die restlichen Eigenschaften der Blockchain erklären kann, muss ich zuerst die folgende Frage beantworten:

Wie werden diese komischen Adressen erzeugt, und was ist eigentlich ein Hash?

Hash-Funktionen

Als Hash bezeichnet man das Ergebnis einer Hash-Funktion. Hash-Funktionen sind mathematische Funktionen, die beliebig lange alphanumerische Eingaben in eine alphanumerische Ausgabe mit einer bestimmten Länge umwandeln. Nicht-Mathematiker, keine Angst, in diesem Beitrag gibt es so gut wie keine Formeln und Gleichungen.

Hash-Funktion

Nehmen wir die berühmte Phrase „To be, or not to be“ aus Shakespeares Hamlet als Eingabe in eine bestimmte Hash-Funktion, SHA-1. Wir erhalten die Ausgabe
03c6691ebdd161363457e3c73a8ed44186536cf9.

Nehmen wir nun an, dass Shakespeare und sein Lektor einen Disput über die richtige Interpunktion haben, und letzterer gibt „To be or not to be“ ohne Komma in SHA-1 ein. Das Ergebnis lautet nun
6025f94596c2445f0a776d9bac929829de3c948d.

Angenommen, Shakespeare wird ins 21 Jahrhundert gebeamt und tweetet „2B~not2B„. Die Ausgabe von SHA-1 lautet nun
5ed97a13c423c7abea25de49472f7043f156d31c.

Wie Sie sehen können, sind alle Hashes exakt gleich lang, unabhängig von der Länge der Eingabe. Außerdem sind alle Hashes sehr verschieden voneinander, auch wenn die Eingaben die gleiche Bedeutung haben, und auch wenn sich zwei der Eingaben nur in einem Komma voneinander unterscheiden.

Zusammengefasst haben Hash-Funktionen also die folgenden Eigenschaften:

  • Eine bestimmte Eingabe resultiert in einer bestimmten Ausgabe einer vorbestimmten Länge, die üblicherweise, jedoch nicht unbedingt, kürzer als die Eingabe ist.
  • Auch wenn die Eingabe nur leicht geändert wird, ändert sich die Ausgabe enorm.
  • Wenn die Hash-Funktion eine kryptografische ist, ist es darüber hinaus extrem schwer, wenn nicht praktisch unmöglich, die ursprüngliche Eingabe aus der Ausgabe zu rekonstruieren. Der Grad der Unmöglichkeit hängt von der jeweils eingesetzten Verschlüsselung ab.

Aufmerksame Leserinnen und Leser werden nun bemerkt haben, dass es möglich ist, dass mehrere verschiedene Eingaben die gleiche Ausgabe liefern, da die Eingaben im Allgemeinen viel länger als die Ausgaben sind, die ebenfalls aus den gleichen alphanumerischen Zeichen bestehen, das Ganze also keine eineindeutige Zuordnung ist. Wenn also mehrere Eingaben die gleiche Ausgabe liefern, kommt es zu einer Kollision. Im oben verwendeten Beispiel ist SHA-1 ein Algorithmus mit 160 Bits, d. h. mit 160 Stellen, die entweder 0 oder 1 sein können. Deshalb gibt es 2^160 oder mehr als 10^48 (eine 1 mit 48 Nullen) verschiedene Werte. Ohne hier zu sehr ins Detail zu gehen, sei gesagt, dass bei den meisten heute verwendeten Algorithmen eine Kollision sehr unwahrscheinlich ist.

Kehren wir nun zu den Bictoin-Transaktionen zurück, die wir uns weiter oben angesehen haben. Eine Bitcoin-Adresse dient also nur der Kennzeichnung des Senders und des Empfängers jeder Transaktion. Da jedoch alle Knoten Zugriff auf die Blockchain haben, kann jedermann und jederfrau sehen, wer wo wann wem wieviel Geld übermittelt hat. Wenn Sie dies zu sehr an Orwell’s 1984 erinnert, keine Sorge, Bitcoin hat ein gewisses Maß an Pseudonymität, wenn nicht gar Anonymität, eingebaut. Bevor ich jedoch genauer erklären kann, wie das funktioniert, muss ich ein weiteres Konzept aus der Kryptografie erklären, die asymmetrische Kryptografie, auch Public-Key-Kryptografie genannt.

Public-Key-Kryptografie oder Die Rückkehr der byzantinischen Generäle

Ja, die byzantinischen Generäle aus Teil 1 tauchen hier wieder auf, um asymmetrische Kryptosysteme zu erklären. Ich habe die folgende ausgezeichnete Erklärung von Panayotis Vryonis geborgt (und leicht abgeändert).

Nehmen wir an, es gibt einen byzantinischen General, der mit seinen Leutnants über einen geheimen Briefkasten kommuniziert. Da sich die Geschichte im Altertum abspielt, handelt es sich hierbei um einen echten, physischen Briefkasten mit einem physischen Schloss. Bei diesem Schloss handelt es sich um ein Spezialschloss mit 3 Positionen, A, B und C, wie in der Abbildung unten illustriert. Der Briefkasten ist in den Positionen A und C versperrt, in Position B kann er geöffnet werden.

Schloss mit 3 Positionen

Schloss mit 3 Positionen, A und C sind versperrt, B ist geöffnet.

Der General hat mehrere Spezialschlüssel für dieses Schloss, und zwar einen Satz identischer Schlüssel, die er unter seinen Leutnants verteilt, die sich nur nach links gegen den Uhrzeigersinn drehen lassen, also von C nach B nach A. Wir nennen diese Schlüssel öffentliche Schlüssel. Es gibt auch einen ganz besonderen Schlüssel, den der General selbst behält, der nur nach rechts im Uhrzeigersinn drehbar ist, von A nach B nach C, der private Schlüssel des Generals.

Byzantinischer Schlüssel

Byzantinischer Schlüssel

Wenn nun der General seinen Leutnants eine Nachricht hinterlassen will, schreibt er diese auf Pergament und sperrt sie mit seinem (privaten) Schlüssel in den Briefkasten, wobei er das Schloss ganz nach C dreht. Der nächste Leutnant, der vorbeikommt, sperrt den Briefkasten mit seinem (öffentlichen) Schlüssel auf, wobei er den Schlüssel gegen den Uhrzeigersinn in die geöffnete Position B dreht, um die Nachricht zu lesen. Dieser Leutnant ist aber ein Verschwörer, der den General stürzen will. Um seinen Plan umzusetzen, entwirft er eine eigene Nachricht, wobei er vorgibt, der General zu sein, und sperrt sie in den Briefkasten. Dabei dreht er den Schlüssel ganz nach links in Position A, da dies die einzige Richtung ist, in der sich der (öffentliche) Schlüssel drehen lässt. Dabei hat er die Schlauheit des Generals nicht bedacht, denn der Einzige, der nun den Briefkasten öffnen kann, ist der General selbst, da dieser den einzigen Schlüssel besitzt, der nach rechts drehbar ist. So kann der General sicherstellen, dass er der Einzige ist, der Nachrichten in den Briefkasten sperren kann, die von den Leutnants mit den öffentlichen Schlüsseln gelesen werden können. Auf diese Weise ist die Authentizität der Nachricht garantiert.

Genauso funktionieren auch Public-Key-Kryptoverfahren, nur sind hier die Schlüssel digital und nicht aus Bronze. Das oben beschriebene Verfahren wird auch als digitale Unterschrift bezeichnet, wobei die Asymmetrie zwischen öffentlichen und privaten Schlüsseln die Echtheit der Unterschrift garantiert.

Nochmals in Kurzform:

  1. Es wird ein eindeutiges Paar aus einem öffentlichen und einem privaten Schlüssel erstellt.
  2. Der öffentliche Schlüssel wird an alle Empfänger übermittelt.
  3. Der private Schlüssel bleibt geheim.
  4. Alle Nachrichten oder (im Fall von Bitcoin) Transaktionen werden mit dem privaten Schlüssel verschlüsselt, d.h. also virtuell in den obigen Briefkasten gesperrt.
  5. Die Nachricht wird dann an die Empfänger versandt.
  6. Die Nachricht (oder Transaktion) wird mit dem öffentlichen Schlüssel authentifiziert und entschlüsselt.
  7. Es ist (fast) unmöglich, ohne Kenntnis des privaten Schlüssels falsche Nachrichten (oder Transaktionen) zu versenden. Schwindler haben hier also das Nachsehen. (Mit ausreichend Computerleistung können natürlich alle bekannten Verschlüsselungsverfahren im Prinzip geknackt werden. Praktisch ist es jedoch so gut wie unmöglich, denn das würde mehr Computerleistung erfordern, als es derzeit auf dem gesamten Planeten gibt. Es sei denn, jemand erfindet endlich einen voll funktionsfähigen Quantencomputer.)

Warnung: Da für Bitcoin-Transaktionen private Schlüssel erforderlich sind, sollten Sie NIE Ihren privaten Schlüssel an andere weitergeben. Außerdem, falls Sie Ihren privaten Schlüssel verlieren, haben Sie ebenfalls Pech gehabt, denn alle mit diesem Schlüssel getätigten Transaktionen sind für immer verloren!

Die Blockchain – Teil 2

Sehen wir uns nochmals die Transaktionen von oben an:

Transactions in the block

Transaktionen im Block

Jede der gezeigten Adressen ist als Hash-Wert kodiert, der im Wesentlichen aus einem öffentlichen Schlüssel berechnet wird. Deshalb ist also jede Adresse mit einem privaten Schlüssel verknüpft, der im Allgemeinen vom jeweiligen Eigentümer bzw. der jeweiligen Eigentümerin in einer elektronischen Brieftasche, der „Wallet“, gespeichert wird. Mit einem privaten Schlüssel können Sie eine fast unbegrenzte Anzahl an öffentlichen Adressen erzeugen, wenn Sie wollen, eine neue Adresse für jede einzelne Transaktion. Der wesentliche Punkt hier ist, dass Sie keine Bitcoin-Adressen „besitzen“, Sie haben einen privaten Schlüssel, der mit einer großen Anzahl an öffentlichen Adressen assoziiert ist. Da alle Transaktionen öffentlich zugänglich sind, wird empfohlen, nicht für jede Transaktion die gleiche Adresse zu verwenden.

Sehen wir uns nun die zweite Transaktion, „7cdb…“ oben genauer an. Hier sendet die Adresse „1M4sn…“ 1,2 BTC an die Adresse „1A83Re…“. Was jedoch ist mit den 28,79999671 BTC, die im Bild oben in der gleichen Transaktion an die Adresse „18TLH…“ gesandt werden? Dies ist die BTC-Entsprechung von Wechselgeld. Bevor Sie nun komplett verwirrt werden, muss ich erklären, dass Bitcoins nicht als Münzen in Einheiten von BTC oder gar Satoshi (0,00000001 BTC oder ein hundert Millionstel BTC, die derzeit kleinste Einheit eines BTC) gespeichert werden. Bitcoins werden nirgendwo gespeichert. Es werden ausschließlich Transaktionen gespeichert, über die Blockchain. Wie wir oben gesehen haben, können die Transaktionen öffentlich von jedem und jeder eingesehen werden. Sehen wir uns diese Transaktion hier nun etwas genauer an. Die Details können durch Anklicken der Hash-Nummer der Transaktion angezeigt werden, wie in der Abbildung unten.

Bitcoin transaction detail

Detail einer Bitcoin-Transaktion

Nehmen wir an, Sie sind brandneu und fangen mit Bitcoin von Null an. Sie besorgen sich eine Wallet (siehe nächster Blogbeitrag), richten Ihren privaten Schlüssel ein und generieren eine oder mehrere Emfpangsadressen. Eine (sehr) großzügige Person sendet Ihnen 30 BTC. Nun haben Sie 30 BTC in Ihrer Geldbörse. Sie wollen nun 1,2 BTC an jemanden senden, in diesem Fall an die Adresse „1A83Re…“. Sie richten also die Transaktion ein, aber der Bitcoin-Algorithmus funktioniert nur mit ganzen Transaktionen, deshalb frisst der Algorithmus quasi die gesamten 30 BTC auf, senden 1,2 BTC an Adresse „1A83Re…“ und sendet das Wechselgeld von 28,8 BTC minus Mining-Gebühr (Transaktionsgebühr) 0,00000329 BTC, also 28,79999671 BTC wieder an Sie zurück, unter einer neuen Adresse „18TLH…“. Stellen Sie sich vor, Sie hätten 30 Euro in Ihrer Brieftasche, in Form eines 30-Euro-Scheins. Wenn Sie nun jemandem 1,2 Euro geben wollen, reißen Sie auch nicht 4 Prozent des Geldscheins herunter, sondern geben der Person den gesamten Schein und bekommen dementsprechend Wechselgeld zurück. Genau dies geschieht hier auch, Sie erhalten 28,79999671 BTC Wechselgeld, das in der Blockchain vermerkt wird.

Sie können diese 28,79999671 BTC oder einen Teil davon nun unter der in der Blockchain vermerkten Adresse „18TLH…“ versenden oder auch eine ganz neue Adresse erstellen und Ihre BTC unter dieser neuen Adresse versenden. Der Beweis, dass diese BTC Ihnen gehören, oder eigentlich, dass Sie der Empfänger der Transaktion sind — wie schon gesagt, Sie besitzen eigentlich keine Bitcoins, Sie besitzen nur Quittungen der Transaktionen — , erfolgt über die Adresse, die nur Sie mit Ihrem privaten Schlüssel erstellen können, und ihrer digitalen Unterschrift, die ebenfalls nur Sie mit Ihrem privaten Schlüssel erstellen können. Beide können von allen Knoten im Bitcoin-Netz mithilfe des öffentlichen Schlüssels, der zu Ihrem privaten Schlüssel passt, überprüft werden.

Die Bitcoin-Entwickler empfehlen die Verwendung einer neuen Adresse für jede Transaktion aus Anonymitätsgründen, aber das ist Ihnen überlassen. Bitte bedenken Sie, dass alle Transaktionen seit der ganz ersten Genesis-Transaktion öffentlich sichtbar sind. Es gibt viele legitime Gründe, warum Sie nicht alle Transaktionen öffentlich bekanntgeben möchten, auch wenn Sie keine Geldwäsche betreiben oder in sonstige dubiose Geschäfte verwickelt sind. Es ist mir zum Beispiel egal, ob die ganze Welt weiß, dass ich gerade Brokkoli beim Gemüsehändler gekauft habe. Ich will jedoch nicht, dass alle Fahrraddiebe der Umgebung genau über meinen letzten Fahrradkauf Bescheid wissen.

Wenn Ihnen nach Teilen 1, 2 und 3 dieser Beitragsreihe der Kopf brummt, keine Sorge, im Grunde ist die Sache nicht kompliziert. Die praktische Umsetzung ist mit Hash-Funktionen, Kryptoverfahren usw. einigermaßen verwirrend, die grundlegende Idee bleibt jedoch, dass Bitcoin das virtuelle Äquivalent von Bargeld darstellen will, wobei Verbrechern Diebstähle möglichst schwer gemacht werden sollen. Deshalb enthält der Algorithmus ein öffentliches Abstimmungssystem, Mining genannt, eine Überprüfung der Besitzverhältnisse durch Public-Key-Kryptoverfahren und eine gewisse Anonymität durch kryptografische Hash-Funktionen.

Im nächsten Beitrag werde ich mich praktischeren Dingen zuwenden und erklären, wie man nun eine elektronische Bitcoin-Brieftasche einrichtet und BTC sendet und empfängt. Wie jedoch schon mehrmals erwähnt, ist Kryptogeld mancherorts illegal, und an manchen Orten ändert sich die Rechtslage ständig, wie auch hier in Kalifornien. Deshalb stellt keine Aussage auf dieser Website und in diesem Blog-Beitrag eine rechtliche oder finanzielle Beratung dar, einfach deswegen, weil ich bereits vollzeitbeschäftigt bin und die Verfolgung der sich ständig ändernden Rechtslage mehr als eine Vollzeitbeschäftigung darstellen würde.

Bitcoin Teil 2 – Bitcoin-Schürfen

Dies ist Teil 2 meiner Blog-Serie über Kryptogeld. Den ersten, einführenden Teil finden Sie hier.

Kurze Wiederholung – Bitcoin = direkte elektronische Transaktionen ohne Mittelsperson

Im ersten Teil habe ich die Hauptidee hinter dem Bitcoin-Protokoll erläutert, das elektronische Peer-to-Peer-Transaktionen ohne eine Mittelsperson ermöglicht. Kurz zusammengefasst funktioniert das Verfahren folgendermaßen:

  1. Ich besitze eine bestimmte Summe Bitcoin. Dies kann öffentlich überprüft werden, da jede Bitcoin-Transaktion seit der allerersten (dem sogenannten Genesis Block) in ein öffentliches Kassenbuch eingetragen wird, der Blockchain (vormals auch Blockkette genannt). Deshalb kann ich nicht vorgeben, mehr zu besitzen, als ich habe.
  2. Ich kann dann eine bestimmte Bitcoin-Summe an einen Empfänger senden, und ich kann dabei nicht schummeln, da die Transaktion öffentlich an alle Knoten im Netzwerk übermittelt wird.
  3. Ich könnte natürlich gleichzeitig mehr Bitcoins versenden, als ich besitze, aber das Netzwerk entscheidet durch eine öffentliche Abstimmung (wobei tatsächlich ein kompliziertes mathematisches Problem gelöst wird), dem sogenannten Mining oder Schürfen, welche Transaktionen gültig sind und welche nicht.
  4. Die Transaktionen, die als gültig gewählt wurden, werden in die Blockchain eingetragen und sind endgültig. Und wenn mein nachweisliches Bitcoin-Guthaben erschöpft ist, kann ich nicht mehr ausgeben, als ich besitze, da jeder und jede das in der Blockchain nachprüfen kann.

Die zwei Schlüsselelemente im Bitcoin-Prozess sind das öffentliche Kassenbuch, die Blockchain und das Abstimmverfahren, das Schürfen (Mining), das im Wesentlichen daraus besteht, dass die Knoten des Bitcoin-Netzwerks ein komplexes mathematisches Problem lösen. Die Blockchain wird das Thema des nächsten Blogbeitrags sein, im Folgenden werde ich das Konzept des Minings erklären.

Kohle-Schürfen, aber nicht im Bergwerk

Die wesentliche Aufgabe des Mining-Algorithmus ist sicherzustellen, dass die „Abstimmung“ bzw. Bestätigung so erfolgt, dass niemand, der schlechte Absichten hegt, den Prozess zu seinen Gunsten beeinflussen kann. Und dies ist genau das, was das Mining-Verfahren zuwege bringt.

Kohleschürfen

Herkömmliche Form des Kohleschürfens (Bildspende der Firma Gebr. Eickhoff Maschinenfabrik und Eisengießerei, Bochum.)

Mining ist der Prozess, durch den ein Satz neuer Transaktionen bestätigt und somit endgültig abgeschlossen wird, indem ein Datensatz mit diesen Transaktionen an das öffentliche Kassenbuch, die Blockchain angehängt wird. Durch Mining werden auch neue Bitcoins „geprägt“, daher auch die Bezeichnung „Schürfen“. Die Erzeugung neuer Bitcoins und die Bestätigung eines Satzes mit Transaktionen erfolgt stückweise, in sogenannten „Blocks“, die an die Blockchain angehängt werden. Der Bitcoin-Algorithmus ist so ausgelegt, dass neue Blocks ca. alle 10 Minuten „entdeckt“ werden.

Das Verfahren läuft ungefähr folgendermaßen ab:

  1. Das Bitcoin-Netzwerk besteht aus vielen aktiven Knoten, auf denen der Bitcoin-Client ausgeführt wird. Wenn ein Block entdeckt wird, wird er an die Blockchain angehängt, und Informationen über den neuen Block werden in Sekundenbruchteilen an das gesamte Netzwerk versandt. Dieser neue Block enthält auch eine neue mathematische Aufgabe, die zu lösen ist, um den nächsten Block zu entdecken.
  2. Neue, nicht bestätigte Transaktionen, d. h. eigentlich Transaktionsvorschläge werden von den Personen, die diese tätigen wollen, ins Netzwerk gesandt, zusammen mit einer Transaktionsgebühr. Da die Computerübertragung zwar schnell, aber nicht unendlich schnell erfolgt, erhalten nicht alle Knoten die Informationen über alle Transaktionsvorschläge in der gleichen Reihenfolge. Deshalb empfängt also nicht jeder Knoten die gleiche Liste mit Transaktionsvorschlägen.
  3. In der Zwischenzeit berechnen nun alle aktiven Knoten im Netzwerk Lösungsvorschläge für das mathematische Problem aus Schritt 1, wobei nicht alle Knoten das gleiche Problem berechnen, da hierbei Zufallsgeneratoren zum Einsatz kommen. Ich werde die mathematischen Details in einem weiteren Beitrag dieser Serie erläutern.
  4. Nach durchschnittlich 10 Minuten entdeckt einer der Knoten die Lösung zum mathematischen Problem aus Schritt 1 und übermittelt die Lösung zusammen mit seiner lokalen Kopie der neuen Transaktionsliste an das gesamte Netzwerk.
  5. Der Rest der Knoten prüft die Lösung und diese spezifische Liste mit Transaktionsvorschlägen und bestätigen so die Transaktionen, die dieser bestimmte Knoten erhalten hat.
  6. Nach 100 Bestätigungen, dass alles mit rechten Dingen zugeht, kassiert der glückliche (oder leistungsstarke) Knoten, der die Lösung gefunden hat, die Transaktionsgebühren aus Schritt 2 und eine bestimmte Anzahl an neu „geprägten“ Bitcoins (BTC). Auf diese Weise wird die Öffentlichkeit bzw. werden die Knoten angespornt, sich aktiv am Netzwerk zu beteiligen und die Transaktionen anderer Leute zu überprüfen.
  7. Der Zyklus beginnt wieder bei Schritt 1.
Bitcoin-Mining

Bitcoin-Mining

Warum müssen die Knoten ein mathematisches Problem lösen?

Natürlich lässt die kurze Erklärung oben viele Fragen offen, unter anderem die in der Überschrift dieses Abschnitts genannte. Das Mathematikproblem dient dazu, eine gewisse (jedoch gut durchdachte) Zufälligkeit in das Verfahren einzubringen, damit niemand vorhersehen kann, welcher Knoten den nächsten Block findet. Dadurch wird es viel schwerer, das System auszutricksen. Dieses Verfahren wird als Proof-of-Work (Ausführungsnachweis) bezeichnet. Eine Schwachstelle bleibt jedoch, die sogenannte 51-Prozent-Attacke, siehe unten.

Warum ist der Algorithmus so ausgelegt, dass neue Blöcke durchschnittlich alle 10 Minuten gefunden werden, warum nicht schneller? Wenn der Prozess wesentlich schneller vor sich ginge, wäre das Problem einer möglichen Verzweigung der Blockchain viel schwerwiegender. Es geschieht auch mit dem oben beschriebenen Algorithmus, dass zwei oder mehr Knoten gleichzeitig einen neuen Block entdecken, was quasi zu zwei oder mehr unabhängigen Kopien des öffentlichen Kassenbuchs führt. Diese Verzweigungen werden jedoch normalerweise in der derzeitigen Ausführung des Bitcoin-Protokolls rechtzeitig entdeckt, bevor sich eine ganz neue Blockchain nach der Verzweigung formieren kann. Die einzelnen Blocks nach einer solchen Verzweigung, diese verwaisten Blocks werden in Übereinstimmung mit den Knoten des Netzes aus der Blockchain entfernt.

Eine weitere Frage, die sich zwangsläufig stellt, lautet: Wenn mit jedem neuen Block neue Bitcoins geprägt werden, führt dies nicht automatisch zu Inflation? Nein, denn die Anzahl der neuen Bitcoins pro Block wird alle 210,000 Blocks halbiert. Derzeit (Juni 2015) werden mit jedem Block 25 neue BTC in die Welt gesetzt. Im Jahr 2017 wird diese Zahl auf 12,5 BTC pro Block halbiert. Die Anzahl der derzeit im Umlauf befindlichen BTC ist in der folgenden Grafik zu sehen. In ferner Zukunft wird die Anzahl der neuen BTC auf 0 gesetzt und die maximale Gesamtanzahl der je erzeugten BTC auf 21 Millionen begrenzt. Dies geschieht jedoch erst im Jahr 2140. Dann werden die Schürfer nur mit den Transaktionsgebühren für ihre Mühe belohnt werden. Weitere Informationen hierzu finden Sie auf dieser Seite.

Anzahl der im Umlauf befindlichen BTC (Datenquelle: Blockchain.info)

Anzahl der im Umlauf befindlichen BTC (Datenquelle: Blockchain.info)

Und schlussendlich stellt sich auch die Frage: Könnte nicht jemand so viel Computerleistung zusammenschließen, um alle anderen Knoten im System zu überwältigen, und dadurch beliebige Transaktionen tätigen und so unendlich reich werden? Dies ist die oben erwähnte 51-Prozent-Attacke, das Bitcoin-Pendant zum Geldfälschen. Um die Kontrolle über das Bitcoin-Netzwerk zu gewinnen, braucht man mindestens 51 % der Computerleistung des Netzwerks. Dies ist jedoch unwahrscheinlich und wird auch immer unwahrscheinlicher, da in den letzten Jahren BTC-Mining-Serverfarmen aufgrund der spekulativen BTC-Kurswert buchstäblich wie die Pilze aus dem Boden geschossen sind. Vor nicht allzu langer Zeit lag der Wert eines BTC bei 1000 US-Dollar (siehe Grafik unten). Damals war es wirtschaftlich sinnvoll, viel Geld in Serverfarmen wie die unten abgebildete zu investieren. Die algorithmische Schwierigkeit des zu lösenden mathematischen Problems wird jedoch automatisch so angepasst, dass durchschnittlich nur alle 10 Minuten eine Lösung gefunden wird, egal wie groß die Computerleistung ist, die zur Lösung des Problems aufgewendet wird. Deshalb ist der Schwierigkeitsgrad exponentiell angewachsen, wie in der letzten Grafik unten gezeigt. Aus diesem Grund ist eine 51-Prozent-Attacke unwahrscheinlich, es sei denn, viele Miner vereinen ihre Ressourcen in einem sogenannten Mining-Pool. Die meisten Miner schürfen heute in Mining-Pools, da es aufgrund des aktuellen Schwierigkeitsgrads und der somit erforderlichen Computerleistung fast unmöglich ist, alleine einen Block zu finden.

BTC-Marktkapitalisierung in USD (Datenquelle: Blockchain.info)

BTC-Marktkapitalisierung in USD (Datenquelle: Blockchain.info)

BTC-Mining-Schwierigkeitsgrad (Datenquelle: Blockchain.info)

BTC-Mining-Schwierigkeitsgrad (Datenquelle: Blockchain.info)

Somit sind wir am Ende des 2. Beitrags der Bitcoin-Blogreihe angelangt. In Teil 3 werde ich das öffentliche Kassenbuch, die Blockchain, und dessen Inhalt näher erläutern.

Bitcoin Teil 1 – Geschichten über byzantinische Generäle und Pseudonyme oder: Was ist Bitcoin?

Ich werde eine Reihe von Blog-Beiträgen als Vorbereitung auf meinen Vortrag im Rahmen der 56. Konferenz der American Translators Association in Miami mit dem Titel „Bitcoin and Other Cryptocurrencies – Illegal Money or a New Global Payment Option?“ schreiben. Um die Antwort auf die im Titel des Vortrags gestellte Frage vorwegzunehmen: Die Antwort lautet weder-noch oder sowohl-als auch, je nach Blickpunkt.

Das ist nun auch keine richtige Antwort. Fangen wir also ganz von vorne an:

Was IST Bitcoin wirklich?

Eigentlich sollten wir noch einen Schritt zurückgehen: Welche IDEE steckt hinter Bitcoin?

Das Bitcoin-Protokoll will direkte virtuelle Transaktionen ohne dritte Parteien ermöglichen.

Wenn Sie jemandem über traditionelle Kanäle (Banküberweisungen, Paypal usw.) Geld senden, geschieht dies immer über mindestens eine vertauenswürdige dritte Partei — Ihre Bank und die des Empfängers oder Paypal usw. Wenn Sie jemandem persönlich Geldscheine übergeben, brauchen Sie keinen Vermittler, natürlich unter der Annahme, dass Sie sich mit dem Empfänger über den Wert der gedruckten Papierscheine einig sind. Denn die Übergabe von Geldscheinen erfolgt sichtbar vor Ihren Augen. Bitcoin ermöglicht das elektronische Äquivalent einer solchen Transaktion, es macht virtuelle Transaktionen quasi sichtbar.

Austausch von Bargeld zwischen zwei Personen

Austausch von Bargeld zwischen zwei Personen, A und B


Warum brauchen wir Mittelsleute in traditionellen Transaktionen?

Angenommen ich habe einen virtuellen „Geldschein“ im Wert von 1000 Euro. Nun kann ich diesen virtuellen Geldschein kopieren und quasi gleichzeitig mehrfach an verschiedene Leute senden und kein Mensch merkt, dass ich anfangs nur 1000 Euro hatte, aber diese 1000 Euro an Hunderte oder Tausende oder Zehntausende verschiedene Leute gesendet habe. Bis das auffliegt, schlürfe ich schon längst Pina Coladas auf meiner eigenen tropischen Luxusinsel.

Austausch von virtuellem Geld

Austausch von virtuellem Geld zwischen zwei Personen, A und B

Anders ausgedrückt, um eine virtuelle Transaktion ohne vertrauenswürdige, zentrale Dritte durchführen zu können, muss sichergestellt werden

  1. dass der Sender tatsächlich die angegebene Summe besitzt,
  2. dass der Sender tatsächlich die angegebene Geldsumme sendet und diese auch tatsächlich vom Guthaben des Senders abgebucht wird,
  3. dass der Sender die angegebene Summe genau ein Mal an genau eine andere Person in der einen Transaktionen sendet,
  4. dass die Summe dem Empfänger auch tatsächlich gutgeschrieben wird, in der richtigen Höhe, und genau ein Mal.

Wenn Sie jemandem einen gedruckten Geldschein übergeben, ist Obiges selbstverständlich. In traditionellen virtuellen Transaktionen führt die Drittpartei genau die obigen Schritte durch. Die Frage ist nun: Wie kann das Gleiche ohne Drittparteien erreicht werden, ohne dass sich Hacker und Diebe die Hände in Vorfreude reiben? Das Bitcoin-Protokoll schlägt genau dafür eine Lösung vor.

Was haben nun die byzantinischen Generäle damit zu tun?

Eigentlich gar nichts. Mathematikerinnen und Mathematiker, Informatiker und Informatikerinnen illustrieren nur gerne ihre Gedankenexperimente mit fabelhaften Geschichten. Physikerinnen und Physiker hingegen geben ihren Gedankenkreationen gerne skurrile Namen, wie Quarks, Wino, WIMP usw. Aber ich schweife ab … Zurück zum Thema, den byzantinischen Generälen.

Das Problem, das von Leslie Lamport, Robert Shostak und Marshall Pease im Jahr 1982 in einer Publikation (dieser Link führt zum Paper) aufgeworfen wurde, lautet folgendermaßen:

Eine Gruppe von byzantinischen Generälen plant von mehreren Seiten einen Angriff auf eine Stadt. Die Generäle müssen irgendwie sicherstellen, dass sie gleichzeitig angreifen, da sonst der Plan fehlschlagen würde. Was aber nicht so einfach ist, da sich die Geschichte in der Antike abspielt, also in einer Ära, als es noch keine Handys gab. Außerdem gibt es möglicherweise Verräter unter den Generälen, deshalb muss sichergestellt werden, dass diese Verräter den Plan nicht durchkreuzen können, zum Beispiel durch Boten, die Falschmeldungen verbreiten. Da die gesamte Kommunikation über Boten abläuft, gibt es viele mögliche Probleme mit Kommunikationsausfällen, Verrätern usw. Der obengenannte Artikel diskutiert und analysiert hier eine Vielzahl von Szenarien.

The byzantine generals problem.

Das Problem der byzantinischen Generäle

Dieses Problem ist genau das Problem, das auch beim Senden von virtuellem Geld ohne vertauenswürdige Mittelsperson auftritt:
Wie kann Vertrauen ohne vertrauenswürdige Dritte sichergestellt werden?

Satoshi Nakamoto als Retter in der Not

Wer zum Teufel ist Satoshi Nakamoto?
Kein Mensch weiß das. Satoshi Nakamoto ist das Pseudonym der Autorin/des Autors oder der Gruppe von Autoren oder Autorinnen des Artikels aus dem Jahr 2009, in dem die Bitcoin-Lösung zum oben beschriebenen Problem mit den byzantinischen Generälen vorgeschlagen wurde. Sie können das Paper hier lesen (auf Englisch). Die Hintergrundgeschichte mit dem Pseudonym und der Frage, wer nun dahinter stecken könnte, ist der Stoff für mehrere Thriller, aber ich schweife schon wieder ab …

Kurz gesagt, der Bitcoin-Lösungsvorschlag zum Problem, wie Vertrauen ohne vertrauenswürdige Dritte erzielt werden kann, ist, allen zu vertrauen, indem man niemandem vertraut.

Das klingt vermutlich komplizierter, als es eigentlich ist. Zurück zum Beispiel mit dem 1.000-Euro-Schein von oben. Angenommen, ich versende diesen 1.000-Euro-Schein wirklich 10.000-mal. Dann würde ich 1.000 Euro in 10 Millionen Euro vermehrt haben. Nicht schlecht für ein paar Mausklicks. Im Rahmen des Bitcoin-Protokolls sende ich jedoch gleichzeitig mit jeder Transaktion eine Meldung an ALLE, dass ich diese Transaktion getätigt habe. Alle Leute im Netzwerk wissen nun, dass ich diese Transaktion getätigt habe. Ich kann das natürlich ebenfalls 10.000-mal tun. Aber dann wissen alle im Netzwerk, dass ich diese 1.000 Euro 10.000-mal an 10.000 verschiedene Personen versandt habe. Und dann „stimmen“ die Leute im Netzwerk darüber „ab“, welche der 10.000 Transaktionen nun eigentlich gültig ist. Dies wird im Rahmen der Kryptowährungen als „Mining“, auf Deutsch manchmal auch als „Schürfen“ bezeichnet, mehr dazu später in einem anderen Beitrag. Die Transaktion ist damit abgeschlossen, ich habe also exakt 1.000 virtuelle Euro (oder BTC = Bitcoin) an exakt einen Empfänger bezahlt, der Empfänger hat exakt 1.000 virtuelle Euro genau ein Mal erhalten und die gesamte Transaktion wird in einem öffentlichen Kassenbuch, der Blockchain (früher auch Blockkette genannt), festgehalten, ganz ohne vertrauenswürdige Dritte.

In Aufzählungsform:

  1. Ich besitze eine bestimmte Summe Bitcoin. Dies kann öffentlich überprüft werden, da jede Bitcoin-Transaktion seit der allerersten (dem sogenannten Genesis Block) in ein öffentliches Kassenbuch eingetragen wird, der Blockchain. Deshalb kann ich nicht vorgeben, mehr zu besitzen, als ich habe.
  2. Ich kann dann eine bestimmte Bitcoin-Summe an einen Empfänger senden, und ich kann dabei nicht schummeln, da die Transaktion öffentlich an alle Knoten im Netzwerk übermittelt wird.
  3. Ich könnte natürlich gleichzeitig mehr Bitcoins versenden, als ich besitze, aber das Netzwerk entscheidet durch eine öffentliche Abstimmung (wobei tatsächlich ein kompliziertes mathematisches Problem gelöst wird), dem sogenannten Mining oder Schürfen, welche Transaktionen gültig sind und welche nicht.
  4. Die Transaktionen, die als gültig gewählt wurden, werden in die Blockchain eingetragen und sind endgültig. Und wenn mein nachweisliches Bitcoin-Guthaben erschöpft ist, kann ich nicht mehr ausgeben, als ich besitze, da jeder und jede das in der Blockchain nachprüfen kann.

Kurz, Bitcoin ist wirklich wie elektronisches Bargeld. Wenn Sie einen Geldschein oder Bitcoins an andere weitergeben, hat die Transaktion nachweislich stattgefunden, und das ganz ohne Mittelsleute.

Die mathematisch-praktische Umsetzung dieses Algorithmus ist im Artikel von Satoshi Nakamoto beschrieben und ist offensichtlich nicht trivial, aber so funktioniert das Protokoll im Wesentlichen. Der Rest ist nur eine Ausschmückung der grundlegenden, revolutionären Idee: Die Öffentlichkeit entscheidet, welche Transaktionen gültig sind und welche nicht.

Natürlich hat diese öffentliche „Abstimmung“ das Potenzial, das Finanzwesen kräftig durcheinanderzubringen, das teilweise auf sehr alten Transaktionsprotokollen aufgebaut ist. Investoren der Wall Street und im Silicon Valley haben dies bereits erkannt und investieren stark in die Weiterentwicklung des Protokolls (und nicht in Bitcoin selbst), andere Finanzinstitute sind jedoch nicht erfreut. Manche Führungskräfte in nicht ganz so demokratischen Ländern sind über den Aspekt der öffentlichen Abstimmung ebenfalls nicht erfreut, weswegen Kryptogeld dort kurzerhand für illegal erklärt wurde. Anderswo, auch in den USA, ist die rechtliche Situation ebenfalls noch nicht klar, aber aus anderen Gründen: Kryptogeld ist trotz des öffentlichen Kassenbuchs nicht vollständig nachverfolgbar, was natürlich bei Geldwäscheoperationen von Vorteil ist. Und ein virtueller Koffer mit Bitcoin ist auch nicht so auffällig wie Al Capones Geldkoffer, aber den haben sie ja schlussendlich auch erwischt und eingebuchtet. Deshalb glaube ich, dass dies auch bei Cyper-Kryptokriminellen der Fall sein wird.

Natürlich stellt sich nun die Frage: Warum können Kriminelle und Drogenschmuggler Bitcoin als Zahlungsmittel im Deep Web verwenden, wenn das Kassenbuch doch öffentlich ist? Hier kommt der Krypto-Teil des Worts Kryptogeld ins Spiel. Ich werde dies in einem weiteren Beitrag dieser Serie behandeln, ebenso das mysteriöse „Schürfen“ von Bitcoin und anderen Kryptowährungen wie Litecoin, Dogecoin und Quatloo, wobei kein Kohleschaufeln erforderlich ist. Der Abstimmungsprozess erfolgt nicht ganz so demokratisch, wie ich ihn beschrieben habe, sondern erfordert mittlerweile eine ziemlich hohe Computer-Rechenleistung. Doch mehr davon in einem anderen Blogbeitrag. Außerdem werde ich erklären, wie man ein Wallet (also eine Geldbörse) für Kryptogeld einrichtet und damit Transaktionen durchführt.

Wie jedoch schon oben gesagt, ist Kryptogeld mancherorts illegal, und an manchen Orten ändert sich die Rechtslage ständig, wie auch hier in Kalifornien. Deshalb stellt keine Aussage auf dieser Website und in diesem Blog-Beitrag eine rechtliche oder finanzielle Beratung dar, einfach deswegen, weil ich bereits vollzeitbeschäftigt bin und die Verfolgung der sich ständig ändernden Rechtslage mehr als eine Vollzeitbeschäftigung darstellen würde.