Wie funktioniert Bitcoin?

· 10 min read

Bitcoin ist ein Konzept für eine digitale Währung, das der legendäre und rätselhafte Satoshi Nakamoto 2009 vorstellte. Es nutzt die Blockchain-Technologie als Infrastruktur und funktioniert dezentral, direkt von Mensch zu Mensch. Das Whitepaper, in dem Nakamoto dieses Konzept erklärt, ist Pflichtlektüre für alle, die Bitcoin und Kryptowährungen im Allgemeinen verstehen wollen. Es erklärt nämlich nicht nur Bitcoin als Idee, sondern auch, wie ein System mit byzantinischer Fehlertoleranz in einer dezentralen Umgebung funktionieren kann.

Wer sich für Bitcoin interessiert, sollte vor allem wissen, dass die Blockchain-Technologie der entscheidende Faktor dafür ist, dass das Bitcoin-Konzept überhaupt real werden konnte – und verstehen, wie diese Technologie arbeitet.

Was ist eine Blockchain?

Eine Blockchain ist eine Kette von Blöcken, von denen jeder Daten enthält, und die von keiner zentralen Instanz überwacht oder verwaltet wird. Diese Informationsketten sind kryptografisch gesichert und lassen sich dank ihrer dezentralen Struktur nicht zum Schweigen bringen. Im Kern nutzt eine Blockchain zwei Datenstrukturen: Zeiger (Pointer) und verkettete Listen.

Zeiger

Zeiger sind Variablen, die angeben, wo sich eine andere Variable befindet. Normalerweise enthalten Variablen in der Programmierung Daten. (Im Beispiel int a = 10 hat die Ganzzahlvariable a den Wert 10.) Zeiger dagegen speichern keinen Wert als Daten, sondern verweisen auf die Adresse der Variablen, die diese Daten hält.

Verkettete Listen

Verkettete Listen gehören zu den wichtigsten Bausteinen unter den Datenstrukturen und sehen grob so aus.

Eine Folge von Blöcken, von denen jeder bestimmte Daten enthält und über einen Zeiger mit dem nächsten Block verbunden ist. Die Zeigervariable enthält die Adresse des nächsten Knotens und stellt so die Verbindung her. Wie wir am Endknoten gesehen haben, enthält der letzte Zeiger keine Daten.

Entscheidend ist hier: Jeder Zeiger enthält die Adresse des nächsten Blocks. Wo aber ist der Zeiger auf den ersten Block? Der erste Block heißt Genesis-Block, und sein Zeiger steckt im System selbst.

Ein Hash-Zeiger ist ein Zeiger, der den Hash des vorangehenden Blocks enthält.

Hashing ist ein Verfahren, das Daten beliebiger Länge entgegennimmt und über eine bestimmte Funktion – unabhängig vom Inhalt der Daten – ein Ergebnis immer gleicher Länge erzeugt. Bei Bitcoin wird der Transfervorgang als Daten genommen und durch den SHA-256-Algorithmus geschickt, der ein Ergebnis fester Länge liefert. Unabhängig von der Länge der Eingabedaten erzeugt der SHA-256-Algorithmus stets ein 256 Bit langes Ergebnis.

In ihrer einfachsten Form ist eine Blockchain eine verkettete Liste, wie unten dargestellt.

Eine Blockchain ist eine verkettete Liste, in der jeder Block Daten und einen Hash-Zeiger auf den vorangehenden Block enthält. Was also ist ein Hash-Zeiger? Hash-Zeiger ähneln gewöhnlichen Zeigern sehr, enthalten aber neben der Adresse des vorherigen Blocks auch den Hash der darin gespeicherten Daten. Genau dieser kleine Unterschied im Aufbau macht die Blockchain-Technologie so sicher.

Nehmen wir kurz an, ein Angreifer möchte Block 3 angreifen und die darin enthaltenen Daten verändern. Wegen der Hash-Funktion schlägt schon die kleinste Änderung an den Daten als gewaltiger Unterschied im Ergebnis durch. Die kleinste Änderung an den Daten in Block 3 verändert den in Block 2 gespeicherten Hash, die Änderung in Block 2 wirkt sich auf den Hash in Block 1 aus – die gesamte Kette müsste also verändert werden, und das ist unmöglich. Genau diese Methode macht Blockchains unauslöschlich.

Was ist Mining?

Mining ist der Prozess, der nötig ist, um neue Bitcoins zu erzeugen. Bitcoin-Mining funktioniert nach dem Prinzip Proof of Work – POW. Einfach gesagt: Eine Aufgabe zu lösen soll sehr schwierig sein, aber sobald man sie gelöst hat, soll sich die Richtigkeit der Lösung sehr leicht überprüfen lassen.

