Kryptogeld wirklich verstehen — Das ist die Blockchain

Ruben Moor
Oct 8, 2017 · 8 min read
Image for post
Image for post

TL:DR Konsequent dezentrales Design bringt Herausforderungen mit sich, die Bitcoin mithilfe der Blockchain löst. Auf dem Weg, das im Detail zu verstehen, geht es um Konzepte wie difficulty, proof-of-work und mining.

Image for post
Image for post

Hallo, ich bin Dirk. Dies ist eine Fortsetzung des Artikels Ein dezentrales Netzwerk aus der Serie “Kryptogeld wirklich verstehen”. Weitere relevante Artikel sind unten verlinkt.

Ach, machst du neuerdings die Einführung?

Deine Artikel brauchen mehr Struktur

Ok, äh, Danke! Manchmal hab ich Angst, ich werde weggesperrt, wegen Schizophrenie.

Quatsch, das ist alles im Rahmen künstlerischer Freiheit. Wiederhol doch bitte für unsere Leser, wo wir im letzten Artikel stehengeblieben sind

Geht los! Bitcoin ist ein dezentrales Netzwerk aus gleichberechtigten Nodes. Prinzipiell kann jeder zu so einem Node werden, indem er die Software Bitcoin Core herunterlädt und 24/7 auf seinem PC laufen lässt. Prakti sch ist das nicht notwendig und auch nicht empfehlenswert. Jeder Node weiß über alle Bitcoin-Transaktion Bescheid und speichert die Blockchain, das ist Bitcoins distributed ledger.

Außerdem überprüft jeder Node die Korrektheit jeder Transaktion und stellt somit sicher, …

  • … dass niemand mehr Coins ausgeben kann, als er besitzt,
  • … dass niemand anderer Leute Coins ausgeben kann
  • … und dass ich meine Coins nicht gleichzeitig mehrmals ausgeben kann.

Ja, nur dass du meintest, das reicht irgendwie noch nicht

Richtig. Eben weil jeder Hanswurst Node werden kann und dann im Netzwerk mitmischt, können die Nodes sich untereinander nicht vertrauen. In einem verteilten Netzwerk entstehen leicht Inkonsistenzen und wir brauchen also einen Mechanismus, der einen Konsens unter den Nodes herstellt, selbst dann wenn ein böswilliger Angreifer zielgerichtet das Netzwerk angreift.

Was ist die Motivation eines solchen Angreifers?

Als Angreifer könnte ich versuchen, entgegen der obigen Regeln mir “illegal” zu mehr Coins zu verhelfen oder andere Leute um ihre Coins zu erleichtern. Nicht zuletzt könnte auch jemand einfach versuchen, das Gesamtprojekt Bitcoin zu vernichten. Ich muss da an Chinas Kapitalverkehrskontrollen denken, die von Bitcoin unterwandert werden, oder die Währungsdominanz des US-Dollar, von der nicht alle Menschen profitieren.

Bleib unpolitisch, sonst verdirbst du es dir mit deinen Lesern, die an der technischen Innovation interessiert sind — ohne Verschwörungstheorien

Wie du meinst. Heute soll es darum gehen, wie Bitcoins Blockchain diese Herausforderung löst, und wir widmen uns direkt dem schwierigsten Problem.

Das Double-Spending-Problem

Das Problem heißt double spending und geht so:

lch habe einen Betrag von 30 BTC gespart und kaufe mir davon einen Ferrari. Der Autohändler sieht in seinem Wallet sofort, dass ich eine entsprechende Transaktion an seine Adresse getätigt hat, weil sich die Information unter den Nodes in Europa schnell verbreitet. Er glaubt also, die Bezahlung ist in Ordnung und beglückwünscht mich zu meiner Kaufentscheidung.

lch habe aber außerdem zeitgleich an meine Nodes in China und Südamerika eine weitere, widersprüchliche Transaktion geschickt, die mit der ersten identisch ist, nur dass die Zieladresse eine komplett andere ist. In dieser zweiten Transaktion schicke ich dieselben 30 BTC an eine Adresse, die in meinem Besitz ist.

lch habe also meine Coins zwei Mal ausgegeben (deshalb heißt es double spending). Einige Nodes glauben, die 30 BTC gehören dem Autohändler, andere Nodes glauben, sie gehören immer noch mir. Wenn ich mit dem Auto vom Hof fahre, will der Autohändler aber Gewissheit haben, dass die 30 BTC ihm und nur ihm gehören.

Ich sehe, dass das ein Problem ist, aber warum ist das das “schwierigste Problem”?

