Eigentlich habe ich schon seit einigen Wochen vor, einen Artikel zu verfassen, der erklären soll, warum ich in Bezug auf den aktuellen Hype um Bitcoin sehr skeptisch bin und vermute, dass dieser sich mittelfristig wieder legen wird. Allerdings hat einiges meiner Kritik an Bitcoin mit der technischen Ausgestaltung der Kryptowährung zu tun, weshalb ein solcher Artikel nicht ohne eine mehr oder weniger detaillierte Erklärung der Funktionsweise geschrieben werden sollte. Da mich außerdem in den letzten Tagen immer wieder Bekannte angesprochen haben, was dieses Bitcoin/diese Blockchain/… eigentlich ist und wie das genau funktioniere, möchte ich die Gelegenheit nutzen und eine ganz grundlegende und ausführliche Einführung schreiben. Dabei möchte ich durchaus weit ausholen und ein paar grundsätzliche Konzepte vermitteln.
Was macht Geld wertvoll?
Um zu verstehen, wie eine Kryptowährung aufgebaut ist und vor allem warum sie meistens eine so komplizierte Struktur besitzt, ist es wichtig, sich bewusst zu machen, wie in der „echten“ Welt Geld funktioniert und was Geld eigentlich wertvoll macht. Historisch betrachtet ist das eigentlich sehr einfach: Frühe Münzen hatten einfach den Wert des Materials, aus dem sie hergestellt wurden. Ein schönes Beispiel ist das britische Pfund, auch bekannt als Pfund Sterling. Diese Bezeichnung leitet sich daher ab, dass man im 7. Jahrhundert begann, aus einem Pfund Silber 240 Sterlinge zu prägen [1]. Hatte man eine große Summe zu bezahlen, so konnte man den Betrag gleich in Pfund Sterling ausdrücken — daher dieser Name. Mit der Prägung wurde sichergestellt, dass ein Sterling genau 1/240 Pfund entsprach, darüber hinaus garantierte die Prägung einen exakten Reinheitsgrad des Silbers.
Heutzutage beruht der Wert unseres Geldes ganz offensichtlich nicht mehr auf dem Materialwert: Man denke nur an einen Geldschein aus Baumwollfasern, der mit Sicherheit keine 5-500€ Wert ist (lediglich die 1-Cent-Münze bildet hier eine kleine Ausnahme: Zwar beträgt auch deren Materialwert weniger als 0,01 €, allerdings liegen die Herstellungskosten höher — einer der Gründe, warum sie viele gerne abgeschafft sehen würden [2]). Und tatsächlich setzte sich spätestens mit der Einführung von Banknoten eine neue Methode durch, durch die Geld zu seinem Wert kam: Im Prinzip waren die ersten Banknoten (die ersten in Europa kamen übrigens aus Schweden — dieses Land hat wohl eine gewisse Tradition darin, Vorreiter bei der Einführung neuer Zahlungsmittel zu sein) einfach ein schwer fälschbares Dokument, auf dem die ausgebende Stelle, also die (Zentral-)Bank, garantierte, dass sie gegen Vorlage eben dieses Dokuments den darauf notierten Betrag in „richtigem“ Geld auszahlen würde – damals also noch in Münzen. Seinen Wert erhielt ein Geldschein also durch das Vertrauen, ihn in etwas „wirklich Wertvolles“ umtauschen zu können. Aus dieser Zeit stammt übrigens auch ein Spruch, den man auch auf aktuellen Pfundnoten in England noch findet:
„I promise to pay the bearer on demand the sum of [xy] pounds [Sterling]“
Dieser Satz ist im Prinzip überflüssig geworden, denn wie wir vorher gesehen haben, bieten auch unsere heutigen Münzen keinen intrinsischen Materialwert mehr. Es besteht also keine Notwendigkeit, zu versprechen, Euroscheine in „wirklich wertvolle“ Münzen umzuwandeln. Dennoch hat unser heutiges Geld vom Prinzip noch viel damit gemein: Egal, ob es sich um Münzen oder Banknoten handelt, unser Geld funktioniert nur, weil wir darauf vertrauen, dass wir dieses Geld jederzeit in Waren oder andere Währungen umtauschen können. Das funktioniert selbstverständlich nur, wenn das Geld nicht allzu einfach gefälscht werden kann und nicht unendlich nachgedruckt wird. Beides würde nämlich dazu führen, dass die Geldmenge rasant steigen würde, das Vertrauen in das Zahlungsmittel dahin wäre und sein Wert verfallen würde. Außerdem ist es für das Vertrauen in eine Währung wichtig, dass sie gehandelt werden kann; man muss sie also in Fremdwährungen eintauschen können. All diese Eigenschaften garantiert klassischerweise mehr oder weniger die Zentralbank, die das Geld ausgibt.
Elektronisches Geld
Leider lässt sich dieses Konzept nicht 1:1 auf elektronisches Geld übertragen — und wer schon mal eine Datei kopiert hat, kann sich vermutlich denken, warum. Theoretisch wäre es denkbar einfach, als Bank statt physischen Münzen oder Scheinen ein paar Dateien auszugeben, in denen so etwas steht wie „Ich bin 50 € wert.“ Wenn die Bank nun den Handel mit diesen elektronischen Banknoten bzw. Münzen ermöglicht, und darauf achtet, dass nicht unbegrenzt viele davon auf den Markt kommen, hätte man eine elektronische Währung. Allerdings haben Dateien die Eigenschaft, dass sie deutlich einfacher als physische Gegenstände (insbesondere, wenn es sich dabei um Geld handelt) zu kopieren sind. Ich könnte also eine elektronische Banknote nach diesem Prinzip, wenn ich sie besitze, ohne Weiteres kopieren, eine Kopie ausgeben und hätte das Original trotzdem immer noch zur Verfügung. Das bezeichnet man als Double-Spending-Problem [3].
Aus diesem Grund funktionierten schon die allerersten elektronischen Währungen (bekannt wurde etwa DigiCash unter dem Markennamen eCash [4]) nach einem anderen Prinzip. Jede ausgegeben elektronische Münze bekommt in diesem Schema eine eigene individuelle und unverwechselbare ID. Diese ID ist bei der ausgebenden Bank registriert und ermöglicht es, zu kontrollieren, ob die betreffende Münze bereits ausgeben wurde. Wenn also eine solche Münze für eine Transaktion verwendet werden soll, kann der Empfänger prüfen, ob sie noch gültig ist. Wenn ja, kann die Transaktion ablaufen, indem Sender und Empfänger der Bank mitteilen, dass die Münze den Besitzer wechselt. Das Double-Spending wird so zwar in der Tat verhindert, allerdings ist ein solches System weiterhin völlig von einer einzelnen ausgebenden Bank abhängig. Man muss kein Experte für Subkulturen sein, um zu wissen, dass diese Eigenschaft unter Hackern großes Misstrauen auslösen kann.
Bitcoin
Auch ein gewisser Satoshi Nakamoto (Dieser Name ist, nach allem was wir wissen, ein Pseudonym. Obwohl er schon für den Nobelpreis vorgeschlagen wurde, hat sich der Mensch dahinter noch nicht (glaubhaft) identifizieren lassen – dafür gibt es um die Identität die wildesten Spekulationen [5]) störte sich an eben diesen Dingen. Darüber hinaus träumte er von einer Möglichkeit, ohne oder mit niedrigen Transaktionsgebühren Geld versenden zu können. Im Oktober 2008 veröffentlichte er ein Paper mit dem Titel „Bitcoin: A Peer-to-Peer Electronic Cash System“ — diese Veröffentlichung gilt als die Geburtsstunde von Bitcoin.
Diese neue Währung funktionierte nun nochmal deutlich anders als das, was ich zuvor beschrieben habe. Am ehesten ist das Konzept noch mit den eben erwähnten digitalen Währungen zu vergleichen, bei denen eine Zentralbank überprüft, dass Geld nur einmal ausgeben und nicht kopiert werden kann und somit die Geldmenge begrenzt. Die Unterschiede sind aber gewaltig: Statt einer Zentralbank sind es bei Bitcoin alle Nutzer, die kollektiv die Transaktionen überwachen – und digitale Münzen oder Scheine im Sinne von Dateien gibt es auch nicht.
Stattdessen setzt Bitcoin darauf, alle Transaktionen der Währung zu protokollieren. Das erinnert entfernt an Konten, wie wir sie von klassischen Banken kennen: Der Betrag, den man auf einem solchen Konto zur Verfügung hat, wird dadurch ermittelt, dass von Anfang an alle Überweisungen auf dieses Konto und von diesem Konto protokolliert werden. Durch Addieren bzw. Subtrahieren dieser Beträge ergibt sich letztendlich immer der aktuelle Kontostand. Klassischerweise kontrolliert so die Hausbank eines Nutzers, dass er auch bargeldlos nicht mehr Geld ausgeben kann, als er besitzt (Überziehungen des Kontos bilden hier nur scheinbar eine Ausnahme: Sie lassen sich in dieser Betrachtungsweise als Überweisungen der Bank an ihren Kunden betrachten, die der Kunde später (mit Zins) zurückzahlen muss). Analog dazu besitzt auch jeder Nutzer von Bitcoin ein — zu Beginn leeres — ‚Konto‘, dessen Kontostand sich aus den ein- und ausgehenden Transaktionen ergibt. Über diese führt allerdings keine zentrale Institution, sondern das gesamte Netzwerk Buch. Um zu verstehen, wie das funktionieren kann, sind allerdings nochmal ein paar Hintergründe technischer Natur notwendig.
Kryptologische Grundlagen
Bitcoin wird häufig als Kryptowährung bezeichnet. Die Gründe dafür werden hoffentlich im Folgenden klar. Zwei Konzepte aus dem Bereich der Kryptologie sind nämlich für das Verständnis der Funktionsweise von Bitcoin im Allgemeinen bzw. der sog. Blockchain (hier kommen also die ganzen Buzzwords ins Spiel) im Speziellen unerlässlich: (kryptologische) Hashfunktionen und asymmetrische Verschlüsselungsverfahren. Ich möchte versuchen, die Grundzüge dieser Techniken kurz zu skizzieren, ohne mich in den kryptologischen/mathematischen Details zu verlieren.
Eine Hashfunktion (bzw., was in den meisten Fällen korrekter ist, ein Hashalgorithmus) erstellt vereinfacht gesagt eine Art Prüfsumme der Eingabedaten. Sie ordnet also den eingegebenen Daten (zum Beispiel einer einfachen Datei) einen eindeutigen (Zahlen-)Wert zu, den man als Hash bezeichnet. Eindeutig heißt in diesem Zusammenhang, dass die Funktion für die gleiche Eingabe immer den gleichen Wert ausgibt. Das lässt sich beispielsweise nutzen, um große, komplexe Daten zu vergleichen oder auf Plausibilität zu prüfen. Dazu muss die Funktion einige weitere Eigenschaften erfüllen: Die ausgegebenen Wert sollten nach Möglichkeit (deutlich) weniger Speicherplatz benötigen als die Eingabedaten. Außerdem sollten sogenannte Kollisionen vermieden werden: Zwei verschiedene Eingaben sollten nicht zum selben Ausgabewert führen (beide Anforderungen lassen sich übrigens nur begrenzt gleichzeitig erfüllen, die Gründe dafür spielen hier aber keine Rolle). Unter diesen Voraussetzungen kann ich zum Beispiel prüfen, ob zwei Dateien identisch sind, indem ich nur die — deutlich kompakteren — Prüfsummen vergleiche.
An eine kryptologische Hashfunktion wird sogar noch eine weitere Forderung gestellt: Es soll zwar mit wenig Aufwand möglich sein, den Hash von Daten zu erstellen, aber es soll nicht ohne Weiteres möglich sein, Daten aus diesem Hash zu rekonstruieren bzw. Daten zu finden, deren Hash genau einem vorgegebenen Wert entspricht. Damit lassen sich absichtliche Kollisionen praktisch kaum herbei führen. Das ist beispielsweise dann sinnvoll, wenn ich mit den Hashfunktionen die Integrität von Dateien (etwa Software, die ich zum Download bereitstelle) belegen möchte. Wenn ein Angreifer die Datei manipuliert, ändert sich automatisch die ‚Prüfsumme‘ und entspricht nicht mehr dem von mir angegebenen Wert. Der Angreifer kann allerdings die Datei auch nicht gezielt so manipulieren, dass der Hash wieder den ursprünglichen Wert annimmt, weil es eben nicht einfach möglich ist, Dateien zu einem vorgegebenen Hash zu konstruieren.
Essentiell für solche Algorithmen sind sogenannte Einwegfunktionen. Das sind mathematische Funktionen, die sich relativ leicht berechnen lassen, deren Umkehrung aber nicht trivial ist. Man kann sich das vielleicht mit der Suche in einem Telefonbuch veranschaulichen: Es ist einfach, die Telefonnummer zu einem Namen zu finden — aber sehr aufwändig, zu einer Telefonnummer den Besitzer zu suchen. Ein bekanntes Beispiel aus der Mathematik ist die Primfaktorzerlegung (sehr) großer Zahlen. Schon auf einem niedrigen Niveau lässt sich die Verwendung als Einwegfunktion nachvollziehen: Auch für mittelmäßig begabte Kopfrechner dürfte es nicht länger als eine Minute dauern, 19 und 17 zu multiplizieren. Ungleich schwieriger ist es hingegen, die Primfaktoren von 323 zu ermitteln — dabei entspricht das einfach nur der Umkehrung der vorherigen Rechnung!
Solche Funktionen finden in kryptologischen Hashfunktionen Anwendung, aber vor allem auch in asymmetrischen Verschlüsselungsverfahren. Bei solchen Verfahren nutzt man zum Ver- und Entschlüsseln von Daten nicht einen Schlüssel, sondern gleich zwei. Diese beiden Schlüssel sind natürlich nicht vollständig unabhängig voneinander, sondern werden gemeinsam als Schlüsselpaar erzeugt. Einer der beiden wird öffentlicher Schlüssel genannt, der andere privater. Der öffentliche kann allen Personen gefahrlos mitgeteilt werden. Sie können ihn nutzen, um Daten, die an den Besitzer des privaten Schlüssels — oft Bob genannt — gesendet werden sollen, zu verschlüsseln. Dies ist ohne großen Aufwand möglich. Die Umkehrung, also das Entschlüsseln der zuvor verschlüsselten Daten mit dem gleichen Schlüssel, ist so schwierig, dass es praktisch unmöglich wird. Nur durch die Kenntnis einer zusätzlichen Information, die den privaten Schlüssel darstellt, wird die Umkehrung, also das Entschlüsseln, ebenfalls einfach. Damit kann jede und jeder Informationen für Bob verschlüsseln, da der dafür genutzte Schlüssel öffentlich ist, aber nur Bob selbst kann mithilfe des privaten Schlüssels den Klartext lesen. Ein äußerst nützliche Nebeneffekt ist, dass sich solche Verfahren auch für das Signieren von Dateien oder Nachrichten nutzen lassen: Dabei nutzt der oder die Absenderin — meistens Alice — ihren eigenen, privaten (!) Schlüssel, um den Hash einer Datenmenge zu verschlüsseln. Aus diesem Hash lassen sich die Originaldaten nicht rekonstruieren und ohne Kenntnis des privaten Schlüssels lässt sich der konkrete, verschlüsselte Hash auch nicht erzeugen. Allerdings reicht nun schon der öffentliche Schlüssel von Alice aus, um den verschlüsselten Hash zu entschlüsseln und so die Integrität der signierten Dateien überprüfen: Bob bildet selbst den Hash der empfangenen Dateien. Außerdem entschlüsselt er mithilfe des öffentlichen Schlüssels von Alice den mitgesendeten Hash. Nur wenn die Dateien nicht verändert wurden und der mitgesendete Hash wirklich mit Alice‘ privaten Schlüssel verschlüsselt wurden, haben beide Hashs jetzt den gleichen Wert.
Die Blockchain
Was hat das nun mit digitalem Bezahlen zu tun? Es beginnt bei den Bitcoin-„Konten“. Zu einem Konto im Bitcoin-Universum gehört zuallererst eine Adresse, die der Kontonummer entspricht. Diese Nummer ist (wie übrigens auch die klassischen Kontonummern und IBANs) nicht vollständig zufällig. Stattdessen erzeugt sich jeder und jede angehende Bitcoinanwender*in zu Beginn mithilfe eines geeigneten Programmes ein Schlüsselpaar für ein asymmetrisches Verschlüsselungsverfahren, wobei der private Schlüssel sicher aufbewahrt wird und der öffentliche an jede Person weitergegeben werden kann. Seine bzw. ihre Adresse ist nun einfach eine Prüfsumme über den öffentlichen Schlüssel. Um Geld zu versenden, kann er oder sie nun eine Nachricht der folgenden Form veröffentlichen „Ich, [eigene Bitcoin-Adresse], schicke den Betrag von XY Bitcoin an [Bitcoin-Adresse des Empfängers].“ Diese Nachricht signiert er/sie mit Hilfe des privaten Schlüssels und belegt damit, dass tatsächlich er/sie selbst diese Transaktion veranlasst hat. Somit kann tatsächlich nur der Besitzer oder die Besitzerin des privaten Schlüssels über das Guthaben verfügen, dass zu einer Bitcoinadresse gehört.
Doch wie komme ich zu Guthaben? Wie umgeht man das Double-Spending-Problem? Die Grundidee dahinter sieht wie folgt aus: Jede Transaktion, die ich tätige, gebe ich öffentlich an alle anderen Teilnehmer*innen des Bitcoin-Netzwerkes bekannt. Gleichzeitig sammle ich die Informationen über alle Transaktionen aller anderen Personen. Damit kann ich, wenn jemand eine neue Transaktion veröffentlicht, überprüfen, ob die dahinterstehende Person wirklich über das Guthaben verfügt, dass sie gerade verschicken möchte — einfach, indem ich alle bisherigen Transaktionen bilanziere.
Im Prinzip werden also alle Buchungen dezentral vom Netzwerk bzw. von allen teilnehmenden Personen protokolliert und kontrolliert. Nur, wenn ich tatsächlich eine korrekte Buchung veröffentliche, das heißt, dass ich zum einen über das entsprechende Guthaben verfüge und zum anderen die Transaktion korrekt signiert habe, akzeptiert das Netzwerk diese Veröffentlichung. Das allerdings ist nur ein Teil der Magie.
Ein bekanntes Problem bei verteilten Systemen wie dem Bitcoin-Netzwerk besteht darin, den Konsens zwischen den Teilnehmern herzustellen [6]. Man kann sich vorstellen, in welchem Chaos es ausarten würde, wenn jeder Mensch alle seine eigenen Überweisungen in die Welt rufen würde und die Überweisungen aller anderen protokollieren wollte. Alleine, bis sich die Information über eine Transaktion von der ausführenden Person an alle Teilnehmer verbreitet hat, vergeht eine ganze Menge Zeit. In dieser Zeit könnte das eigentlich schon längst überwiesene Geld nochmals ausgegeben werden, weil ein großer Teil der anderen Teilnehmer davon ausgeht, dass diese Person das Geld bisher nicht überwiesen hat und folgerichtig darüber verfügen darf. Das Ergebnis wären ziemlich bald viele konkurrierende Versionen der ‚Buchführung‘ über alle Transaktionen. Schon über die korrekte Reihenfolge der bisherigen Transaktionen würde sich vermutlich kein Konsens bilden.
Hier hat sich Nakamoto einen wirkungsvollen Trick überlegt bzw. einen schon in den 90ern erfundenen Trick übernommen [7]: Im Protokoll des Bitcoin-Netzwerks wurde eine Art künstliches Hindernis implementiert, dass es relativ zeitaufwändig macht, eine Buchung der Liste aller bisherigen Transaktionen hinzuzufügen. Durch diese ‚Bremse‘ wird sichergestellt, dass sich alle Teilnehmer*innen über den aktuellen Stand des Netzwerks einigen können. Konkret funktioniert das folgendermaßen: Die Information über eine gewünschte Buchung wird von der Person, die die Summer versenden möchte, an möglichst viele andere Nodes (Knoten) des Netzes weiter gegeben. Diese sammeln die Informationen über alle Buchungen, die bei ihnen eintreffen. Diese Buchungen sind zuerst noch unbestätigt. Jeder Node fasst die eintreffenden Transaktionen nun zu einem Block zusammen (in der Praxis beteiligen sich nicht alle Nodes an diesem Prozess, außerdem kann ein Node auch entscheiden, einzelne Transaktionen zu verwerfen, obwohl sie gültig sind – dazu später mehr). Dieser Block enthält außerdem noch weitere Informationen: Zum einen einen Hash des letzten Blocks, auf den sich das Netzwerk einigen konnte. Dadurch wird die Reihenfolge der einzelnen Blocks mit den Transaktionen eindeutig festgelegt, die Blocks werden sozusagen miteinander zu einer Blockchain verkettet. Vor allem aber enthält der Block einen kryptologischen Hash über einen bestimmten Teil des Blocks selbst, nämlich über den sog. Header. Damit ein Block nun vom Netzwerk als gültiger Block anerkannt wird, muss dieser Hashwert allerdings eine bestimmte Anforderung erfüllen – er muss mit einer definierten Anzahl von führenden Nullen beginnen. Wie wir zuvor gesehen haben, ist es allerdings sehr schwer, Daten zu finden, für die ein kryptologischer Hashalgorithmus (bei Bitcoin ist das SHA256) einen definierten Wert ausgibt. Je genauer der Wert definiert ist, d.h. je strikter die Anforderungen daran sind, umso aufwändiger ist es, Daten zu finden, die diesen Wert als Hash haben. Der Header des Bitcoin-Blocks enthält zu diesem Zwecke (u.a.) eine einfache Zahl, Nonce genannt. Diese kann Stück für Stück erhöht (bzw. anderweitig verändert) werden. Da sich damit der Header ändert, ändert sich auch sein Hash — das kann nun so lange durchgeführt werden, bis der resultierende Hash die geforderte Form annimmt. Dann wurde ein gültiger Block gefunden, der sofort veröffentlicht werden kann. Nun gelten die enthaltenen Transaktionen als bestätigt. Alle Nodes im Netzwerk akzeptieren den neuen Block, da der Hashwert des Headers leicht zu überprüfen ist und die gewünschte Form angenommen hat. Dadurch, dass das Auffinden eines gültigen Blocks schwierig (und daher zeitintensiv) ist, dauert es, bis der nächste gültige Block ‚auftaucht‘. In der Praxis einigt sich das Netzwerk laufend auf eine neue Schwierigkeit für den Hashwert, die so angepasst wird, dass im Schnitt alle zehn Minuten ein neuer Block entsteht. Diese Zeit reicht (meistens), um die Information über den vorherigen Block im Netzwerk zu verbreiten. Gleichzeitig ist das schnell genug für übliche Transaktionen. Sollte doch einmal dazu kommen, dass zwei Teilnehmer*innen nahezu gleichzeitig einen neuen Block finden, teilt sich die Blockchain auf, da vermutlich ein Teil des Netzwerks zuerst über den einen Block A, andere Nodes aber über den anderen Block B informiert wurden. Das ist allerdings weniger dramatisch als es erscheint. Alle Nodes, die versuchen, noch einen neuen Block zu finden, nehmen als Basis jeweils den Block, über den sie informiert wurden bzw. können sich in diesem Fall mehr oder weniger willkürlich einen der beiden aussuchen. Wenn sie nun einen weiteren Block C gefunden haben, der beispielsweise auf Block A als Vorgänger verweist, informieren sie wiederum das gesamte Netzwerk. Die Bitcoin-Client-Programme sind allerdings so programmiert, dass sie in Konfliktsituationen immer der längeren Kette den Vorzug geben. Dadurch verwerfen jetzt alle Nodes, die bisher Block B akzeptiert hatten, diesen, sobald sie informiert werden, dass es nicht nur einen alternativen Knoten A gibt, sondern dass an diesem auch ein weiterer Knoten C hängt, diese Kette also die längere ist. Theoretisch können sich solche Konflikte in ungünstigen Situationen durchaus über längere Zeit hinziehen, bis sich wieder alle Nodes auf eine Kette geeinigt haben, weil eventuell auch schon ein Block D gefunden wurde, der auf B basiert usw. In der Praxis setzt sich aber relativ bald der Branch durch, hinter dem die Mehrheit der Rechenpower des Netzwerks steht, weil diese einfach schneller neue Blocks finden können. Das ist gleichzeitig ein hervorragender Manipulationsschutz: Wenn ich einen Block in der Vergangenheit verändern möchte (beispielsweise, weil ich eine von mir getätigte Transaktion löschen möchte, um so wieder im Besitz der entsprechenden Summe zu sein), muss ich alle folgenden Blocks in der Blockchain ebenfalls ändern, da diese sich auf den jeweils vorhergehenden Block beziehen. Das bedeutet allerdings ungeheuren Rechenaufwand, da ich für all diese Blocks neue, gültige Hashs finden muss! Nur, wenn ich mehr Rechenleistung als die Mehrheit des Netzwerks auf mich vereinen kann, habe ich eine Chance, irgendwann mit meiner manipulierten Version die längste Kette zu bilden un die ‚offizielle‘ Version zu überholen. Dann würden tatsächlich alle Clients meine Version akzeptieren und ich hätte das Geld doch zur Verfügung, das ich vorher eigentlich an jemand anderen verschickt hatte. Abgesehen davon, dass es nahezu unmöglich ist, diese Rechenleistung auf sich zu vereinen, gibt es allerdings einfachere Wege, damit Geld zu verdienen – auch innerhalb des Bitcoin-Netzes…
Denn zwei Fragen sind für uns bisher ungeklärt: Woher kommen die Bitcoins eigentlich? Und warum sollte ich als Anwender viel Rechenleistung (ergo Strom, ergo Geld) investieren, um die Transaktionen anderer Leute zu bestätigen? Diese Fragen gehören zusammen. Anfangs gab es natürlich nur einen Bitcoin-Nutzer – der selbstverständlich nicht die ganze Menge an Bitcoin besaß, die heute zur Verfügung steht. Trotzdem ist die gesamte Menge an Bitcoin immer begrenzt — sonst würde es ja auch zu einer Hyperinflation kommen. Das Geheimnis liegt, wie immer, in den Blocks. Diese enthalten wie gesagt eine Liste der Transaktionen, die mit diesem Block bestätigt wurden. Die erste Transaktion in dieser Liste allerdings, die sogenannte Coinbase-Transaktion, ist besonders: Die Bitcoins, die mit ihr versendet werden, kommen nicht von einem Nutzer, sondern entstammen sozusagen dem Nirgendwo. Natürlich dürfen das nicht beliebig viele Bitcoin sein, die Menge ist durch das Protokoll genau festgelegt und wird auch in regelmäßigen Abständen angepasst. Als Ziel der ersten Transaktion trägt die Person, die den Block zu konstruieren versucht, sich selbst ein. Das ist ihre Belohnung für den Rechenaufwand, der mit der Bestätigung der Transaktionen verbunden ist, bzw. ein Teil davon. Sie schürft sozusagen Geld aus dem Nichts, weshalb der Prozess des Suchen und Findens von neuen, gültigen Blöcken auch Mining genannt wird. An diesem Mining beteiligen sich übrigens schon lange nicht mehr alle Anwender. Der Aufwand dafür ist schlicht und ergreifend zu groß geworden – was anfangs noch mit CPUs, später mit GPUs lief, benötigt heute eigene Spezialhardware. Die Menge an Geld, welche in der Coinbase-Transaktion entsteht, ist dabei nicht nur begrenzt, sondern halbiert sich alle 210.000 Blocks, angefangen mit 50 Btc. Derzeit (01/2018) liegt sie bei 12,5 Btc. Durch diese Halbierung ist gewährleistet, dass niemals mehr als 21.000.000 Btc existieren können. Da ein Block, indem in der Coinbase-Transaktion mehr Geld entstehen würde als erlaubt, niemals vom Netzwerk bzw. seiner Mehrheit akzeptiert würde, kann auch niemand unberechtigt viel Geld schürfen.
Dennoch soll das Bitcoin-Netzwerk auch weiterlaufen, wenn irgendwann alle 21 Millionen Bitcoin im Umlauf sind. Aus diesem Grund gibt es eine weitere Art der Belohnung: Es ist möglich, bei einer Transaktion von Adresse A nach B einen Anteil an der Transaktion als ‚Gebühr‘ abzuführen. Dann wird sozusagen von A etwas mehr abgebucht als auf Konto B landet. Die Differenz wird wiederum der Person gutgeschrieben, die den Block gefunden hat, der die Transaktion bestätigt. Das spielt schon jetzt eine nicht unbedeutende Rolle und soll in Zukunft den alleinigen Anreiz dafür bieten, dass Blöcke gesucht werden und somit Transaktionen bestätigt werden.
Nun haben wir eigentlich alle Grundzüge von Bitcoin kennen gelernt. Eine kleine Zusammenfassung:
- Bitcoins sind keine echten elektronischen Münzen im Sinne von nicht kopierbaren Dateien. Stattdessen beruht das System darauf, dass alle Transaktionen öffentlich sind. Dadurch ist ständig ersichtlich, ob und wie viel Geld jemand zur Verfügung hat.
- Bitcoin-Adressen bestehen im Prinzip aus einem öffentlichen und einem privaten Schlüssel. Mit dem privaten Schlüssel können Transaktionen signiert werden, sofern die zugehörige Adresse über ausreichend Guthaben verfügt.
- Alle Nodes im Netzwerk können die Informationen über neue Transaktionen sammeln und prüfen und kombinieren diese zu einem Block. Dieser bezieht sich auf alle bisherigen Blöcke und steht damit an eindeutiger Position in der Blockchain.
- Ein Block enthält eine Art Rätsel. Erst, wenn das gelöst wurde, ist der Block gültig, wird an alle anderen Nodes verbreitet und an die Blockchain angehängt.
- Durch die Zeit, die das Rätsel braucht, wird Konsens zwischen allen teilnehmenden Personen erreicht. Die Schwierigkeit des Rätsels wird ständig angepasst, sodass es durchschnittlich 10 Minuten bis zum nächsten Block dauert.
- Bitcoin-Clients akzeptieren einen Block nur, wenn er, insbesondere in Bezug auf Schwierigkeit, gelöstes ‚Rätsel‘, Basecoin-Transaktion und Gültigkeit der weiteren enthaltenen Transaktionen gültig ist. Bei Konflikten wird immer der längere Zweig akzeptiert. Dadurch werden gleichzeitig Manipulationen verhindert, da sich immer die Version durchsetzt, die mehr Rechenpower auf sich vereinen kann.
- Durch die Coinbase-Transaktion entsteht neues Geld. Dieses geht an die Person, die den Block gefunden hat und bildet zusammen mit den Transaktionsgebühren den Anreiz für das Mining.
Eventuell wurde bei der Erklärung der technischen Hintergründe schon deutlich, welche Kritik am System Bitcoin geübt wird — es sei nur das Stichwort Stromverbrauch genannt. Diese möchte ich aber eventuell in einem weiteren Artikel ausführen. Ich hoffe, dass ich zumindest einigermaßen klar machen konnte, wie Bitcoin funktioniert und was eine Blockchain ist. Falls ja, würde ich mich freuen, wenn ihr diesen Artikel teilt! Gerne lasst mir eure Kommentare da, egal, ob ihr Fragen, Kritik oder Ergänzungen habt. Ich freue mich auf die Diskussion mit euch! Für weitere Infos lasse ich euch ein paar Literaturempfehlungen da:
Literatur
- Das Bitcoin-Wiki (en) bietet besonders in Bezug auf technische Fragen zur Implementierung und zum Bitcoin-Protokoll sehr ausführliche Antworten.
- Das originale Bitcoin-Paper von 2009 bietet noch heute eine gute Einführung in die Funktionsweise des Systems.
- Tim Pritlove und Andreas Bogk haben sich vor einigen Jahren für CRE über elektronisches Geld unterhalten. Auch wenn sich gerade in Bezug auf den Bitcoin-Kurs viel geändert hat, ist das ein toller Überblick, auch historischer Art.
- Einen Einstieg in die Kryptologie und damit auch in die Felder der Einwegfunktionen und kryptologischen Hashfunktionen bietet dieses alte Skript meiner Uni.
himmelskratzer.de » Daily Nuggets #9
[…] Bitcoin, Blockchain, Kryptowährungen: Was ist das eigentlich? (via Niklas) Ich habe es jetzt ein bisschen besser verstanden, aber so ganz leuchtet mir das Prinzip immer noch nicht ein… […]
Bitcoins und Blockchains | HNF Blog
[…] Alle zehn Minuten werden die Buchungen zusammengefasst und mit einer Codenummer versehen, dem Hash. In dessen Berechnung gehen Informationen zu den vereinbarten Überweisungen, eine Datumsangabe, eine Zusatzzahl, die sogenannte Nonce, und der zuvor gebildete Hash ein. Die Angaben bilden einen Block, und beim Ausrechnen seines Codes wetteifern die Bitcoin-Bergleute miteinander. Wenn der Hash vorliegt, sind die Handlungen bestätigt, und der nächste Block wird geöffnet. So entsteht die Blockchain. […]