Bevor wir dazu kommen, wie Bitcoin POW als Konzept einsetzt, versuchen wir zu verstehen, warum Kryptowährungen so ein System überhaupt brauchen.

Vor Bitcoin gab es bereits verschiedene digitale Währungen. Baut man jedoch in einer digitalen Umgebung ein dezentrales Netzwerk auf, das von Mensch zu Mensch arbeitet, steht am Anfang das größte Hindernis: das logische Problem der byzantinischen Generäle. Weil Nakamoto dieses Problem bei Bitcoin mit POW lösen konnte, konnte Bitcoin überhaupt entstehen – und läuft bis heute stark.

Das Problem der byzantinischen Generäle

Erklären wir das Problem der byzantinischen Generäle, das auch in akademischen Arbeiten häufig herangezogen wird. Die byzantinischen Generäle, die einen Angriff auf die feindliche Stadt planen, haben zwei Probleme:

Die Generäle sind sehr weit voneinander entfernt, deshalb kann keine zentrale Instanz die Belagerung steuern.

Auch der Feind hat ein starkes Heer, deshalb muss der Angriff von allen Generälen gleichzeitig erfolgen, damit er gelingt.

Während die Belagerungsheere die Stadt umschließen, gibt jedes Heer die Befehlsnachricht vom Heer zu seiner Rechten an das Heer zu seiner Linken weiter – so bleibt die Kommunikation bestehen. Das Problem ist nur: Kommt der Befehl, dass am Mittwoch angegriffen wird, ist ein Heer vielleicht nicht bereit und schickt die Antwort zurück, nein, Angriff am Freitag. Oder der Soldat mit der Nachricht wird vom Feind gefangen genommen, oder der Inhalt der Nachricht wird verändert. In einer derart unsicheren Umgebung scheitert jeder Angriff, wenn keine vollständige Abstimmung gelingt.

Dasselbe logische Problem gilt für Blockchain-Netzwerke, die Infrastruktur von Kryptowährungen wie Bitcoin. Das sind unglaublich große Netzwerke – wie sollen wir jeder einzelnen Person darin vertrauen? Wir wollen jemandem 4 Ether schicken: Wie können wir darauf vertrauen, dass ein Böswilliger daraus nicht 40 Ether macht?

Satoshi Nakamoto gelang es, dieses logische Problem mit dem Proof-of-Work-Protokoll zu lösen. Sehen wir uns an, wie es funktioniert:

Will das belagernde Heer die Nachricht „Wir greifen am Montag an“ an das Heer zu seiner Linken übermitteln, muss es folgende Schritte gehen;

Zuerst wird der ursprünglichen Nachricht ein zufälliger, einmalig erzeugter Wert namens „Nonce“ zugewiesen. Eine Nonce kann jeder beliebige Wert im Hexadezimalsystem sein.

Anschließend wird der Nachrichtentext mit der zugewiesenen Nonce durch die Hash-Funktion geschickt, und man erhält ein Ergebnis. Bei diesem gedachten Angriff nehmen wir an, dass die Befehlshaber vereinbart haben, nur solche Hash-Ergebnisse miteinander zu teilen, deren erste 5 Stellen Nullen sind.

Ergibt die Hash-Funktion das Gewünschte, geben sie die Nachricht an den nächsten General weiter. Passt das Ergebnis nicht, muss die zugewiesene Nonce zufällig geändert und der Vorgang wiederholt werden, bis ein Ergebnis mit fünf führenden Nullen herauskommt. Ein solches System verlangt unglaublich viel Zeit und Rechenleistung.

Wird der Soldat mit der Nachricht gefangen genommen oder der Inhalt verändert, fällt das Hash-Ergebnis wegen der Eigenschaften der Hash-Funktion völlig anders aus. Beim Prüfen der Nachricht merken die Generäle, dass die ersten fünf Stellen des Hashes keine Nullen sind, und blasen den Angriff ab.

Auch wenn es sehr unwahrscheinlich ist, kann jede Hash-Funktion kollidierende Ergebnisse liefern. Theoretisch dürfte es für zwei getrennte Eingaben A und B keine Wahrscheinlichkeit dafür geben, dass H(A) = H(B) ist, doch in der Praxis ist keine Hash-Funktion vollständig kollisionssicher.

Was passiert also in diesem unwahrscheinlichen Fall, wenn der Soldat mit der Nachricht gefangen wird, die Nachricht verändert wird und das Hash-Ergebnis trotzdem genau so aussieht, wie die Generäle es erwarten? Das wäre natürlich ein zeitaufwendiger Vorgang, aber unmöglich ist er nicht. Dem setzen die Generäle ihre zahlenmäßige Überlegenheit entgegen.