Double Spending ist deshalb so hinterfotzig, weil beide widersprüchlichen Transaktion für sich genommen gültig sind und ich trotzdem betrügen kann. Es gibt nicht einmal ein objektives Kriterium, welche der beiden Transaktion die “richtige” ist.

Image for post
Image for post

lch werde jetzt Schritt für Schritt Bitcoins Blockchain erklären und am Schluss wird klar, warum damit das Double-Spending-Problem gelöst ist.

Die Blockchain Schritt für Schritt

Zuallererst werden Transaktionen nicht einzeln verifiziert, sondern in sogenannte Blöcke zusammengefasst. Jeder Node lauscht also im Netzwerk nach unbestätigten Transaktionen (engl. unconfirmed transactions) und versucht, aus diesen einen Block zu generieren. Nodes, die sich bei der Blockerzeugung beteiligen, werden Miner genannt.

Image for post
Image for post
Ein Block aus Transaktionen

Das Generieren von Blöcken ist ein Wettbewerb unter den Minern und wird belohnt. Derjenige Miner, der einen gültigen Block erzeugt, darf sich selber den sogenannten block reward in Bitcoin gutschreiben, zur Zeit immerhin 12,5 BTC. Daher erklärt sich auch der Name: Miner = Bergarbeiter. Miner bauen gewissermaßen Bitcoins ab.

Außerdem erhält der Miner die Transaktionsentgelte, die in jeder Transaktion drinstecken. Die Blockerzeugung ist nicht einfach und obwohl alle Miner gleichzeitig versuchen, den nächsten Block zu generieren, wird im Schnitt alle 10 Minuten nur ein Block gefunden

Image for post
Image for post
Eine Kette von Blöcken

Da die Transaktionen prinzipiell aufeinander aufbauen (Hans schickt was an Gabi, Gabi schickt was an Klaus), bauen auch die Blöcke aufeinander auf. lm header von Block 324 steht drin, dass der vorhergehende Block die Nummer 877 hatte.

Difficulty und Proof-of-Work

Ich kann bei allem folgen außer hier: Du sagst: “Die Blockerzeugung ist nicht einfach”. Was soll den daran schwer sein, die Transaktionen zusammenzufassen?

Die Wahrheit ist, Blockerzeugung wird künstlich schwer gemacht. Das ist ein Teil des Blockchain-Designs. Wie schwer es genau ist, einen neuen Block zu generieren, wird über einen Parameter geregelt, der im jeweils letzten Block vorgegeben ist: die difficulty. Je höher die difficulty ist, desto mehr Rechenleistung ist dazu nötig.

Wer es genau verstehen will: In dem Artikel Von privaten Schlüsseln, Unterschriften und Adressen hab ich erklärt, was eine Hash-Funktion ist. Die Miner müssen nun folgendes Rätsel lösen: der Hash von dem Block-Header muss kleiner sein als der Kehrwert der difficulty (multipliziert mit einer Konstanten). Da die Ergebnisse einer Hash-Funktion pseudo-zufällig sind, bleibt dem Miner nichts anderes übrig, als auszuprobieren und zu schauen, welcher Wert rauskommt. Für den Fall, dass es nicht klappt, gibt es die Nonce: Eine Zahl im Block-Header, die keinerlei Bedeutung hat, aber variiert werden kann, damit der Hash des Block-Headers einen neuen Wert annimmt. Die Miner machen also nichts anderes, als Nonces durchzuprobieren und Hashes zu berechnen, bis das difficulty-Kriterium erfüllt ist.

Image for post
Image for post

Das erfolgreiche Generieren eines Blocks bei gegebener difficulty wird proof-of-work genannt, der “Nachweis von Arbeit” — bzw. in diesem Fall eben geleistete Rechenpower.

Na Klasse, statt einzelner Transaktionen haben wir jetzt Blöcke. Und meine CPU läuft heiß, wenn ich versuche Blöcke zu generieren. Was ist damit jetzt gewonnen?

Die Blöcke, von denen es im Schnitt alle zehn Minuten einen neuen gibt, sind der Takt des Netzwerks. Eine Transaktion, die es in einen Block schafft, wurde verifiziert und ist in Ordnung.

Der Fork in der Blockchain

Der Double-Spending-Angriff funktioniert aber zunächst immer noch. Im Beispiel oben hatte der Angreifer an die Nodes in Europa eine Transaktion gesendet — nennen wir sie Transaktion 1a — und an die nodes in China und Südamerika eine andere — nennen wir sie Transaktion 1b.

