Return to Video

Einführung zu Blockchains (33c3)

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

more » « less
Video Language:
German
Duration:
01:01:25

English subtitles

Incomplete

Revisions