Das Problem lässt sich lösen, indem drei Generäle gleichzeitig Nachrichten nach links schicken, statt dass ein einzelner General die Nachricht reihum von rechts nach links weitergibt. Wenn die Generäle aus ihren eigenen Nachrichten eine kumulative Nachricht bilden, diese durch die Hash-Funktion schicken, dem Ergebnis eine Nonce zuweisen und es dann erneut in die Hash-Funktion geben, müssen diesmal die ersten sechs Stellen des Ergebnisses Nullen sein.

Auf dieser Stufe wird es zu einer ernsthaften Zeitverschwendung, die Nonce dieser Nachricht zu finden und ihren Inhalt zu verändern.

Die Aufgabe der Generäle, welche die Nachricht empfangen, ist dagegen leicht; sie müssen nur die ihnen mitgeteilte Nonce zum Hash-Ergebnis hinzufügen und die Ergebnisse vergleichen. Dieser Schritt ist ein sehr schneller und einfacher Vorgang. Genau diese Idee ist der Wirkmechanismus des Proof-of-Work-Prinzips.

Die Nonce für den passenden Hash zu finden, erfordert enorme Rechenleistung und Zeit

Die Ergebnisse zu prüfen und festzustellen, ob böse Absicht im Spiel ist, kostet dagegen nur sehr wenig Zeit.

Genau so setzen Miner das Proof-of-Work-Protokoll beim Bitcoin-Mining um. Sie nutzen ihre Rechenleistung, um das kryptografische Problem vor ihnen zu lösen und den nächsten Block zu erzeugen. In der Bitcoin-Blockchain entsteht alle 10 Minuten ein Block.

Wie laufen Transfers im Bitcoin-Netzwerk ab?

Sagen wir, John möchte Dave ein paar Bitcoin schicken. Wie läuft dieser Transfer ab? Bitcoin-Transfers funktionieren völlig anders als Überweisungen von Fiatgeld. Wollte John Dave 10 USD geben, würde er den 10-USD-Schein physisch aus seiner Brieftasche nehmen, ihn Dave reichen, und der Transfer wäre erledigt. Bei Bitcoin ist das anders – es ist nichts, was wir physisch besitzen. Was wir besitzen, ist der Nachweis, dass wir Bitcoin haben.

Zwei Dinge sollten wir wissen und beachten;

Miner bestätigen und sichern Transfervorgänge mit den Daten, die sie in den von ihnen erzeugten Block schreiben. Für diesen Dienst verlangen sie eine Gebühr.

Bei Fiatwährungen kennen und verfolgen wir die Geschichte keines Scheins, den wir in der Hand halten. Es gibt dafür keinen praktikablen Weg. Bei Bitcoin dagegen wird jeder einzelne Transfer im Netzwerk aufgezeichnet.

Sehen wir uns vor diesem Hintergrund den Bitcoin-Transfer zwischen John und Dave an. Dieser Transfer hat zwei Teile; Eingabe und Ausgabe (Input-Output).

Damit John diesen Transfer durchführen kann, muss er Bitcoin aus früheren Transfers besitzen. Wie erwähnt, werden alle Transfers im Bitcoin-Netzwerk aufgezeichnet.

John muss die Bitcoins aus den zuvor erhaltenen Transfers mit den Bezeichnungen TR(0), TR(1) und TR(2) zusammenführen, daraus einen neuen Transfer namens TR(INPUT) erstellen und ihn an Dave senden. TR(INPUT) wird damit zu den Eingabedaten des neuen Transfers.

So sieht ein Bitcoin-Transfer von der Eingabeseite her grob aus.

Die Ausgabedaten enthalten schlicht die Menge an Bitcoins, die Dave nach dem neuen Transfer haben soll, sowie das übrige Wechselgeld, das an John zurückgeht und in seinem nächsten Transfer zum TR(INPUT)-Wert wird.

Klammert man das Wechselgeld aus, enthält dieser Vorgang ein einziges Ausgabeergebnis, es sind aber auch Transfers mit mehreren Ausgabeergebnissen möglich. Diese Darstellung zeigt einfach, wie ein Transfer im Bitcoin-Netzwerk abläuft. Damit das erfolgreich geschieht, müssen jedoch bestimmte Bedingungen erfüllt sein.

Bedingungen, die Transfers erfüllen müssen:

TR(INPUT) > TR(OUTPUT). Der Eingabetransfer muss immer größer sein als der Ausgabetransfer. Bei jedem Transfer wird die Differenz zwischen Eingabe und Ausgabe (Ausgabe + Wechselgeld) als Gebühr an die Miner gezahlt. Also: Mining-Gebühr = TR(INPUT) - (TR(OUTPUT) + WECHSELGELD)

