Einführung zu Blockchains (33c3)
-
0:14 - 0:15*33C3-Vorspannmusik*
-
0:15 - 0:19Herald: Gut, dann machen wir
weiter mit dem nächsten Vortrag. -
0:19 - 0:25Der ist von vimja, der ist
Informatikstudent aus Bern in der Schweiz, -
0:25 - 0:29und er arbeitete bzw. er
beschäftigte sich mit Bitcoin -
0:29 - 0:33und Ethereum, und schrieb seine
Bachelorarbeit über die Suche -
0:33 - 0:38nach Informationen in der Bitcoin-
Blockchain. Und da macht es total Sinn, -
0:38 - 0:43dass der uns jetzt eine Einführung
zu Blockchains präsentieren wird. -
0:43 - 0:46Ein großer Applaus für vimja!
-
0:46 - 1:04*Applaus mit Pfeifen und Jubel*
Das ist deine Bühne! -
1:04 - 1:10*weiterhin Applaus*
-
1:10 - 1:19vimja: Toll, das ist jetzt
gerade kaputtgegangen. -
1:19 - 1:20*Gelächter*
-
1:20 - 1:21So ist es besser.
-
1:21 - 1:22*Applaus*
Danke. -
1:22 - 1:24Genau, das geht jetzt
natürlich auch nicht. -
1:24 - 1:25Mache ich es halt von Hand.
-
1:25 - 1:27Ist vermutlich, weil ihr alle das Wi-Fi
braucht, geht das 2,4-GHz-Band nicht mehr. -
1:27 - 1:31Ja das hat er euch ja alles
schon gesagt, der Herald. -
1:31 - 1:35In dieser Zeit, in der ich mich
mit Blockchains befasst habe, -
1:35 - 1:39durfte ich natürlich sehr viele
sehr interessante Dinge lernen, -
1:39 - 1:42und ich möchte jetzt heute abend
einen Teil dieses Wissens -
1:42 - 1:45an euch weitergeben. Genau.
-
1:45 - 1:53Das Ganze ist natürlich ein sehr komplexes
Thema, das viele komplizierte Dinge -
1:53 - 1:56enthält, und deshalb fangen wir jetzt mit
etwas sehr einfachem an, was wir alles -
1:56 - 2:00kennen. Und zwar herkömmliche
Besitzsysteme – also Systeme, -
2:00 - 2:04die ausdrücken wem etwas gehört. Und,
eigentlich, mit der Erkenntnis, dass man -
2:04 - 2:11all diese Besitzsysteme als
Zustandsübergangssysteme darstellen kann. -
2:11 - 2:16Das gilt sowohl für Finanzsysteme,
die wir haben um Geld zu verwalten, -
2:16 - 2:20als auch etwa für Grundstücke, also
Systeme mit denen wir verwalten, -
2:20 - 2:22wem ein Grundstück gehört.
-
2:22 - 2:28Das Mapping funktioniert dann in etwa
so, dass wir sagen, der Zustand ist -
2:28 - 2:34die Sammlung der Informationen wem
was gehört. Und jedes Übertragen -
2:34 - 2:38eines Besitzes ist eine Transition,
die zu einem neuen Zustand führt. -
2:38 - 2:42Also am Beispiel eines finanziellen
Systems sagen wir, der Zustand ist -
2:42 - 2:47die Sammlung aller Konten, die es gibt.
Das drückt für jede Person aus, -
2:47 - 2:51wieviel Geld ihr gehört. Und ein Übergang
ist, wenn jemand eine Transaktion macht, -
2:51 - 2:54also Geld überweist, von einem Konto
zu einem anderen, dann führt das -
2:54 - 2:58zu einem neuen Zustand.
So, das sehen wir hier abgebildet -
2:58 - 3:03mit Grundstücken. Wir sehen hier, der
Zustand, der enthält diese Information, -
3:03 - 3:07wem die Grundstücke gehören.
Und dann verkauft der Bob -
3:07 - 3:11sein Grundstück Nr. 42 an Alice und
das führt zu einem neuen Zustand. -
3:11 - 3:16Ich habe da den Unterschied markiert,
damit der eindeutig sichtbar ist. -
3:16 - 3:20Nun, in all diesen Systemen ist es sehr
wichtig, dass sich alle Teilnehmer des -
3:20 - 3:26Systems auf einen Zustand einigen können.
Dass sie sich einig sind, wem was gehört. -
3:26 - 3:30Denn wenn sie das nicht können, sind
Angriffe auf das System möglich, -
3:30 - 3:32insbesondere der sogenannte
Double-Spend-Angriff, -
3:32 - 3:38der in der Blockchain-Welt bekannt und
gefürchtet ist. Und was bedeutet das? -
3:38 - 3:42Das ist ganz einfach, wenn jemand etwas
zweimal ausgibt. Bei Geld ist das ein -
3:42 - 3:45wenig abstrakt (also wie gibt man zweimal
dasselbe Geld aus), aber bei Grundstücken -
3:45 - 3:49ist das ganz einfach. Stellen wir uns vor,
jemand verkauft dasselbe Grundstück -
3:49 - 3:52zweimal. Das ist natürlich kriminell
und darf nicht vorkommen. -
3:52 - 3:58Schauen wir uns jetzt mal an wie
das funktioniert. Stellen wir uns vor, -
3:58 - 4:02Malroy hat ein schönes Grundstück,
das Grundstück Nr. 5. Und sowohl Alice -
4:02 - 4:06als auch Bob möchten gerne das
Grundstück kaufen. Und Malroy -
4:06 - 4:10wird jetzt versuchen, das an beide zu
verkaufen. Also trifft er sich mit Alice. -
4:10 - 4:14Das ist also jetzt der aktuelle Zustand.
Wir haben gesehen, das Grundstück Nr. 5 -
4:14 - 4:20gehört hier dem Malroy. Der trifft sich
mit Alice. Und er verkauft es an Alice. -
4:20 - 4:25Er überweist ihr das Grundstück. Wir sehen
diese Transition – überweist das Grundstück -
4:25 - 4:29von Malroy an Alice. Und im neuen Zustand
gehört es jetzt der Alice. So, der Bob, -
4:29 - 4:32der hat davon nichts mitgekriegt.
Irgendwie – Bob und Alice wissen -
4:32 - 4:36immer noch nicht recht wie man sicher
miteinander kommuniziert. Und deshalb -
4:36 - 4:39weiß der Bob jetzt nichts davon, dass
die Alice das Grundstück gekauft hat. -
4:39 - 4:44Er denkt, das Grundstück gehört immer noch
Malroy. Also trifft er sich mit Malroy. -
4:44 - 4:48Und auch er einigt sich mit Malroy auf
einen Preis. Und Malroy tut jetzt so, -
4:48 - 4:52als würde er den Besitz des
Grundstücks an Bob übertragen. -
4:52 - 4:56Und für Bob sieht die Welt jetzt so
aus, d.h. Bob ist überzeugt, das ist -
4:56 - 5:00der korrekte Zustand des Systems.
Da haben wir natürlich ein Problem, -
5:00 - 5:03weil Bob und Alice, die sind sich
jetzt gar nicht einig darüber, -
5:03 - 5:07wem das Grundstück gehört. Ja, Malroy
ist natürlich abgehauen mit dem Geld. -
5:07 - 5:11Und das System ist kaputt, weil Bob
und Alice die können nicht mehr -
5:11 - 5:15miteinander handeln. Und auch wenn
jetzt jemand anderes das Grundstück -
5:15 - 5:18kaufen möchte: bei wem kauft er es
denn jetzt? Was ist denn rechtmäßig? -
5:18 - 5:24Nun, in der Welt der Grundstücke gibt
es dafür eine ganz einfache Lösung, -
5:24 - 5:29nämlich das Grundbuchamt. Und das
Grundbuchamt fungiert eigentlich -
5:29 - 5:33als zentrale Referenzstelle,
die den Zustand verwaltet, -
5:33 - 5:37und alle Änderungen verwaltet. Jedesmal
wenn jemand ein Grundstück verkauft, -
5:37 - 5:42muss das über das Grundbuchamt erledigt
werden. Das Grundbuchamt überprüft, -
5:42 - 5:46dass das überhaupt zulässig ist, ob das
Grundstück wirklich der Person gehört -
5:46 - 5:50und führt das dann nach. Und so kann das
Grundbuchamt diese einfachen Angriffe -
5:50 - 5:58verhindern. Diese (?)(?)(?) Lösung
funktioniert auch für Finanzsysteme. -
5:58 - 6:03Also wenn wir an Banken denken, wenn ich
ein Konto habe, da ist dann halt die Bank -
6:03 - 6:07die zentrale Autorität, welche den Zustand
verwaltet. Für jede… jedesmal, -
6:07 - 6:11wenn ich eine Transaktion mache, also Geld
überweise, überprüft die Bank vorher, -
6:11 - 6:16ob ich wirklich das nötige Geld dazu
habe. Und dann wird mein Kontostand -
6:16 - 6:22nachgeführt. Und die verwaltet so
für alle Teilnehmer den Zustand. -
6:22 - 6:27Und das funktioniert eigentlich erstaunlich
gut. Nun wollen wir ein System, mit dem -
6:27 - 6:31wir Zahlungen über das Internet abwickeln
können. Und wir hätten gerne, dass das -
6:31 - 6:35dezentral ist. Weil, wenn das nicht
dezentral ist, dann kann natürlich -
6:35 - 6:40eine zentrale Autorität das System
zensieren und manipulieren. -
6:40 - 6:44Und eine zentrale Stelle kann angegriffen
werden. Ich denke, wir haben das alle -
6:44 - 6:48in den letzten Jahren beobachten müssen,
wie Paypal sehr einfach willkürlich -
6:48 - 6:53Konten sperrt, und das System zensiert.
So, und deshalb brauchen wir ein -
6:53 - 6:56besseres System, eine bessere
Lösung für das Internetzeitalter. -
6:56 - 6:59Und diese bessere Lösung ist
natürlich die ‚Blockchain‘. -
6:59 - 7:05Die Blockchain bringt einige ganz
unglaubliche Eigenschaften mit sich. -
7:05 - 7:10Die Blockchain braucht keine zentrale
Stelle um den Zustand zu verwalten. -
7:10 - 7:13Die Teilnehmer des Systems müssen sich
gegenseitig nicht vertrauen, sie müssen -
7:13 - 7:16sich gegenseitig nicht kennen. Sie müssen
nicht einmal wissen, wieviele Leute -
7:16 - 7:20denn eigentlich da teilnehmen. Und
trotzdem können die sich alle immer -
7:20 - 7:22auf einen Zustand des Systems einigen.
-
7:22 - 7:28Ich werde das jetzt demonstrieren,
die Regeln, die wir brauchen -
7:28 - 7:32um das zu ermöglichen. Anhand
einer sehr einfachen Blockchain, -
7:32 - 7:37die in diesem ersten Kapitel auch
noch keinen Proof-of-Work hat. Also -
7:37 - 7:39diese erste Blockchain wird noch
angreifbar sein. Und ich werde auch -
7:39 - 7:43zeigen wie es geht. Und erst im nächsten
Kapitel dann werde ich erklären, -
7:43 - 7:47welche Maßnahmen wir ergreifen
müssen, um Angriffe zu verhindern. -
7:47 - 7:52Und das Ganze fängt an mit dem Netzwerk
welches wir nutzen. Also wir sagen quasi, -
7:52 - 7:55wir sind alle diese Leute, und wir würden
gerne miteinander Transaktionen machen -
7:55 - 8:00können. Und zuerst einigen wir uns
alle auf einen Ursprungszustand. -
8:00 - 8:03Damit fangen wir an. Wir sagen z.B.
„am Anfang gehört allen nichts“. -
8:03 - 8:08Das ist ein leerer Zustand. Und dann
brauchen wir ein p2p-Netzwerk. -
8:08 - 8:14Und jedesmal wenn jemand Geld überweist
an jemand anderes, dann veröffentlicht er -
8:14 - 8:17die Transaktion in diesem Netzwerk,
und das Netzwerk leitet die Transaktion -
8:17 - 8:22solange an alle Teilnehmer weiter,
bis alle Teilnehmer diese Transaktion -
8:22 - 8:27gesehen haben. Das bringt
natürlich viele Probleme mit sich. -
8:27 - 8:31Das Netzwerk ist irgendwie nicht
synchronisiert, nicht alle Leute -
8:31 - 8:35sehen die gleichen Transaktionen, die
Reihenfolge der Transaktionen ist unklar. -
8:35 - 8:39Leute werden versuchen das anzugreifen
– das wird dazu führen, dass es -
8:39 - 8:42Transaktionen gibt die nicht miteinander
kompatibel sind. Und irgendwie -
8:42 - 8:45Transaktionen, die abhängen von
nicht-kompatiblen Transaktionen und -
8:45 - 8:49dann auch wieder nicht kompatibel sind.
Das ist ein riesengroßes Durcheinander da. -
8:49 - 8:52Und deshalb brauchen wir jetzt
eine Möglichkeit, wie wir uns alle -
8:52 - 8:57auf einen Zustand, auf einen Konsens
einigen können. Und – wie gesagt – -
8:57 - 9:00das ist jetzt die ‚Blockchain‘.
-
9:00 - 9:05Und wir definieren einige Regeln,
die wir anwenden um uns zu einigen. -
9:05 - 9:08Wir sagen, wir gruppieren die Transaktionen
die vorher so lose auf dem Netzwerk waren -
9:08 - 9:13zu Blöcken. Die Blöcke hängen alle
voneinander ab. Wir sagen dann auch, -
9:13 - 9:18der aktuelle Zustand des Netzwerks ist das
Ende der längsten Kette zusammenhängender -
9:18 - 9:23Blöcke. Und die Blöcke müssen einige
Kriterien erfüllen. Ich habe das da… -
9:23 - 9:27also das ist jetzt quasi der Ur… der
leere Zustand, mit dem wir beginnen. -
9:27 - 9:32Und da kommen da Transaktionen
über das Netzwerk. Und irgendwann -
9:32 - 9:36macht jemand einen Block der diese
Transaktionen zusammenfasst. Und jetzt -
9:36 - 9:40sehen wir am Ende dieses Blocks ist
der Zustand. Wenn ich diesen Zustand -
9:40 - 9:43nachvollziehen will dann nehme ich den
leeren Ursprungszustand, und dann -
9:43 - 9:47jede Transaktion aus dem ersten Block,
und dann wende ich diese Transaktionen, -
9:47 - 9:51eine nach der anderen, auf den Zustand
an, und dann erhalte ich den Endzustand. -
9:51 - 9:55Mit der Zeit kommen
neue Transaktionen rein -
9:55 - 10:00über das Netzwerk. Und diese Transaktionen
werden nicht Teil des Zustands -
10:00 - 10:03– wir haben ja gesagt der Zustand ist das
Ende der längsten Kette von Blöcken, -
10:03 - 10:06und die sind in keinem Block. Erst wenn
jemand einen Block daraus macht, -
10:06 - 10:10werden die Teil des Zustands.
Wir sehen auch, die Blöcke hängen jeweils -
10:10 - 10:14voneinander ab, die haben so einen Pfeil,
der sie miteinander verbindet, also -
10:14 - 10:19jeder Block zeigt auf den vorhergehenden
Block, und bildet so eben diese Kette -
10:19 - 10:24von Blöcken. Nun, jetzt versucht trotzdem
jemand da eine bösartige Transaktion -
10:24 - 10:28zu machen, die mit den anderen nicht
kompatibel ist. Da macht jemand -
10:28 - 10:32einen Block daraus. Und jetzt sagen
wir aber einfach, Blöcke, die -
10:32 - 10:35Transaktionen enthalten welche sich
widersprechen sind nicht valide. -
10:35 - 10:38Der Block, den kann zwar jemand
erstellen, aber wir sagen dann, das ist -
10:38 - 10:42kein valider Block, der wird vom Netzwerk
nicht akzeptiert. Und der wird auch -
10:42 - 10:48nicht Teil des Zustands. Also wenn jemand
einen Block bauen will und eine dieser -
10:48 - 10:53Transaktionen enthält, dann muss sich
derjenige der den Block erstellt -
10:53 - 10:56entscheiden welche der Transaktionen
denn jetzt enthalten sein sollen -
10:56 - 11:00in dem Block. Und die anderen lässt er
außen vor. Für welche er sich entscheidet, -
11:00 - 11:05das ist dem Typen ganz allein überlassen.
Er kann das selber entscheiden was er da -
11:05 - 11:10reinpacken will. Dann kommen mit
der Zeit neue Transaktionen rein. -
11:10 - 11:14Und jetzt könnte es sein, dass jemand so
einen Block Nummer 4 macht, welcher -
11:14 - 11:19jetzt trotzdem wieder die böse Transaktion
enthält. Und dann sagen wir aber einfach, -
11:19 - 11:22Blöcke welche Transaktionen enthalten,
welche nicht kompatibel sind -
11:22 - 11:25mit Transaktionen in älteren Blöcken sind
auch ungültig, und der Block wird auch -
11:25 - 11:30nicht Teil des Zustands. So. Was aber
gültig ist, ist jemand der einen Block -
11:30 - 11:34Nummer 3 macht, der so aussieht. Und jetzt
haben wir das Problem: wir haben gesagt, -
11:34 - 11:37der Zustand ist die längste Kette von
Blöcken. Hier ist jetzt der Zustand -
11:37 - 11:40nicht mehr eindeutig definiert und da muss
jetzt halt jeder Teilnehmer des Netzwerkes -
11:40 - 11:44selbst entscheiden wie er damit umgeht,
was er jetzt als Zustand anerkennt. -
11:44 - 11:49So, aber dann kommen halt neue
Transaktionen wieder rein. Und irgendwann -
11:49 - 11:53baut jemand einen Block Nummer 4, der
diese Transaktion enthält. Und dadurch, -
11:53 - 11:58dass der Block Nr. 4 auf den vorherigen
Block Nr. 3 verweist, ist es jetzt klar, -
11:58 - 12:02von welchem Block der abhängt.
Und damit ist die Kette auch wieder klar, -
12:02 - 12:06und die längste Kette wird wieder zum
Zustand. So. Jetzt habe ich gesagt, -
12:06 - 12:10diese Blockchain die ich jetzt beschrieben
habe hat keinen Proof-of-Work und folglich -
12:10 - 12:15ist sie angreifbar für ein double-spend.
Sagen wir Malroy würde gerne -
12:15 - 12:19ein Fahrrad klauen. Er geht da so in den
Fahrradladen von Alice, und möchte dort -
12:19 - 12:23gerne ein Fahrrad kaufen, das kostet
jetzt 1000 Euro in dem Beispiel. -
12:23 - 12:27Ich werde jetzt… hier habe ich
die Darstellung etwas geändert, -
12:27 - 12:30diese Vierecke mit Pfeilen dran, das sind
jetzt halt einfach Blöcke. Ich werde -
12:30 - 12:35nicht mehr jede Transaktion einzeln
zeichnen. Und die sehen den Zustand, -
12:35 - 12:39wie er da ist. Da sind all die Konten
aufgeführt, unter anderem diejenigen -
12:39 - 12:44von Alice und Malroy. So.
Malroy geht also in den Laden, -
12:44 - 12:51sucht sich das [Fahrrad] aus, geht zum
Tresen und macht dort die Transaktion -
12:51 - 12:57an Alice. Und diese Transaktion wird
übers Netzwerk zu Alice weitergeleitet. -
12:57 - 13:00Sie sieht die Transaktion, aber da sie
noch nicht Teil eines Blockes ist, -
13:00 - 13:04ist sie auch noch nicht Teil des Zustands.
Irgendwann aber erstellt jemand halt -
13:04 - 13:08einen Block der diese Transaktion enthält.
Die ist jetzt Teil des Zustandes. -
13:08 - 13:13Wir sehen im Zustand des Systems,
dass Alice das Geld erhalten hat. -
13:13 - 13:17Sie gibt das Fahrrad an Malroy, und der
fährt davon. Neue Blöcke kommen dazu. -
13:17 - 13:22Und jetzt startet Malroy den Angriff.
Und was Malroy macht, er erstellt -
13:22 - 13:25eine alternative Transaktion, die dasselbe
Geld überweist, diesmal aber nicht -
13:25 - 13:30an Alice sondern an sich selbst. Genauer:
an ein zweites Konto das ebenfalls ihm -
13:30 - 13:35gehört. Und er erstellt einen alternativen
Block, der diese Transaktion enthält. -
13:35 - 13:41Und dann erstellt er ganz viele neue
Blöcke die davon abhängen. Solange, -
13:41 - 13:45bis seine Kette von Blöcken länger
ist als die anderen, also die Kette, -
13:45 - 13:50die zur Zeit auf dem Netzwerk ist. Und
dann veröffentlicht er die gesamte Kette -
13:50 - 13:54auf dem Netzwerk. Und jetzt ist seine
Kette die längste Kette. Die wird -
13:54 - 13:58vom Netzwerk als Zustand anerkannt. Und
in diesem Zustand hat er das Geld erhalten. -
13:58 - 14:03Alice hat das Geld nicht erhalten. Und
Malroy hat das Fahrrad erfolgreich -
14:03 - 14:06gestohlen. So, das hat also funktioniert.
-
14:06 - 14:10Wir müssen das verhindern. Das
Problem weshalb Malroy diesen Angriff -
14:10 - 14:14machen konnte ist natürlich, dass er in
einer sehr kurzen Folge viele Blöcke -
14:14 - 14:18erstellen konnte. Also das Problem ist
eigentlich, es ist zu einfach neue Blöcke -
14:18 - 14:22zu erstellen. Also machen wir es halt
schwieriger, neue Blöcke zu erstellen. -
14:22 - 14:27Und dazu sagen wir, für jeden Block
der erstellt wird, muss eine Aufgabe -
14:27 - 14:34gelöst werden, eine Challenge.
Und um diese Challenge zu erstellen, -
14:34 - 14:40muss man halt Zeit, und Rechenzeit
aufwenden. Die Lösung für diese Aufgabe -
14:40 - 14:45nennen wir den Proof-of-Work. Und den
Prozess um den Proof-of-Work zu erstellen -
14:45 - 14:50nennen wir das ‚Mining‘. Und dann sagen
wir, zusammen mit jedem neuen Block -
14:50 - 14:54muss der passende Proof-of-Work
veröffentlicht werden. Und nur Blöcke, -
14:54 - 14:58welche einen passenden Proof-of-Work haben
werden vom Netzwerk als Teil des Zustands -
14:58 - 15:03anerkannt. Jetzt funktioniert das
Erstellen neuer Blöcke etwas anders. -
15:03 - 15:07Und zwar ist es jetzt so, dass ein Block
nicht mehr einfach entsteht, sondern -
15:07 - 15:11ein ‚Miner‘ muss daran arbeiten. Jeder
Miner arbeitet natürlich für sich selbst -
15:11 - 15:15daran, einen neuen Block zu erstellen.
Wir sehen hier, der Block an dem der Miner -
15:15 - 15:20arbeitet, ist hier so gestrichelt
markiert. Und dann, wenn der Miner -
15:20 - 15:24daran arbeitet, kommen neue Transaktionen
rein. Und irgendwann gelingt es dem Miner -
15:24 - 15:28den Block fertigzustellen. In dem Moment
veröffentlicht er den Block zusammen mit -
15:28 - 15:32dem Proof-of-Work im Netzwerk. Der wird
vom Netzwerk anerkannt, und der Miner -
15:32 - 15:39beginnt sofort an einem neuen Block zu
arbeiten, und das geht dann halt so weiter. -
15:39 - 15:44Nun, die Funktion die wir brauchen um das
Erstellen der Blöcke schwierig zu machen -
15:44 - 15:49muss einige Bedingungen erfüllen. Sie
muss natürlich schwierig sein zu lösen. -
15:49 - 15:53Dann muss aber… obwohl es lange gehen
muss die zu erstellen, muss es sehr -
15:53 - 15:57einfach sein, das Ergebnis zu prüfen.
Also wenn ich einen Block erhalte, und -
15:57 - 16:00den passenden Proof-of-Work, muss
ich – zack! – sofort sagen können, -
16:00 - 16:03der Proof-of-Work ist gültig oder nicht,
weil ich will ja entscheiden, ob das -
16:03 - 16:05Teil meines Zustandes
sein soll oder nicht. -
16:05 - 16:12Und dann ist es wichtig, dass die
Funktion abhängt von genau dem Block, -
16:12 - 16:15für den sie erstellt wird. Also der
Proof-of-Work soll nur genau -
16:15 - 16:20für den einen Block gültig sein.
Das ist sehr wichtig, denn ansonsten -
16:20 - 16:24könnte Malroy auf Vorrat über
mehrere Wochen hinweg einfach -
16:24 - 16:27Proof-of-Works erstellen und dann die
einfach an einen Block ranflanschen, -
16:27 - 16:32und so in kurzer Zeit trotzdem wieder
eine lange Kette erstellen. Wenn aber -
16:32 - 16:37der Proof-of-Work direkt abhängig ist
vom Block für den er erstellt wird, -
16:37 - 16:40dann muss Malroy mit dem Erstellen
des Proof-of-Work so lange warten, -
16:40 - 16:44bis der vorhergehende Block bekannt
ist und damit auch ihm bekannt ist, -
16:44 - 16:46was er jetzt in den neuen Block packt.
-
16:46 - 16:52Und dann soll es auch noch möglich sein,
die Schwierigkeit der Aufgabe zu variieren. -
16:52 - 16:56Denn damit das System als stabiles
Finanzsystem funktioniert, möchte ich -
16:56 - 16:59gerne wissen, wie lange es geht von
dem Moment wo ich eine Transaktion -
16:59 - 17:04veröffentliche bis sie Teil des Zustandes
wird. Und wenn das Netzwerk -
17:04 - 17:08sehr viel mehr Rechenkraft hat, dann
geht es plötzlich schneller, neue Blöcke -
17:08 - 17:11zu erstellen und dann will ich diese
Schwierigkeit anpassen können, damit es -
17:11 - 17:17wieder länger geht. Nun jetzt, wo
das Mining nicht mehr einfach ist, -
17:17 - 17:20und es aufwendig ist, müssen wir irgendwie
einen Incentive haben, damit die Leute -
17:20 - 17:25es auch tun – also irgendeinen Anstoß.
So und wir sagen halt, der Miner, -
17:25 - 17:29dem es gelingt einen Block zu erstellen,
der bekommt eine Belohnung, -
17:29 - 17:34den sogenannten ‚Block Reward‘, und wir
implementieren das, indem wir sagen, -
17:34 - 17:39der Miner darf für sich selbst eine
zusätzliche Transaktion in den Block -
17:39 - 17:42hineinpacken, und mit dieser Transaktion
überweist er sich selbst Geld -
17:42 - 17:46aus dem Nichts heraus. Wo das
Geld herkommt: es gibt eigentlich -
17:46 - 17:49zwei Möglichkeiten, die populär sind.
Entweder sagen wir, das sind -
17:49 - 17:53die Überweisungsgebühren der anderen
Transaktionen in dem Block. -
17:53 - 17:58Oder dann sagen wir halt, das ist Geld,
welches neu geschaffen wird. Wir haben ja -
17:58 - 18:02vorhin gesehen, wir haben einen leeren
Zustand als den Ursprungszustand definiert, -
18:02 - 18:06und wenn wir das so tun, muss das
Geld, welches die Leute ausgeben, -
18:06 - 18:11irgendwo herkommen. Und das ist halt eine
Möglichkeit, Geld in das System zu bringen, -
18:11 - 18:15die nicht von einer zentralen Stelle
kontrolliert wird, und eigentlich -
18:15 - 18:21eine faire Möglichkeit.
Etwas weiteres ist, dass… -
18:21 - 18:25diese zusätzliche Transaktion macht
den Block natürlich individuell, denn -
18:25 - 18:30jeder Miner wird das Geld an sich selbst
zu überweisen versuchen und, also, -
18:30 - 18:35diese eine Transaktion wird für jeden
Miner anders sein. Und das stellt sicher, -
18:35 - 18:39dass die alle an einem ein wenig anderen
Problem arbeiten. Wenn die alle -
18:39 - 18:44versuchen würden, das genau selbe Problem
zu lösen, auf die genau selbe Art, -
18:44 - 18:48dann würde es immer demjenigen als erstes
gelingen, der die meiste Rechenkraft hat, -
18:48 - 18:52und das wollen wir nicht, denn dann würde
ja eine Person alle Blöcke erzeugen, -
18:52 - 18:55und wir wollen ja, dass viele Personen
Blöcke erzeugen, damit das niemand -
18:55 - 19:00zensieren kann. Dadurch dass das Problem,
an welchem sie arbeiten, für jeden Miner -
19:00 - 19:03etwas anders ist, gelingt es halt
zwischendurch auch jemandem -
19:03 - 19:08mit weniger Rechenkraft, als erstes eine
Lösung zu finden. Und in der Praxis -
19:08 - 19:12geht das dann ganz gut, dass wir sagen
können, wer 20% der Rechenkraft hat -
19:12 - 19:16dem wird es auch in etwa einem Fünftel
der Fälle gelingen als erstes einen Block -
19:16 - 19:22zu finden. Dann muss der Miner halt
noch entscheiden, an welchem Block -
19:22 - 19:25er arbeiten will. Aber der Miner will ja…
also an welchem Ende der Kette… -
19:25 - 19:29Wir haben vorhin gesehen, es kann sein,
dass diese Ketten mehrere Enden haben. -
19:29 - 19:34Aber das ist ganz einfach, denn der Miner
will ja den Reward kriegen. Der Reward ist -
19:34 - 19:37eine Transaktion, welche nur dann
Teil des Zustandes wird wenn es Teil -
19:37 - 19:41in einem Block ist, wenn es Teil der
längsten Kette ist. Und der Block ist -
19:41 - 19:44nur dann Teil der längsten Kette wenn
er an diesem Ende angesetzt wird. -
19:44 - 19:49Also arbeiten alle Miner am Ende der
längsten Kette. So, jetzt habe ich -
19:49 - 19:53versprochen, dass wir so den Double-Spend
verhindern können, von vorhin. -
19:53 - 19:57Wollen wir mal gucken, ob das geht!
Das Szenario ist wieder dasselbe. -
19:57 - 20:02Malroy will das Fahrrad klauen,
im Laden von Alice. -
20:02 - 20:07Der Unterschied ist, dass das Netzwerk
arbeiten muss um die Blöcke zu erstellen. -
20:07 - 20:13Und dann geht es wieder so vonstatten.
Malroy erstellt jetzt zwei Transaktionen. -
20:13 - 20:17Eine, um das Geld der Alice zu überweisen.
Diese Transaktion macht er öffentlich -
20:17 - 20:21im Netzwerk, damit die von allen gesehen
werden kann. Und eine Transaktion, -
20:21 - 20:25um das Geld an sich selbst zu überweisen.
Die behält er vorläufig geheim. Dann wird -
20:25 - 20:29der vorhergehende Block fertiggestellt,
und sofort fängt das Netzwerk an -
20:29 - 20:34den nächsten Block zu erstellen. Das
Netzwerk enthält in dem Block natürlich -
20:34 - 20:38die Transaktion von Malroy an Alice,
denn das ist ja die einzige Transaktion -
20:38 - 20:42die dem Netzwerk bekannt ist. Und
Malroy arbeitet jetzt ganz alleine daran, -
20:42 - 20:46den alternativen Block zu erstellen. In
dem die andere Transaktion enthalten ist. -
20:46 - 20:52Jetzt ist es aber so: das Netzwerk hat
natürlich mehr Rechenkraft als Malroy -
20:52 - 20:57allein. Der hat halt nicht so viele
Computrr. Und deshalb wird das Netzwerk -
20:57 - 21:01immer schneller sein darin, neue Blöcke
zu erstellen als Malroy. Malroys Kette -
21:01 - 21:06wird nie die längste Kette, wird nie Teil
des Zustands. Und der Angriff wurde -
21:06 - 21:14erfolgreich abgewehrt. Die einzige Art
und Weise wie Malroy gewinnen könnte, -
21:14 - 21:18also wie Malroy den Angriff trotzdem
durchführen könnte, wäre, wenn er -
21:18 - 21:22schneller Blöcke erstellen könnte als
das Netzwerk. Und das wird ihm aber -
21:22 - 21:26nur dann gelingen, wenn er mehr als
50% der Rechenkraft im Netzwerk hätte. -
21:26 - 21:29Denn dann wäre die Wahrscheinlichkeit,
dass er einen Block findet, höher -
21:29 - 21:34als bei allen anderen Minern gemeinsam.
Und dann könnte er das tun. Und deshalb -
21:34 - 21:39spricht man bei Bitcoin und anderen
Kryptowährungen von diesen 50%-Attacken. -
21:39 - 21:44So, jetzt gibt es noch eine andere Art,
einen Double-Spend auszuführen. Das ist -
21:44 - 21:50ein etwas schwierigerer Angriff.
Und er hat jetzt damit zu tun, wie -
21:50 - 21:53das Peer-to-Peer-Netzwerk funktioniert,
das wir brauchen um die Transaktionen -
21:53 - 22:01und Blöcke zu verteilen. Jetzt ist der
Angriff ein wenig schwieriger, also -
22:01 - 22:05muss Malroy etwas wertvolleres stehlen.
Er geht zu Bob. Bob verkauft Autos. -
22:05 - 22:09Er wird versuchen ein Auto zu stehlen.
Und um das zu tun, wird er versuchen -
22:09 - 22:13die Verbindung von Bob mit dem
Peer-to-Peer-Netzwerk zu kontrollieren. -
22:13 - 22:18Wir sehen hier, Bob ist mit dem Netzwerk
verbunden. Mit diesen drei Peers. Und -
22:18 - 22:22Malroy hat zwei Möglichkeiten: entweder
er kontrolliert die Internetverbindung -
22:22 - 22:27von Bob. Oder dann kontrolliert er
halt die drei Nodes, mit denen Bob -
22:27 - 22:31verbunden ist. Wie realistisch das ist,
das will ich hier nicht diskutieren. -
22:31 - 22:35Grundsätzlich ist es ja schon
vorstellbar. Und jetzt hat Malroy -
22:35 - 22:39einige interessante Möglichkeiten. Er kann
jetzt nämlich kontrollieren, welche Blöcke -
22:39 - 22:43und Transaktionen der Bob sieht.
Also Transaktionen und Blöcke, -
22:43 - 22:48welche auf dem Netzwerk erscheinen,
kann Malroy quasi vor Bob geheimhalten. -
22:48 - 22:52Und er kann Bob auch Transaktionen und
Blöcke präsentieren, die er dem Rest -
22:52 - 22:58des Netzwerkes nicht präsentiert.
So, das ist der Angriff. Wir sehen, -
22:58 - 23:01was das Netzwerk sieht.
Links und rechts, was Bob sieht. -
23:01 - 23:07Am Anfang ist das natürlich an beiden
Orten gleich. Jetzt geht der Malroy -
23:07 - 23:11zu dem Bob und wird das Auto kaufen.
Er macht eine Transaktion. -
23:11 - 23:16Er macht zwei Transaktionen. Eine,
um das Geld an Bob zu überweisen. -
23:16 - 23:19Diese schickt er nur an Bob. Und
versteckt sie vor dem Netzwerk. -
23:19 - 23:24Und eine zweite Transaktion, mit der er
das Geld wieder an sich selbst überweist. -
23:24 - 23:28Diese Transaktion veröffentlicht er im
Netzwerk. Jetzt wird das Netzwerk -
23:28 - 23:34daran arbeiten, einen Block zu erstellen,
mit der Transaktion von Malroy zu Malroy. -
23:34 - 23:39Weil das Netzwerk kennt keine andere
Transaktion. Und Malroy allein arbeitet -
23:39 - 23:42daran einen Block zu erstellen, mit
dem er das Geld an Bob überweist. -
23:42 - 23:48Natürlich wiederum, das Netzwerk hat viel
mehr Rechenkraft, es ist viel schneller -
23:48 - 23:52darin, neue Blöcke zu erstellen. So, und
-
23:52 - 23:56schlussendlich gelingt es dann aber Bob
[Malroy!] trotzdem, einen Block zu erstellen. -
23:56 - 24:00Und alle diese Blöcke die auf dem Netzwerk
erstellt wurden – muss man vielleicht -
24:00 - 24:05noch sagen – die hält der Malroy vor Bob
geheim. Also, alle diesen neuen Blöcke, -
24:05 - 24:09die hat Bob nie gesehen. Und deshalb
wird Bob diesen einen Block von Malroy -
24:09 - 24:13als die längste Kette von Blöcken
akzeptieren. Und jetzt ist die Transaktion -
24:13 - 24:18von Malroy an Bob Teil von Bobs
Zustand. Er gibt Malroy das Auto. -
24:18 - 24:25Malroy fährt davon. Er beendet die
Attacke. Und jetzt verbindet sich Bob -
24:25 - 24:29wieder ganz normal mit dem Netzwerk.
Die beiden Ketten werden synchronisiert. -
24:29 - 24:34Und wir sehen, in der schlussendlich
resultierenden Kette hat Bob das Geld -
24:34 - 24:38nicht erhalten. Malroy hat also das
Auto erfolgreich stehlen können. -
24:38 - 24:46Das ist gar nicht gut. Jetzt hat ja dieser
Angriff funktioniert. Oder hat er das -
24:46 - 24:53denn wirklich? Denn diesmal war der
Angriff erfolgreich. Aber Malroy musste -
24:53 - 24:57jetzt dafür arbeiten. Er musste diesen
einen Block erstellen. Und das hat ihn -
24:57 - 25:00viel Zeit gekostet. Natürlich kostet
es ihn auch irgendwie Rechenkraft, -
25:00 - 25:03und den Strom den er braucht um seinen
Computer zu betreiben. Das wollen wir -
25:03 - 25:07jetzt aber gar nicht mit einbeziehen.
Sondern wir schauen jetzt nach diesen -
25:07 - 25:12Dings die (?) Zeit gekostet. Denn der Malroy
hat ja einen Computer, den er braucht, -
25:12 - 25:16um die Blöcke zu erstellen. Und dieser
Computer kann immer nur eines auf’s Mal -
25:16 - 25:20tun. Entweder erstellt er jetzt diesen
Fake-Block für Bob, oder er erstellt -
25:20 - 25:26richtige Blöcke auf die richtige Chain.
Er kann nicht beides auf’s Mal tun. -
25:26 - 25:29So, und das macht es sehr, sehr
teuer diesen Angriff durchzuführen. -
25:29 - 25:35Stellen wir uns vor… (?)(?)(?)(?)(?)(?)
(?)(?) welche Annahmewerte für unser -
25:35 - 25:40Netzwerk… die sind da halt in jeder
Kryptowährung etwas anders definiert. -
25:40 - 25:45Sagen wir, unser Netzwerk erzeugt einen
Block alle zehn Minuten. Der Block Reward, -
25:45 - 25:50welchen der Miner kriegt ist 1000 Euro.
Und Malroy hätte jetzt 20% der Rechenkraft -
25:50 - 25:55des Netzwerkes. Wenn wir sagen 100% der
Rechenkraft erzeugt alle zehn Minuten. -
25:55 - 26:00einen Block, dann erzeugt Malroy auf
sich alleine gestellt nur alle 50 Minuten -
26:00 - 26:06einen Block. D.h. der Angriff auf Bob
dauert 50 Minuten. Nun, wenn aber Malroy -
26:06 - 26:1250 Minuten lang minen würde, anstatt Bob
anzugreifen, dann würde er in dieser Zeit -
26:12 - 26:16durchschnittlich 1000 Euro verdienen.
Er kann sich jetzt also entscheiden, -
26:16 - 26:23entweder greift er Bob an und stiehlt das
23.000 Euro teure Auto, oder er verdient -
26:23 - 26:27mit fairem Mining 1000 Euro.
Natürlich wird er dieses Auto immer noch -
26:27 - 26:31stehlen wollen. Der Mechanismus, um
das zu verhindern ist aber ganz einfach. -
26:31 - 26:36Wir sagen jetzt, Bob gibt dem
Malroy das Auto nicht, sobald Bob -
26:36 - 26:40das Geld erhalten hat, sondern er
wartet dann noch einige Blöcke. -
26:40 - 26:44Das sieht dann in etwa so aus. Ich habe
jetzt nicht genügend Blöcke gemalt, -
26:44 - 26:49weil die da nicht Platz hatten.
Also sagen wir halt, wir sehen -
26:49 - 26:55auf der rechten Seite, wo die
Transaktion Teil des Zustandes wird. -
26:55 - 27:00Und in diesem Moment gibt halt der
Bob das Auto noch nicht an Malroy, -
27:00 - 27:05sondern erst einige Blöcke später. Und
für jeden zusätzlichen Block, den Malroy -
27:05 - 27:08erstellen muss, um Bob davon zu
überzeugen, dass das jetzt wirklich -
27:08 - 27:12die richtige Kette ist, muss Malroy
weitere 50 Minuten aufwenden, -
27:12 - 27:18und das kostet ihn jedesmal 1000 Euro.
Wenn also Bob sagt: „Ich warte 24 Blöcke -
27:18 - 27:23bevor ich dem Malroy das Auto gebe“. Dann
ist der Angriff für Malroy plötzlich teurer -
27:23 - 27:27als das Auto einen Wert hat. Und dadurch
kann Bob den Angriff verhindern. -
27:27 - 27:31Malroy kann den zwar immer noch
durchführen, aber es ist schlicht einfach -
27:31 - 27:36nicht interessant für Malroy das zu tun,
weil er mehr Geld macht wenn er -
27:36 - 27:45in der selben Zeit minet. So. Jetzt haben
wir viel gesprochen über generische -
27:45 - 27:49Konzepte von Blockchains. Jetzt will
ich noch etwas dazu sagen, wie das -
27:49 - 27:54in Bitcoin implementiert wird. Zumindest
einige der Dinge. Schauen wir uns zuerst -
27:54 - 27:58die Blöcke an. Und wir wissen ja, in der
Informatik mögen wir es, Bodys und Header -
27:58 - 28:03zu definieren. Das tun wir überall,
irgendwie, in unseren Netzwerkprotokollen; -
28:03 - 28:08in Nachrichten und Dateiformaten
sagen wir, der Body enthält den Inhalt, -
28:08 - 28:12die eigentlichen Daten. Und der Header
enthält die Metadaten. Und genau dasselbe -
28:12 - 28:17tun wir auch in unseren Blockchains. In
Bitcoin ist es so, der Body eines Blockes -
28:17 - 28:22enthält alle Transaktionen. Die sind dort
geordnet aufgeführt. Der Miner muss -
28:22 - 28:29einige Regeln einhalten, wenn er das
macht. Z.B. wenn Transaktion B -
28:29 - 28:32von Transaktion A abhängt, die beide
im selben Block sind, müssen die -
28:32 - 28:36in der richtigen Reihenfolge drin sein.
Aber sonst kann der die irgendwie -
28:36 - 28:40dort einpacken. Aber sobald er das mal
gemacht hat, ist dann… diese Reihenfolge -
28:40 - 28:45ist anschließend wichtig. Und die erste
Transaktion im Block ist (?)(?) -
28:45 - 28:48die coin-based-Transaktion,
mit der sich der Miner -
28:48 - 28:50den Block Reward überweist.
-
28:50 - 28:59Um jetzt diesen Body zu verbinden mit dem
Header nutzt Bitcoin einen Merkle Tree. -
28:59 - 29:01Das ist ein binärer Baum,
-
29:01 - 29:08bei dem jeweils… der Node ist der
hash der konkatenierten Werte -
29:08 - 29:11der Children des Nodes.
-
29:11 - 29:15Und Bitcoin verwendet fast überall…
wo Bitcoin Hashes macht, -
29:15 - 29:18wenden sie einen – dhash nennen sie das,
-
29:18 - 29:23das ist ein double-sha256-Hash, also
so nennt sich der Hash eines Hashes -
29:23 - 29:27eines Wertes, den sie nehmen. Das
sieht dann so aus: wir haben unseren Body -
29:27 - 29:31des Blocks. Dann erstellen wir für
jede Transaktion den double-hash. -
29:31 - 29:35Und dann beginnen wir damit, den Tree
zu erstellen. Also auf jeden Node, -
29:35 - 29:41für jeden blauen Node konkatenieren wir
die beiden grünen Nodes, und machen dann -
29:41 - 29:45den Hash davon. Das machen wir für
jede Ebene, bis wir schlussendlich -
29:45 - 29:49beim Merkle Root angelangen, und der
wird dann Teil des Block Headers. -
29:49 - 29:54Und der Block Header enthält diese Dinge:
die Version – das ist irgendwie -
29:54 - 29:59eine arbitrary Nummer, die von den
Entwicklern von Zeit zu Zeit geändert wird, -
29:59 - 30:02wenn sie irgendwie finden,
dass wird jetzt Zeit dafür. -
30:02 - 30:06Dann den Previous Block Hash. Wir haben
gesehen, die Blöcke verweisen jeweils -
30:06 - 30:10auf den vorhergehenden Block. Das ist
in Bitcoin so gelöst, dass der Header -
30:10 - 30:15eines Blocks den Hash des vorhergehenden
Blocks enthält. Also auch hier wieder -
30:15 - 30:19den double-hash. Den Merkle Root haben
wir bereits gesehen. Dann enthält -
30:19 - 30:22der Block-Header noch einen Time Stamp.
Das sind ziemlich komplizierte Regeln, -
30:22 - 30:28wonach dieser Time Stamp gebildet
wird, aber das ist egal. Das ist -
30:28 - 30:32nicht so wichtig. Die ‚Difficulty‘ ist ein
Ausdruck dafür wie schwierig es war -
30:32 - 30:36den Proof-of-Work für diesen bestimmten
Block zu definieren. Und die ‚Nonce‘ -
30:36 - 30:40ist ein Wert der gebraucht wird zum Minen.
-
30:40 - 30:48Ja und der Proof-of-Work in Bitcoin ist
nichts anderes als der Hash des Blocks. -
30:48 - 30:53Und der muss dann eine Bedingung
erfüllen. Und zwar muss dieser Hash -
30:53 - 30:59mit einer gewissen Anzahl Nullen beginnen.
Also ich nehme den Header des Blocks -
30:59 - 31:04und bilde den double-hash davon.
Und dann müssen die ersten paar Bits -
31:04 - 31:09von diesem Hash müssen Null sein. Und
wieviele Bits das sind, das ist dann eben -
31:09 - 31:13die variable Schwierigkeit. Also wenn
ich mehr Nullen haben muss zu Beginn -
31:13 - 31:18dann ist es schwieriger den Proof-of-Work
zu erstellen. Und bei weniger -
31:18 - 31:22natürlich einfacher. Das Mining
funktioniert dann so dass… der Miner -
31:22 - 31:26nimmt einfach mal diesen Header,
und bildet den double-hash davon. -
31:26 - 31:30Dann prüft er ob der jetzt diese Bedingung
erfüllt. Das wird er vermutlich nicht tun. -
31:30 - 31:34Und dann inkrementiert er halt die nonce,
dadurch hat sich der Header verändert, -
31:34 - 31:39er bildet wieder den hash davon, und prüft
das. Und so macht er immer weiterrr. -
31:39 - 31:46Es ist aber so, diese nonce ist lediglich
32 bit lang, und der Hash mit 256 bit -
31:46 - 31:50ist wesentlich größer. Es kann also gut
sein, dass einfach durch das Inkrementieren -
31:50 - 31:56der Nonce kein passender Proof-of-Work
gefunden wird. Und in dem Fall wird -
31:56 - 32:02der Miner die coin-based Transaktion
verändern. Und zwar hat diese coin-based -
32:02 - 32:05Transaktion hat den Transaction Input,
der wird bei einer normalen Transaktion -
32:05 - 32:09dafür gebraucht zu beschreiben, woher
das Geld kommt in dieser Transaktion. -
32:09 - 32:14Das hat die coin-based nicht, denn die
macht ja quasi Geld aus dem Nichts heraus, -
32:14 - 32:18und den Wert in diesem Fall kann
dann der Miner frei beeinflussen. -
32:18 - 32:22Dadurch ändert sich der Hash dieser
Transaktion, und das setzt sich dann -
32:22 - 32:28durch den Merkle Tree hindurch fort bis
es quasi auch den Merkle Root verändert. -
32:28 - 32:33Und dadurch ist der ganze Blockheader
wieder verändert und der Miner -
32:33 - 32:38kann weiterarbeiten. So, das lässt sich ja
dann auch sehr einfach prüfen, ob das jetzt -
32:38 - 32:42ein korrekter Proof-of-Work ist. Ich nehme
einfach diesen Blockheader und bilde -
32:42 - 32:44den Hash und schaue ob das so stimmt.
-
32:44 - 32:53Das Bitcoin-Netzwerk versucht alle zehn
Minuten einen neuen Block zu erstellen. -
32:53 - 32:58Um diese Zeit stabil zu halten,
wird die Schwierigkeit im Netzwerk -
32:58 - 33:03alle 14 Tage, also alle 2016 Blöcke,
angepasst, mit einem Algorithmus -
33:03 - 33:07wo jeder Miner feststellen kann wie weit
muss ich jetzt die Schwierigkeit verändern. -
33:07 - 33:14Die coin-based Transaktion, mit der
sich der Miner Geld überweist, -
33:14 - 33:18enthält in Bitcoin zwei Dinge:
einerseits die Transaction Fees, also -
33:18 - 33:25die Transaktionsgebühren der Transaktion
in den Block; und anderseits auch noch -
33:25 - 33:30neue Bitcoin, die neu ins System kommen.
Das waren ursprünglich 50 Bitcoin pro Block, -
33:30 - 33:34heute sind es noch 12,5, der
Wert halbiert sich alle vier Jahre. -
33:34 - 33:39Das war das letzte Mal in diesem Sommer,
da hat sich der Wert halbiert. Seither -
33:39 - 33:45gibt es nur noch 12,5 Bitcoin
für einen neuen Block. -
33:45 - 33:52Jetzt wollen wir noch uns anschauen
wie wir ‚Light Clients‘ bauen können. -
33:52 - 33:57Bitcoin kennt eigentlich mehrere Ränge (?),
drei Arten von Clients: ein ‚Full Node‘ -
33:57 - 34:00ist ein Client, welcher die
gesamte Blockchain speichert. -
34:00 - 34:07Der überprüft jede eingehende
Transaktion, jeden eingehenden Block -
34:07 - 34:11überprüft dieser Client, ob der auch
wirklich valide ist. Und er tut noch -
34:11 - 34:14etwas anderes, nämlich er seeded diese
Blöcke die er hat an das Netzwerk. -
34:14 - 34:18Also wenn jemand kommt und sagt:
„Ich hätte gern einen Block“ dann gibt -
34:18 - 34:22der Full Node diesen Block raus. Dann gibt
es ‚Pruning Clients‘. Der macht eigentlich -
34:22 - 34:28das genau selbe wie der Full Node.
Also der überprüft auch alle Transaktionen -
34:28 - 34:33und alle Blöcke. Aber der speichert jetzt
halt nicht die ganze Blockchain, sondern -
34:33 - 34:36wenn er findet „den Block brauche ich
nicht mehr“, dann löscht er den. -
34:36 - 34:39Und das macht dem Client Speicherplatz.
Der braucht aber immer noch -
34:39 - 34:44sehr viel Rechenkraft und sehr viel
Bandbreite, deutlich zuviel als dass ich -
34:44 - 34:48das auf meinem Smartphone laufen lassen
möchte. Und deshalb gibt es noch -
34:48 - 34:54die Light Clients oder SPV Clients.
Die dann auch geeignet sind, -
34:54 - 34:57um [sie] auf einem mobilen Gerät laufen
zu lassen. Und wie die funktionieren, -
34:57 - 34:59werde ich jetzt noch besprechen.
-
34:59 - 35:06Ein Light Client oder ein SPV Client,
was der tut zuerst ist, er lädt -
35:06 - 35:09die Header aller Blöcke herunter. Wir
haben ja gesehen, der Proof-of-Work -
35:09 - 35:15ist der Hash des Block Headers. D.h.
um den Proof-of-Work zu kontrollieren -
35:15 - 35:18brauche ich nicht den gesamten
Block, der Block Header genügt. -
35:18 - 35:22Und dasselbe gilt auch für die
Verknüpfung der Blöcke untereinander. -
35:22 - 35:26Welches der vorhergehende Block
ist, das steht ja auch im Header. -
35:26 - 35:31D.h. auch für diese Funktion brauche ich
nicht die ganzen Blöcke herunterzuladen. -
35:31 - 35:35Und so kann ich korrekt
die längste Kette erstellen, -
35:35 - 35:40innerhalb des Netzwerks, indem
ich nur die Header herunterlade. -
35:40 - 35:46Und der Gewinn dabei ist natürlich enorm.
Zur Zeit gibt es etwa 450.000 Blöcke. -
35:46 - 35:51Die brauchen mehr als 95 GB Speicherplatz.
Wenn man dann noch Tags Index (?) aktiviert -
35:51 - 35:55sind es, glaube ich, so um die
110 GB Speicherplatz, die es braucht. -
35:55 - 36:00Das ist natürlich blödsinnig viel auf einem
Smartphone. Aber nur die Block Headers, -
36:00 - 36:04alle Block Headers von diesen
450.000 Blöcken, die passen -
36:04 - 36:10in deutlich weniger als 100 MB rein. Und
das ist dann durchaus ein realistischer Wert, -
36:10 - 36:15dass ich das auf einem Smartphone habe.
Das zweite Konzept ist der Merkle Branch, -
36:15 - 36:19und das ist dann eigentlich noch fast
die interessantere Funktion, die uns -
36:19 - 36:23der Merkle Tree bildet. Und damit kann
jeder beweisen, dass eine Transaktion -
36:23 - 36:25tatsächlich Teil des Zustands ist.
-
36:25 - 36:31Nun, die eine Möglichkeit, wie wir den
Merkle Tree nachbauen können, -
36:31 - 36:35ist natürlich, indem wir den Block
Body herunterladen, und dann -
36:35 - 36:40den ganzen Merkle Tree bauen.
Wenn ich jetzt aber nur beweisen will -
36:40 - 36:44dass eine Transaktion Teil des Blockes
ist, gibt es eine effizientere Möglichkeit. -
36:44 - 36:48Angenommen ich will jetzt beweisen,
dass die Transaktion (3) tatsächlich -
36:48 - 36:52Teil des Blocks ist. Dann brauche ich
nicht alle Transaktionen herunterzuladen, -
36:52 - 36:58sondern es reicht diese Transaktion (3)
herunterzuladen. – Ui, das war falsch. – -
36:58 - 37:01Und dann die restlichen Hashes,
also von jeder Ebene des Baums -
37:01 - 37:04lade ich einen Hash herunter.
Und damit kann ich jetzt -
37:04 - 37:11den Merkle Root Node wieder nachbilden,
und so feststellen, dass diese Transaktion -
37:11 - 37:15tatsächlich Teil des Blocks ist.
Das ist genau das was… -
37:15 - 37:19das hat jetzt natürlich auch einige
Vorteile. Ich brauche jetzt -
37:19 - 37:24weniger Elemente herunterzuladen, und
ich kann halt Hashes herunterladen, also -
37:24 - 37:27anstatt Transaktionen. Vorhin in dem
Beispiel hat das nicht soviel gebracht. -
37:27 - 37:30Aber wenn wir einen Block nehmen
mit 1600 Transaktionen, das ist -
37:30 - 37:35dieser Tage durchaus ein üblicher Block,
dann brauche ich jetzt zum Validieren -
37:35 - 37:39nicht mehr 1600 Transaktionen
herunterzuladen, sondern es genügt -
37:39 - 37:42eine Transaktion herunterzuladen und
dann elf Hashes, und damit kann ich -
37:42 - 37:45den Merkle Branch nachbauen.
-
37:45 - 37:53Und so funktioniert ein SPV Client. SPV
steht für ‚simple payment verification‘. -
37:53 - 37:57Und das hat eigentlich… das wurde schon
im White Paper zu Bitcoin beschrieben, -
37:57 - 38:01wie das funktioniert. Alles was der
tun muss, um zu beweisen, dass -
38:01 - 38:05eine Transaktion reingekommen ist, ist,
er lädt zuerst alle Block Header herunter, -
38:05 - 38:10wie vorhin besprochen, er bildet
den längsten Branch daraus, -
38:10 - 38:14dann lädt er eine Transaktion herunter.
Und wenn ich jetzt wissen will… -
38:14 - 38:18wenn ich von jemandem Geld erhalte und
ich will jetzt zeigen, ich habe das Geld -
38:18 - 38:23tatsächlich erhalten, lade ich halt diese
Transaktion herunter, und dann lade ich -
38:23 - 38:27den passenden Merkle Branch herunter.
Und jetzt kann ich quasi zeigen, dass -
38:27 - 38:32dieser Merkle Branch tatsächlich mit der
längsten Kette von Blöcken verbunden ist. -
38:32 - 38:37Und so habe ich jetzt den Beweis dafür,
dass ich das Geld tatsächlich erhalten habe. -
38:37 - 38:41So, das ist diese Funktionsweise.
Jetzt haben wir noch etwas mehr Zeit, -
38:41 - 38:44als ich gehofft hatte. Ich werde jetzt
noch versuchen, die Pruning Clients -
38:44 - 38:49zu erklären. Das hängt dann damit zusammen
wie eigentlich Bitcoin-Transaktionen -
38:49 - 38:54funktionieren. Nun, wir sind es ja
gewohnt, dass wir irgendwie auf der Bank -
38:54 - 38:58ein Konto haben. Und das Konto
hat einen Besitzer. Hoffentlich mich! -
38:58 - 39:03Und es hat einen Geldbetrag. Und jedesmal,
wenn ich eine Transaktion durchführe, -
39:03 - 39:07verändert sich der Geldbetrag. Also ich
überweisen jemandem Geld, und dann -
39:07 - 39:12verändert sich halt der Betrag auf meinem
Konto. In Bitcoin funktioniert das -
39:12 - 39:16wesentlich anders, dort besitze ich
nicht ein Konto, sondern ich besitze -
39:16 - 39:20sogenannte ‚Unspent Transaction Outputs‘.
Und wir sehen jetzt hier, sagen wir Alice -
39:20 - 39:24hat diese fünf Unspent Transaction
Outputs, die haben (?)(?) einen Besitzer, -
39:24 - 39:29nämlich Alice. Und jeweils einen Betrag
der dort verfügbar ist. Und der Betrag -
39:29 - 39:34kann nicht geändert werden. Das ist fest.
Und nehmen wir jetzt an, Alice würde gerne -
39:34 - 39:39eine Transaktion machen, an Bob,
die würde ihm gerne 42 Bitcoin überweisen. -
39:39 - 39:42Dann erstellt sie eine Transaktion, und
sagt, das Geld dieser Transaktion, -
39:42 - 39:4842 Bitcoin, sollen an Bob gehen. Und jetzt
muss sie das Geld irgendwoher haben. -
39:48 - 39:53Und dann sagt sie halt, ich gebe
diese drei Transaction Outputs aus. -
39:53 - 39:57Und das Interessante an Transaction
Outputs… wie gesagt, den Betrag -
39:57 - 40:01kann man nicht verändern, sondern
Alice muss die alle komplett ausgeben. -
40:01 - 40:06Jetzt sind aber diese Transaction Outputs
zusammengenommen 44 Bitcoin, -
40:06 - 40:12und nicht 42 Bitcoins. D.h. diese
Transaktion gibt jetzt zuviel Geld aus, -
40:12 - 40:17also sie gibt mehr Transaction Outputs aus
als sie dann schlussendlich Geld dem Bob -
40:17 - 40:21überweist. Und was kann jetzt Alice
tun? Was sie tut, ist, sie macht -
40:21 - 40:27einen zweiten Output in ihrer Transaktion.
Und hier überweist sie jetzt Geld an Alice. -
40:27 - 40:32D.h. eine Transaktion in Bitcoin kann
beliebig viele Inputs und beliebig viele -
40:32 - 40:37Outputs haben. Was es hier noch zu
sagen gibt, ist, haben wir immer noch -
40:37 - 40:41einen Unterschied. Jetzt haben wir 44
Bitcoin, die in die Transaktion reinkommen, -
40:41 - 40:46und nur 43 die rausgehen. Das restliche
Bitcoin, das jetzt hier nicht ausgegeben wird, -
40:46 - 40:51das ist quasi impliziert die Transaction
Fee, welche der Miner erhält, der diese -
40:51 - 40:57Transaktion mint. So eine Transaction Fee
ist implementiert. Jetzt haben wir gesehen, -
40:57 - 41:00Alice hat durch das Erstellen dieser
Transaktion neue Transaction Outputs -
41:00 - 41:06erstellt. Nämlich einen, der jetzt Bob
gehört, und einen der Alice gehört. -
41:06 - 41:09Und jetzt können wir auch nachvollziehen,
diese Transaction Outputs, welche Alice -
41:09 - 41:14ausgegeben hat, die gehören alle irgendwie
zu anderen Transaktionen, welche es vorhin -
41:14 - 41:20gegeben hat. Nun, ein Transaction Output
kann einen von zwei Zuständen haben. -
41:20 - 41:25Er kann ausgegeben sein, oder nicht.
Und natürlich kann man nur die ausgeben, -
41:25 - 41:29die noch nicht ausgegeben sind. Und das
heißt, wenn ich wissen will, wieviel Geld -
41:29 - 41:33Alice gehört, dann suche ich mir alle
Transaction Outputs zusammen, -
41:33 - 41:38die Alice gehören, und addiere die Summe,
und dann weiß ich, Alice gehört „soviel“ Geld. -
41:38 - 41:41Das kann ich für jeden Teilnehmer
des Systems machen, dann weiß ich -
41:41 - 41:47für jeden Teilnehmer, wieviel Geld denn
der Person gehört. Wenn ich jetzt also -
41:47 - 41:51alle Transaction Outputs nehme, die
nicht ausgegeben sind, dann habe ich -
41:51 - 41:57den aktuellen Zustand des Netzwerks. Dann
weiß ich für jeden Teilnehmer, wieviel Geld -
41:57 - 42:05diese Person hat. Und genau diesen
Mechanismus macht sich ein Pruning Client -
42:05 - 42:09zunutze. Der sagt nämlich, eigentlich
brauche ich nicht die ganze Blockchain -
42:09 - 42:13zu speichern, das ist ja blöd, denn wenn
eine neue Transaktion reinkommt, und -
42:13 - 42:17ich wissen will ob die tatsächlich valide
ist, dann muss ich nur prüfen, ob die -
42:17 - 42:22einen Output ausgibt, der noch unspent
ist, denn wenn die Transaktion einen -
42:22 - 42:26Transaction Output ausgibt, der schon
ausgegeben ist, dann ist die natürlich -
42:26 - 42:29nicht valide, man kann ja nicht dasselbe
Geld zweimal ausgeben. Oder wenn -
42:29 - 42:32die Transaktion versucht, einen
Transaction Output auszugeben, -
42:32 - 42:35den es gar nicht gibt, dann ist
die natürlich auch nicht valide. -
42:35 - 42:42Was jetzt also ein Pruning Client tut –
und das tut übrigens auch ein Full Node: -
42:42 - 42:47wenn eine neue Transaktion reinkommt,
und da steht in der Transaktion „ich gebe -
42:47 - 42:52diesen Transaction Output aus“, dann
geht der Full Node nicht und versucht, -
42:52 - 42:56die 100 GB große Blockchain zu durchsuchen
nach diesem Transaction Output, das wäre -
42:56 - 43:00ja blödsinnig, sondern der legt sich halt
eine kleine Datenbank an, und dort -
43:00 - 43:04stehen alle Transaction Outputs drin.
Und dann sagt er sich, für jeden… -
43:04 - 43:09also alle Unspent Transaction Outputs
stehen dort drin, und dann sagt sich -
43:09 - 43:12der Client, für jede Transaktion,
die reinkommt und die valide ist, -
43:12 - 43:18entferne ich alle Transaction Outputs die
die Transaktion ausgibt aus der Datenbank, -
43:18 - 43:23und alle neuen Transaction Outputs füge
ich dort ein. Und so behält der Client -
43:23 - 43:29den Zustand. Und der Pruning Client sagt
sich dann halt: „Naja, die Blöcke, die -
43:29 - 43:32brauche ich jetzt ja nicht mehr, weil ich
habe den Zustand in der Datenbank, -
43:32 - 43:35der ist auch viel kleiner als all die
blöden Blöcke, die Blöcke werfe ich fort.“ -
43:35 - 43:39Der muss dann noch etwas vorsichtig sein,
denn wenn jetzt plötzlich von weiter hinten -
43:39 - 43:43eine längere Kette kommt, dann muss er
das ja wieder nachvollziehen können, -
43:43 - 43:48also wird er sich noch einige Blöcke
zusätzlich speichern, als nur den neuesten. -
43:48 - 43:55Aber er kann so sehr viel Speicherplatz
sparen. Er muss aber… trotzdem -
43:55 - 44:00muss ein Pruning Client eigentlich jede
Transaktion, die es jemals gegeben hat, -
44:00 - 44:05herunterladen, und muss dann halt auch
die alle verifizieren. Das braucht auch -
44:05 - 44:08immer noch sehr viel Rechenkraft, und
sehr viel Bandbreite. Und deshalb sind -
44:08 - 44:11solche Clients nicht geeignet
für Mobilgeräte. -
44:11 - 44:21Und was man hier vielleicht noch sagen
kann, ich habe jetzt eigentlich irgendwie -
44:21 - 44:23gesagt, …
-
44:23 - 44:31…ich habe jetzt gesagt, Alice gibt einen
Transaction Output aus. Das ist… -
44:31 - 44:35In Wirklichkeit ist es in Bitcoin
recht kompliziert implementiert. -
44:35 - 44:39Das funktioniert nämlich so, dass der
Transaction Output hat ein Stück Code -
44:39 - 44:44drin. Dafür gibt es in Bitcoin eine eigene
Assemblersprache, die das betreibt. -
44:44 - 44:51Und der Input muss jetzt ebenfalls ein
Stück Code enthalten. Und wenn die dann -
44:51 - 44:56nacheinander ausgeführt werden, muss das
dann „plus den Wert two ergeben“,(?) -
44:56 - 45:00und nur in dem Fall wurde der Output
richtig ausgegeben. Und das ist -
45:00 - 45:04ein ziemlich kompliziertes System, wie das
wirklich funktioniert. Das ist dann halt -
45:04 - 45:07eine eigene Programmiersprache, die ist
zwar nicht Turing-vollständig, aber damit -
45:07 - 45:13lassen sich dann alle möglichen lustigen
Regeln implementieren. Die häufigste Regel -
45:13 - 45:20die man findet, in über 80%
der Fälle, sind sogenannte… -
45:20 - 45:29…die Regel sagt dann irgendsowas wie:
„Um diesen Output ausgeben zu können, -
45:29 - 45:33musst du beweisen, dass du den geheimen
Schlüssel besitzt zu dem öffentlichen -
45:33 - 45:38Schlüssel, dessen Hash ich jetzt hier
reinpacke.“ Und in dem Input steht dann -
45:38 - 45:43halt: „Ja, ich besitze diesen geheimen
Schlüssel, und ich beweise dir das, -
45:43 - 45:48indem ich hier den öffentlichen Schlüssel
reinpacke und die Transaktion mit dem -
45:48 - 45:53geheimen Schlüssel signiere.“ Und dann
kann jemand, der das verifizieren will, -
45:53 - 45:57kann einfach den öffentlichen Schlüssel
nehmen, schauen ob das dem Hash entspricht, -
45:57 - 46:03und dann mit dem öffentlichen Schlüssel
die Signatur der Transaktion verifizieren. -
46:03 - 46:10Das ist die mit Abstand häufigste Art,
wie diese Transaktionen in Wirklichkeit -
46:10 - 46:15funktionieren. Aber das ist halt dann sehr
kompliziert, und damit könnte man leicht -
46:15 - 46:21einen eigenen Vortrag füllen.
Deshalb werde ich jetzt hier aufhören. -
46:21 - 46:24Habe ich da diese tolle Seite gebastelt.
-
46:24 - 46:30– Ups, das ist eigentlich zu weit –
-
46:30 - 46:37Finde ich es, oder nicht?
-
46:37 - 46:43Ja, ha, gefunden! Unglaublich.
*Lachen* -
46:43 - 46:49Also wir haben jetzt noch Zeit für Fragen,
wenn ihr noch was wissen wollt. -
46:49 - 46:55Oder ihr könnt mich auch erreichen,
am einfachsten hier über das DECT-Telefon -
46:55 - 47:02in dem Kongress, wenn ihr Fragen habt.
Ihr findet einen Handout der Slides -
47:02 - 47:06auch im Fahrplan. Und ich werde auch
die Folien selbst noch hochladen, -
47:06 - 47:10und den entsprechenden Source Code
zum Erzeugen der Folien werde ich auch -
47:10 - 47:11verlinken.
-
47:11 - 47:13*Beifall*
-
47:13 - 47:17Herald: vimja!!
-
47:17 - 47:22*andauernder Beifall*
-
47:22 - 47:32Es ist noch einiges an Zeit für Fragen;
also wenn ihr Fragen habt, -
47:32 - 47:35dann reiht euch an den Mikrofonen auf.
Eine Sache möchte ich sagen: -
47:35 - 47:40wenn ihr jetzt rausgehen wollt, verlasst
bitte leise den Saal, damit das -
47:40 - 47:44mit den Fragen einigermaßen klappt.
Liebe Tür-Engel, wir lassen im Moment -
47:44 - 47:51noch niemanden rein. Erstmal können Leute
nur rausgehen. Und bitte tut das leise. -
47:51 - 47:53Wir fangen mit dem Signal-Engel an.
-
47:53 - 47:59Signal Angel: Eine Frage aus dem Internet
bezüglich dem Man-in-the-middle -
47:59 - 48:02double-spending-Angriff. Könnte Mallory
nicht diesen Angriff gleichzeitig -
48:02 - 48:08mit derselben Fake-Blockchain gegen zehn
verschiedene Autohändler machen, und -
48:08 - 48:13mit dem gleichen Aufwand zehn Autos klauen?
Damit würde es sich doch wieder lohnen, -
48:13 - 48:17auch wenn man mit dem Gegenwert eines
Autos an Rechenzeit investieren müsste. -
48:17 - 48:23vimja: Das ist eine gute Überlegung die
ich mir so noch auch gar nie gemacht habe. -
48:23 - 48:30Ich müsste darüber mal nachdenken. Ich
nehme aber grundsätzlich an, dass es -
48:30 - 48:36vermutlich funktionieren würde. Der
Aufwand wird dann aber halt sehr viel -
48:36 - 48:41größer, irgendwie um die Netzwerk-Nodes
zu kontrollieren. Grundsätzlich denke ich -
48:41 - 48:45aber, dass es kein… damit das System
wirklich sicher ist, sollte das -
48:45 - 48:52kein Argument sein dürfen. Also ich hätte
jetzt auf Anhieb gesagt, dass es vermutlich -
48:52 - 48:54klappen würde.
-
48:54 - 48:57Herald: Okay, dann machen wir weiter
mit Mikrofon 2, hier vorne, bitte! -
48:57 - 49:03Frage: Ja, hallo. Du hast gesagt, mit
einer 50%-Attack kann man im Prinzip -
49:03 - 49:08die Blockchains hijacken. Wenn man
sich jetzt mal eine hypothetische -
49:08 - 49:11Regierungsorganisation mit sehr, sehr,
sehr viel Rechenpower überlecht, -
49:11 - 49:16mal so ganz in den Raum geraten, gibt’s
Überlegungen, wie wahrscheinlich das ist? -
49:16 - 49:20vimja: Nun, es ist so, mit einfach
herkömmlicher Rechenpower wird das -
49:20 - 49:23kaum möglich sein, also irgendwie
für diese spezielle Aufgabe, -
49:23 - 49:28den Double-SHA256-Hash, hat das Bitcoin-
Netzwerk ein Vielfaches der Rechenkraft, -
49:28 - 49:33die selbst die 500 schnellsten Supercomputer
aufbringen könnten. Es gibt aber eine -
49:33 - 49:37viel einfachere Möglichkeit, unser guter
Freund China, denn die meisten… -
49:37 - 49:40denn heute ist es halt so: eigentlich
möchte man gerne, dass die Miner -
49:40 - 49:44verteilt sind, und jeder ein wenig zuhause
minet. In Praxis ist es aber so, dass -
49:44 - 49:48das heute das große Geschäft ist. Und das
wird dann halt heute in Rechenzentren -
49:48 - 49:54in China betrieben. Und China hat heute
mehr als 50% der Rechenkraft von Bitcoin, -
49:54 - 49:57also, toll, unsere unabhängige Währung
gehört jetzt den Chinesen. -
49:57 - 50:01Und selbst wenn das nicht stimmen sollte,
und das nicht funktionieren sollte, -
50:01 - 50:05ist es so, dass all die spezielle
Hardware, die heute zum Mining -
50:05 - 50:09notwendig ist, in China hergestellt wird.
Und China könnte einfach all diese Fabriken, -
50:09 - 50:13in denen die hergestellt werden,
beschlagnahmen, und nach einigen Monaten -
50:13 - 50:15hätten sie trotzdem wieder mehr
Rechenleistung als jeder andere, -
50:15 - 50:20und könnte die Währung so kontrollieren.
Also, das ist durchaus wahrscheinlich. -
50:20 - 50:24Herald: Dann machen wir weiter
mit Mikrofon 1, hier vorne, bitte. -
50:24 - 50:29Frage: Ja, mir geht’s auch gerade um die
Rechenpower. Also gibt es da irgendwie -
50:29 - 50:34Ansätze in anderen elektronischen
Währungen, wie das verhindert werden kann, -
50:34 - 50:40dass immer quasi zum Stand der aktuellen
Technik die maximale Rechenpower nötig ist, -
50:40 - 50:43um so ein System laufen zu lassen?
-
50:43 - 50:47vimja: Es hat zur Zeit, im Verlauf der
Zeit verschiedene Möglichkeiten, -
50:47 - 50:50also verschiedene Ansätze gegeben.
-
50:50 - 50:55Das eine was man immer wieder versucht
hat, ist halt, dass man das nicht nur auf -
50:55 - 51:00Rechenkraft beschränkt, sondern dass man
sagt, der Angriff der braucht nicht nur -
51:00 - 51:04Rechenpower sondern auch viel RAM,
oder viel Memory. Und dadurch ist es -
51:04 - 51:08sehr viel schwieriger, Hardware zu bauen.
Oder sehr viel teurer, Hardware zu bauen, -
51:08 - 51:13die darauf spezialisiert ist, und man
erhofft sich davon Erfolge, aber -
51:13 - 51:16schlussendlich hat man dort wieder
dasselbe Problem. Ich weiß aber, -
51:16 - 51:21dass Ethereum arbeitet an einem Konzept,
das nennen sie Proof-of-Stake. -
51:21 - 51:25Und wie genau das funktioniert, kann ich
dir nicht sagen. Aber da hängt dann -
51:25 - 51:29die Wahrscheinlichkeit, dass du einen
Block erstellst, davon ab wieviel Geld -
51:29 - 51:33du besitzt in dem Netzwerk, oder sowas.
Und die brauchen dann eigentlich -
51:33 - 51:36kein Mining mehr. Und die haben dann halt
auch das Problem nicht mehr dass man -
51:36 - 51:41unglaublich viel Strom braucht, um das
Ding zu minen. Und ich dachte, die wollten -
51:41 - 51:45diesen Sommer umstellen. Ich habe dann
aber das Ganze ein wenig aus den Augen -
51:45 - 51:48verloren, und kann dir jetzt nicht
sagen wie weit die damit sind. -
51:48 - 51:49Also grundsätzlich…
-
51:49 - 51:50Frage: Wie heißt das nochmal?
-
51:50 - 51:54vimja: ‚Proof-of-Stake‘. Und das wird in
Ethereum implementiert. Aber wie weit -
51:54 - 51:57die sind, kann ich dir nicht sagen. Das
müsstest du selbst nachschauen gehen. -
51:57 - 51:58Frage: Danke.
-
51:58 - 52:02Herald: Dann machen wir weiter mit
Mikrofon 4, dort drüben, bitte! -
52:02 - 52:07Frage: Ich stelle mal zwei Fragen. Das
eine ist: öffentliche Grundbuchämter -
52:07 - 52:11könnte man doch sehr gut in der Blockchain
umlegen [anlegen], und dadurch könnte -
52:11 - 52:15doch die Verwaltung sehr viel Geld
einsparen, und z.B. Handelsregister -
52:15 - 52:17sind ja auch öffentlich, die könnte man
doch auch in die Blockchain verschieben. -
52:17 - 52:20Oder mache ich da irgendeinen Denkfehler,
dass es am Schluss für die Verwaltung -
52:20 - 52:23teurer kommt? Und was mich auch
noch wundert, was deine Meinung -
52:23 - 52:25zu Smart Contracts ist.
-
52:25 - 52:30vimja: Also, zu der ersten Frage, das ist
so, daran wird tatsächlich gearbeitet. -
52:30 - 52:34Insbesondere die britische Regierung hat
auch Forschungsgruppen, die erforschen -
52:34 - 52:42sollen, wie Blockchains der Verwaltung
helfen können. Gerade beim Grundbuchamt, -
52:42 - 52:46also solche Systeme brauchen starke
Anpassungen, gerade wenn wir uns -
52:46 - 52:53vorstellen, ein Grundbuchamt, wenn es dann
jemandem gelingen würde, irgendwie -
52:53 - 52:56jetzt trotzdem ein Grundstück quasi
zu stehlen, und das würde einfach -
52:56 - 53:02in dieser Blockchain drin feststehen, wie
würde man das wieder rückgängig machen? -
53:02 - 53:06Also wenn wir heute ein Grundbuchamt
haben, dann können die alles überschreiben. -
53:06 - 53:11Und irgendwie möchten wir ja dann trotzdem
nicht einfach nur dieser Blockchain vertrauen. -
53:11 - 53:15Wir möchten trotzdem die Möglichkeit
haben, dass gewisse Stellen, gerade eben -
53:15 - 53:18unser Staat, das überschreiben können.
Da müssen dann in diese Blockchains -
53:18 - 53:22zusätzliche Mechanismen eingebaut werden,
dass das trotzdem geht, und das ist dann -
53:22 - 53:27halt bedenklich, weil jetzt trotzdem da
jemand das Zeugs kaputtmachen kann. -
53:27 - 53:31Also das ist nicht ganz einfach, diese
Dinge zu tun. Aber ich denke schon, -
53:31 - 53:38dass gerade Grundbuchämter eine gute
Chance sind, und das ist vermutlich auch -
53:38 - 53:43etwas vom Ersten, was wir implementiert
sehen werden. Soviel für öffentliche Ämter. -
53:43 - 53:48Aber ich denke auch, dass es einen
Hybridbetrieb geben wird. Also -
53:48 - 53:52dass man quasi sagt, das ist zwar
öffentlich in einer Blockchain, aber -
53:52 - 53:56schlussendlich, was wirklich gilt ist
immer noch das, was im Grundbuchamt steht, -
53:56 - 53:59und das wird dann halt solange so
weiterbetrieben, bis sich das wirklich -
53:59 - 54:03bewährt hat, und man den Übergang macht.
Und die zweite Frage, sorry, habe ich -
54:03 - 54:04wieder vergessen.
-
54:04 - 54:11Herald: Okay, wenn das die Frage
beantwortet und er nicht wieder aufsteht, -
54:11 - 54:15dann würde ich jetzt mit Mikrofon 7
weitermachen, dort oben, bitte. -
54:15 - 54:20Frage: Ja, vielen Dank für den spannenden
Vortrag. Mich würde noch interessieren, -
54:20 - 54:25vielleicht noch was zu dem Thema ‚Ende
der Bitcoins‘, die sind ja anscheinend -
54:25 - 54:29begrenzt, soweit ich das verstanden habe.
Und wie wird das Erstellen von neuen -
54:29 - 54:34Blöcken letztendlich in ferner Zukunft
dann belohnt, werden die einfach immer so -
54:34 - 54:37weiter unterteilt, und man bekommt dann
nur noch Bruchteile von Bitcoins -
54:37 - 54:38als Belohnung, oder wie funktioniert das?
-
54:38 - 54:42vimja: Das ist eine sehr gute Frage,
die sich natürlich auch diesen Sommer -
54:42 - 54:45gestellt hat, weil sich ja der
Block Reward halbiert hat. -
54:45 - 54:49Und erstaunlicherweise ist es dann aber
eigentlich ohne Weiteres weitergegangen. -
54:49 - 54:53Nun ist es so, der Mechanismus,
der eigentlich greifen sollte, ist -
54:53 - 54:58die Transaction Fees. Dass es durch
die Transaction Fees getragen wird, -
54:58 - 55:02diese Gebühr. Nur ist es heute so, dass
die Transaction Fees so niedrig sind, -
55:02 - 55:07dass das Minen sich nicht rentieren würde,
also der Stromverbrauch ist viel zu hoch, -
55:07 - 55:14als dass es sich lohnen würde, nur
für die Transaction Fees zu minen. -
55:14 - 55:17Andererseits ist es aber so, dass die
Transaction Fees heute schon sehr hoch -
55:17 - 55:21sind, also die kommen heute irgendwo
zwischendurch schon in die Bereiche -
55:21 - 55:25der Transaction Fees, die man auch
zahlt bei Kreditkartenüberweisungen. -
55:25 - 55:29Und das ist natürlich absolut lächerlich
hoch. Und dann ist es aber auch so, -
55:29 - 55:33dass die Blöcke voll sind, d.h. wenn das
Block Limit – das ist ein künstliches -
55:33 - 55:37Limit, wie groß die Blöcke sein dürfen,
und die Community führt da großen Krieg -
55:37 - 55:42darüber ob man das jetzt ändern soll oder
nicht – aber wenn dieses Limit halt nicht -
55:42 - 55:45erhöht wird, dann passen nicht mehr
Transaktionen rein, und dann ist -
55:45 - 55:49der einzige Weg höhere Transaction…
also mehr Transaction Fees zu haben -
55:49 - 55:52für den Miner, ist diese Transaction Fees
zu erhöhen. Und wenn man die weiter -
55:52 - 55:56erhöht, dann lohnt es sich einfach
nicht mehr, Bitcoin zu verwenden. -
55:56 - 55:59Im Moment ist es noch nicht so ein
Problem, für die nächsten vier Jahre -
55:59 - 56:03sind es ja noch 12,5 Bitcoin die
man kriegt. Aber wie es danach -
56:03 - 56:07weitergehen wird, das muss man abwarten,
und dann schauen, was da genau passiert. -
56:07 - 56:11Und ich denke dass das ist auch noch ein
dynamisches System, das sich schnell -
56:11 - 56:14wandelt, und da werden auch noch
viele Leute viele gute Ideen haben. -
56:14 - 56:18Frage: Darf ich noch mal kurz was
nachfragen? D.h. der Proof-of-Work -
56:18 - 56:23ist nicht der direkte Bitcoin, den ich
bekomme, also nicht die 12,5 Bitcoins, -
56:23 - 56:26die ich bekomme, um einen Block zu
erstellen, ist nicht der Proof-of-Work? -
56:26 - 56:32vimja: Nein nein, das ist… die 12,5 Bitcoin
die du kriegst, also die 12,5 Bitcoin -
56:32 - 56:35plus das klein weniger, was von den
Transaction Fees kommt, das ist -
56:35 - 56:39der Block Reward. Nennt sich das. Und der
Proof-of-Work ist einfach der Beweis dafür, -
56:39 - 56:43dass du die Arbeit auf dich genommen
hast, einen Block zu erstellen. -
56:43 - 56:50Herald: Gut, dann machen wir oben
auf dem Balkon weiter mit der 8. Bitte. -
56:50 - 56:53Frage: Ja, das ganze Erstellen von
den Blöcken basiert ja darauf, dass -
56:53 - 56:57Transaktionen in des Syschtem reinkommen.
Die Frage wäre jetzt, was passiert, wenn -
56:57 - 57:02keine Transaktionen zur Verfügung stehen.
Werden dann Dummy-Transaktionen erzeugt, -
57:02 - 57:04oder leere Blöcke, oder was passiert dann?
-
57:04 - 57:08vimja: Nein, das kannst du sehen, wenn du
ganz zurückgehst, die ersten Blöcke, die -
57:08 - 57:12überhaupt erstellt wurden, dort gab es ja
noch keine Transaktionen. Was hätte auch -
57:12 - 57:17überwiesen werden sollen wenn niemand Geld
hat. Und da war es dann halt so, dass -
57:17 - 57:21der Block enthält dann nur die Coin-based-
Transaktion. Der Miner wird ja immer -
57:21 - 57:25eine Coin-based-Transaktion machen.
Einfach, weil es für ihn interessant ist. -
57:25 - 57:29Und dann erstellt er halt einen Block, der
nur diese Coin-based-Transaktion enthält. -
57:29 - 57:36Herald: Dann machen wir weiter
hier vorne mit der 2. Bitte. -
57:36 - 57:38*Mikro 2 will Mikro 4 Vorrang geben*
Bitte? -
57:38 - 57:42Wenn du nicht möchtest, dann machen
wir mit der 4 weiter! Sehr fair von dir! -
57:42 - 57:49Frage: Och, dankeschön. Ich habe das Thema
‚Blockchain‘ in verschiedenen Kontexten -
57:49 - 57:52jetzt im letzten Jahr sehr viel gesehen.
Es ist fast ein Buzzword in sehr sehr -
57:52 - 57:56vielen Branchen, von FinTech bis zu
IoT oder wo auch immer. Konntest du -
57:56 - 58:00im Kontext deiner Arbeit ein bisschen
so einen Trend raussehen, wo sich da -
58:00 - 58:01erste Anwendungen
wirklich bewähren können? -
58:01 - 58:08vimja: Erste Anwendungen gibt es ja bereits.
Du kannst mit Bitcoin Dinge bezahlen. -
58:08 - 58:14Aber das ist so ein wenig eine Sache.
Eines, was ich gesehen habe, wo ich mich -
58:14 - 58:18aber schlicht weigere mich zu beteiligen,
ist halt dass Banken das zu verwenden -
58:18 - 58:23versuchen, um die Transaktionen zwischen
den Banken zu regeln. Da wird es ja, -
58:23 - 58:26glaube ich, im Anschluss im Saal G
einen Talk geben dazu, wie das heute -
58:26 - 58:31gemacht wird, wie Banken zwischeneinander
Geld austauschen. Und das möchte man -
58:31 - 58:34in Zukunft mit Bitcoin [*eher: Blockchain*]
machen. Und da sind die Banken auch dran, -
58:34 - 58:39sehr viel Geld und sehr viel Zeit rein zu
investieren. Das ist halt sehr schade, -
58:39 - 58:43dass diese eigentlich coole Technologie
jetzt für sowas verwendet werden soll. -
58:43 - 58:49Aber ich denke das ist eine Anwendung die
kommt. Dann eben einfache Kryptowährungen, -
58:49 - 58:54wie etwa Bitcoin, um Dinge
zu bezahlen. Und auch… -
58:54 - 58:58ich denke auch mit Ethereum, eben gerade
diese Smart Contracts werden kommen, -
58:58 - 59:01dass man halt eben irgendwelche Dinge,
irgendwelche Third Parties, die man -
59:01 - 59:06verwendet für Dinge zu regeln, ersetzen
wir jetzt aber. Was jetzt als Erstes -
59:06 - 59:10quasi den Durchbruch schaffen wird und
als Großes eingesetzt werden wird, -
59:10 - 59:11kann ich dir nicht sagen.
-
59:11 - 59:16Herald: Gut, dann, wir sind so ganz knapp
an der Zeit, aber du darfst deine Frage -
59:16 - 59:17auf jeden Fall stellen, bitte!
-
59:17 - 59:21Frage: Ist auch nur eine ganz kurze,
schnelle Frage. Gibt es einen Schutz -
59:21 - 59:24gegen DDoS, dass ich irgendwie das
Netzwerk mit falschen Transaktionen -
59:24 - 59:29bombardiere, und dann bricht alles
zusammen, gibt es da irgendwie -
59:29 - 59:30einen Schutz dagegen?
-
59:30 - 59:32vimja: Ja, das war ja ganz interessant.
Das hat es glaube ich vor über einem Jahr -
59:32 - 59:35gegeben, bei Bitcoin, dass das passiert
ist, und die waren sich dann -
59:35 - 59:39nicht so ganz einig in der Community,
weil die mögen sich sowieso nicht mehr, -
59:39 - 59:43und ‚kriegen‘ nur miteinander, die waren
sich da nicht so ganz einig, ob das jetzt -
59:43 - 59:46ein Test war, oder ob das ein DDoS war.
Und das Interessante daran ist ja, -
59:46 - 59:52dass es ja tatsächlich Geld kostet, eine
Transaktion zu machen. Also du zahlst -
59:52 - 59:56zuerst eine Transaction-Gebühr, und der
Schutz sollte eigentlich, hoffentlich, -
59:56 - 60:00sein, dass das da zu teuer ist.
Aber offenbar gibt es immer noch -
60:00 - 60:04so viele Bitcoin-Millionäre, die einfach
Bitcoins haben zum Davonschmeißen, -
60:04 - 60:09und die dann sowas tun können. Es
wird auf jeden Fall an irgendwelchen -
60:09 - 60:12Schutzmechanismen gearbeitet, aber
was das ist… *zuckt mit den Schultern* -
60:12 - 60:16Also was es gibt, in Bitcoin,
ist dieses Replace-by-Fee, -
60:16 - 60:23damit die Transaction-Gebühr nach
der Veröffentlichung der Transaktion -
60:23 - 60:26anschließend noch erhöht werden
kann. Und damit kannst du halt… -
60:26 - 60:29wenn du jetzt siehst, es kommen sehr viele
DDoS-Transaktionen rein, kannst du halt -
60:29 - 60:34im Nachhinein die Transaction-Gebühr
erhöhen, und das dadurch den Minern -
60:34 - 60:37quasi schmackhaft machen, deine
valide Transaktion zu includen. -
60:37 - 60:44Dieses Replace-by-Fee, dieses RBF,
ist aber sehr stark umstritten, und -
60:44 - 60:48wird auch standardmäßig nicht
aktiviert von der Client-Software. -
60:48 - 60:56Herald: Gut, dann danke vimja, für diese
großartige Einführung in die Blockchain! -
60:56 - 60:57*Beifall*
-
60:57 - 60:58*Abspannmusik*
-
60:58 - 61:06*Untertitel erstellt von c3subtitles.de
im Jahr 2017. Mach mit und hilf uns!*
- Title:
- Einführung zu Blockchains (33c3)
- Description:
-
https://media.ccc.de/v/33c3-7824-einfuhrung_zu_blockchains
Blockchain ist die Technologie welche moderne Kryptowährungen ermöglicht. In dem Vortrag wird die Funktionsweise von Blockchains ganz allgemein erklärt. Anhand der Bitcoin Blockchain wird ausserdem gezeigt, wie diese Funktionen in einem echten System umgesetzt werden können.
['vimja']
- Video Language:
- German
- Duration:
- 01:01:25
C3Subtitles edited English subtitles for Einführung zu Blockchains (33c3) |