Nun ist durchaus wahrscheinlich, dass ein europäischer Node einen gültigen Block mit der Transaktion 1a generiert, block 216, und ein chinesischer Node einen mit Transaktion 1b, block 899. Unabhängig voneinander sind beide Blöcke gültig. Was passiert also mit unserer Blockchain?

Image for post
Image for post
Der Fork in der Blockchain

Wir haben einen fork, auch genannt Verzweigung. Als ehrlicher Node stehe ich jetzt vor einem Konflikt. lch kann jetzt entweder basierend auf chain 1 versuchen neue Blöcke zu generieren oder basierend auf chain 2.

Mal ganz langsam bitte. Ich bin Miner. Ich will einen neuen Block generieren. Ich brauch dazu den letzten gültigen Block. Mir stehen aber zwei zur Auswahl, einer aus Europa und einer aus China.

Alles richtig. Das Bitcoin-Protokoll sieht für die ehrlichen Miner jetzt die folgende Regel vor.

Ehrlich währt am längsten …

Ich generiere Blöcke immer für diejenige chain, in die am meisten proof-of-work geflossen ist. Das ist in der Regel einfach die chain mit den meisten Blöcken, also die längste chain.

… und das Netzwerk konvergiert

Weil aber die große Mehrheit der Rechenpower von ehrlichen Minern kommt, bleibt ganz schnell nur eine chain übrig. Das Netzwerk konvergiert nach einem fork auf eine Blockchain. Der böse Hacker kann seine Miner weiterhin auf dem schwachen fork arbeiten lassen allerdings bringt ihm das wenig. Er kann sich nicht einmal über den block reward freuen, weil der in der dominanten chain an ganz andere Miner ausbezahlt wird. Und die Geschichte wird von den Siegern geschrieben.

Bitte keine Politik. Schließe jetzt lieber den Bogen und erklär mir, wie jetzt der Autohändler an seine Bitcoins für den Ferrari kommt

Image for post
Image for post

Problem: gelöst

Zurück zum Autohändler also: Wenn ich also 30 BTC empfange und ganz sicher gehen will, dass die auch bei mir landen — trotz böser Hacker-Attacken — dann muss ich einfach nur ein paar Blöcke abwarten.

Ein Hacker, der sehr viel Rechenpower hat, kann vielleicht erreichen, dass die Transaktion 1a für die Zeit von ein, zwei Blöcken (= 10 bis 20 Minuten) gültig aussieht und dann plötzlich verschwindet. Mit jedem weiteren Block sinkt die Wahrscheinlichkeit aber drastisch, dass noch ein fork irgendwo am Leben ist.

Da ein Angreifer, der mehr als 50% der Rechenpower des Netzwerks kontrolliert, prinzipiell in der Lage wäre, beliebige forks am Leben zu erhalten, spricht man in so einem Fall von der 50%-Attacke. Gegen einen Einzelnen, der mehr als 50% der Rechenpower kontrolliert, wären die ehrlichen Miner machtlos und Bitcoin wäre nicht mehr sicher. Gegen eine 50%-Attacke gibt es keine Lösung, außer dass es teuer bis unmöglich ist, 50% der Rechenpower des Bitcoin-Netzwerks für einen Angriff zu kontrollieren.

Praktisch hat sich etabliert: Wer ganz sicher gehen will, wartet sechs Blöcke nach einer Transaktion ab, auch genannt: sechs Bestätigungen oder confirmations. Diese Eigenschaft des dezentralen Netzwerks, innerhalb eines Zeitraums zu konvergieren, ist die zentrale Innovation von Bitcoin.

Im nächsten Teil geht es um die Konsequenzen dieses Wettbewerbs der Miner. Neben positiven Aspekten wie der Sicherheit gegen hypothetische Versuche der NSA, Bitcoin zu dominieren, gibt es auch negative Aspekte wie den Stromverbrauch und Zentralisierung der Rechenpower. Außerdem gibt es alternative Coins, die auf Bitcoins Konzepten aufbauen und versuchen es besser hinzukriegen

Sehr richtig, Dirk!

Image for post
Image for post

Liebe Leser

Wer bis hierhin alles verstanden hat, hat es fast geschafft. Die Blockchain ist ein Meilenstein in der Geschichte des Internets und die Funktionsweise muss kein von Experten gehütetes Geheimnis sein.

Wenn noch Dinge unklar sind, helfe ich gerne weiter. Also stellt eure Fragen in den Kommentaren!

Ältere Artikel aus der Serie Kryptogeld verstehen

kryptogeld

Kryptogeld wirklich verstehen für Sparer, Trader und Laien

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store