Auf der Eingabeseite muss TR(0)+TR(1)+TR(2)=TR(INPUT) gelten. Mit anderen Worten: John muss genug Bitcoin haben, um sie an Dave zu senden. Hat er nicht genug Bitcoin für die Transaktion, wird der Transfer von den Minern abgelehnt.

Nun muss Dave nachweisen, dass er der Eigentümer der an ihn gesendeten Bitcoins ist. John hat seinen Bitcoin-Transfer mit Daves öffentlichem Schlüssel verschlüsselt. Dave kann diese Verschlüsselung nur mit seinem privaten Schlüssel öffnen.

Zugleich muss John nachweisen, dass er genug Bitcoin hat, um sie an Dave zu senden. Das tut er, indem er den gewünschten Transfer mit seinem eigenen privaten Schlüssel signiert. Jeder kann ihn mit Johns öffentlichem Schlüssel öffnen und überprüfen, dass er tatsächlich über die nötige Menge Bitcoins verfügt. Dieser Nachweis heißt Signaturdaten.

Eingabedaten (inklusive Signaturdaten) und Ausgabedaten werden zusammengefügt und durch den Hash-Algorithmus SHA-256 geschickt. Die Ausgabe dieses Algorithmus wird als Transfer bezeichnet.

Eines ist dabei zu bedenken: Damit ein Bitcoin-Transfer zustande kommt, muss der Miner, der den Block geschürft hat, diesen Transfer physisch in den Block aufnehmen. Der Miner, der den Block geschürft hat, kann die Gebühren aller Transfers erhalten, die er in diesen Block gepackt hat. Weil die Transfermengen mit der Zeit steigen, müssen Transfers auf einen neuen Block warten, sobald die Blöcke vollständig gefüllt sind. Wer nicht warten will, zahlt eine höhere Mining-Gebühr – so sticht sein Transfer heraus und wird für Miner attraktiver.

Daraus entstand das Replace-by-Fee-Prinzip. Es funktioniert schlicht so: Selbst wenn John 5 BTC an Dave gesendet hat, kommt die Transaktion nie in einen Block und bleibt ausstehend, weil die Mining-Gebühr niedrig gehalten wurde. Rückgängig machen oder stornieren lässt sich das nicht, denn ausgegebene Bitcoin sind nicht zurückzuholen. Führt John jedoch einen Transfer an dieselbe Adresse über denselben BTC-Betrag mit höherer Mining-Gebühr aus, gilt der alte Transfer als ungültig und der neue wartet auf seine Verarbeitung.

Die Zukunft von Bitcoin und Kryptowährungen im Allgemeinen steckt voller Möglichkeiten. Blockchain-Anwendungen kennen keine Grenzen, und die Projekte in diesem Feld werden Tag für Tag erfolgreicher und sicherer.

Auf dem Weg von Warengeld über die Nutzung von Edelmetallen wie Gold und Silber bis hin zu Papiergeld und Nominalwährungen ist die Idee von Geld im virtuellen Raum nicht besonders neu – umsetzbar wurde sie allerdings erst in jüngster Zeit.

Für die einen ist er eine Gruppe innerhalb der CIA, für die anderen ein Außerirdischer, vielleicht ist er wirklich ein Cyberpunk namens Satoshi Nakamoto. Wer auch immer es ist: Er hat es uns allein überlassen zu entscheiden, was wir als Nächstes mit seinen Ideen und deren Umsetzung tun, die unseren Blick auf unsere Vermögenswerte und deren Verwahrung völlig verändern. Er hat den Weg für Ideen geebnet, die weiter reichen als seine eigene, und die Welt von einer ganz anderen Sichtweise überzeugt.

Satoshi hatte nicht versäumt, eine Botschaft im Genesis-Block – dem Startblock – zu verstecken, den er schürfte und als Hardcode hineinschrieb. Er hielt das Datum 3. Januar 2009 fest und fügte eine Schlagzeile der britischen Times von diesem Tag über die für die weltweite Wirtschaftskrise verantwortlichen Banken an: „Minister steht vor zweitem Rettungspaket für Banken“. Wahrscheinlich macht er sich mit diesen Worten über das Zentralbankwesen lustig. Warum Satoshi diese nicht ausgabefähige Adresse im Startblock angelegt hat, ist unbekannt. Bislang wurden anonym 16 BTC an diese Adresse geschickt, weshalb das Gesamtangebot von 21 Millionen Bitcoins tatsächlich nie erreicht werden wird.

Bitcoin brauchte nur 9 Jahre, um Niveaus zu erreichen, die den Zentralbanken der Welt Angst machen – und es hat noch einen weiten Weg vor sich.

Bitcoin Wie funktioniert Bitcoin Satoshi Satoshi Nakamoto Nakamoto Kryptowährungen Blockchain Was ist Blockchain Mining Was ist Mining Bitcoin-Netzwerk