71
Blockchain Engineering Smart Contracts & Bitcoin-Script Dr. Lars Brünjes 17. Oktober 2019 Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

Blockchain EngineeringSmart Contracts & Bitcoin-Script

Dr. Lars Brünjes

17. Oktober 2019

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Page 2: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Smart Contracts (intelligente Verträge) sind (mehr- oder weniger komplexe)Verträge “auf der Blockchain”.

I Während traditionelle Verträge vom Gerichtssystem des Gerichtsstandes desVertrages durchgesetzt werden, werden Smart Contracts automatischdurchgesetzt (wie gewöhnliche Überweisungen einer Kryptowährung auch).

I Traditionelle Verträge bieten oft Interpretationsspielraum, und ihre Auslegunghängt vom bearbeitenden Richter bzw. Gericht ab. Smart Contracts sindmathematisch eindeutig und absolut präzise.

I Ob das ein Vor- oder Nachteil ist, kann man diskutieren. Zwar sind Gerichte wie allemenschlichen Einrichtungen fehlbar, sie haben aber auch die Möglichkeit, nicht am“Wortlaut” eines Vertrages zu kleben, sondern stattdessen die Absicht einesVertrages mit “gesundem Menschenverstand” zu beurteilen.

I So gesehen sind Smart Contracts “purer Wortlaut”: Die Absicht des Verfasserseines Smart Contracts ist unerheblich, nur der Code zählt.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Smart Contracts

Page 3: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Bisher haben wir als Adresse (Absender und Empfänger von Transaktionen) nurHashs von öffentlichen Schlüsseln betrachtet.

I Selbst bei Bitcoin, ganz zu schweigen von Ethereum, ist die Realität komplizierter.I Anstelle von statischen Adressen verwendet Bitcoin kleine Programme (Scripts).I Beim Verifizieren des Inputs einer Transaktion wird der Input-Skript mit dem

Output-Skript kombiniert und ausgeführt, und das Ergebnis des Programmsentscheidet, ob die ausgebende Transaktion das Recht hat, den entsprechendenOutput auszugeben.

I Die Details hängen von der Kryptowährung ab, aber das Prinzip bleibt dasselbe:Programme entscheiden, unter welchen Bedingungen Geld ausgegeben werdendarf.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Grundidee

Page 4: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Die Programme, die entscheiden, unter welchen Bedingungen eine Kryptowährungausgegeben werden darf, müssen auf allen Knoten laufen, wenn eine Transaktionverifiziert wird (also insbesondere für alle Transaktionen in jedem neuen Block).

I Es wäre also fatal, wenn ein solches Programm sehr lange laufen würde oder sogarin einer Endlosschleife stecken bliebe.

I Ein Ausweg besteht darin, die Programme so stark einzuschränken, dassEndlosschleifen nicht möglich sind. Der Nachteil dabei ist, dass dies die Menge dermöglichen Programme einschränkt.

I Eine andere Möglichkeit besteht darin, beliebig komplexe Programme zuzulassen,aber ihre Ausführung “teuer” zu machen, d.h. der Autor einer Transaktion muss fürjeden Schritt, den das Programm macht, mittels Transaktionsgebühren bezahlen.

I Bitcoin hat sich für den ersten Weg entschieden, Ethereum und Cardano für denzweiten.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Dilemma

Page 5: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Programmiersprachen können nach ihrer Turing-Vollständigkeit(Turing Completeness) klassifiziert werden.

I Eine Programmiersprache heisst Turing complete(Turing-vollständig), wenn man in ihr jede beliebigeTuring-Maschine simulieren kann.

I Intuitiv bedeutet dies, dass man in solchen Programmiersprachenalles berechnen kann, was berechenbar ist.

I Da Turing-Maschinen in Endlosschleifen geraten können, gilt diesinsbesondere auch für Turing-vollständige Programmiersprachen.

I In der Praxis sind alle gängigen höheren ProgrammiersprachenTuring-vollständig: Python, Java, C, C++, Perl, Javascript, Lisp,Haskell,. . .

I Auch viele exotischere Konstruktionen (z.B. Lambda-Kalkül) sindTuring-vollständig.

Abb.: Turing-Maschine,rekonstruiert von Mike Davey.Foto von Rocky Acosta,Creative Commons Lizenz.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zwischenspiel: Turing-Vollständigkeit

Page 6: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Das berühmte Halte-Problem ist die Frage, ob man einem Programm, das in einerTuring-vollständigen Sprache geschrieben ist, “ansehen” kann, ob es in eineEndlosschleife geraten wird.

I Genauer: Gibt es ein Programm, dass für jedes Programm entscheidet, ob dieseshalten wird?

I Die Antwort ist nein! — Angenommen, es gäbe eine Python-Funktion halt, die dasHalteproblem löst. Man betrachte dann die folgende Python-Funktion:def paradox():

if halt(paradox):while True:

pass

Falls halt True zurück gibt, gerät paradox in eine Endlosschleife, was einWiderspruch ist. Falls halt False zurück gibt, endet paradox, was ebenfalls einWiderspruch ist.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zwischenspiel: Das Halte-Problem

Page 7: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Wegen des Halte-Problems ist es unmöglich, automatisch zu entscheiden, ob eingegebenes Programm in einer Turing-vollständigen Sprache irgendwann anhaltenwird oder nicht.

I Wenn man also eine Turing-vollständige Smart-Contract-Sprache wählt, kann manvorab nicht garantieren, dass ein Skript anhalten wird. Man kann auch nichtabsehen, wie lange es laufen wird.

I Daher muss man sich entweder gegen Turing-Vollständigkeit entscheiden oderProgramme nach endlicher Zeit abbrechen.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Konsequenz für Smart Contracts

Page 8: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Bitcoin benutzt eine Sprache, die nicht Turing-vollständig ist und Bitcoin Scriptgenannt wird.

I Bitcoin Script enthält keine Schleifen, d.h. ein Programm in Bitcoin Script kann niein eine Endlosschleife geraten.

I Trotz seiner Einfachheit ist Bitcoin Script recht mächtig und flexibel und ermöglichtvielfältige Arten von Transaktions-Verifizierungen.

I Andererseits ist Bitcoin Script zu eingeschränkt, um echte Smart Contracts imSinne von komplexen finanziellen Verträgen abzubilden.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Bitcoin Script

Page 9: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Bitcoin Script ist eine sogenannte Stack based(auf Stapeln basierende) Sprache.

I Forth ist eine (relativ) populäre höhereProgrammiersprache, die ebenfalls auf Stapelnbasiert. Andere Beispiele sind die Java VirtualMachine (JVM) und die Common LanguageRuntime (CLR) von Microsoft.

I In Bitcoin Script gibt es keine Variablen. Datenwerden stattdessen auf dem Stapel abgelegtund verarbeitet.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Stapel

Page 10: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Das folgende Programm in Bitcoin Script berechnet (2 + 3) · 4:I 2 3 op_add 4 op_mul

23op_add4op_mul

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Beispiel: Arithmetik

Page 11: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Das folgende Programm in Bitcoin Script berechnet (2 + 3) · 4:I 2 3 op_add 4 op_mul

• 23op_add4op_mul

2

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Beispiel: Arithmetik

Page 12: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Das folgende Programm in Bitcoin Script berechnet (2 + 3) · 4:I 2 3 op_add 4 op_mul

2• 3

op_add4op_mul

32

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Beispiel: Arithmetik

Page 13: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Das folgende Programm in Bitcoin Script berechnet (2 + 3) · 4:I 2 3 op_add 4 op_mul

23

• op_add4op_mul

5

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Beispiel: Arithmetik

Page 14: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Das folgende Programm in Bitcoin Script berechnet (2 + 3) · 4:I 2 3 op_add 4 op_mul

23op_add

• 4op_mul

45

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Beispiel: Arithmetik

Page 15: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Das folgende Programm in Bitcoin Script berechnet (2 + 3) · 4:I 2 3 op_add 4 op_mul

23op_add4

• op_mul14

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Beispiel: Arithmetik

Page 16: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Berechnen Sie (10− 3) · (4 + 7) mit Bitcoin Script! (Hinweis: Benutzen Sie op_sub!)I Schreiben Sie ein Bitcoin Script Programm, das die Zahl auf dem Stack quadriert.

(Hinweis: Benutzen Sie op_dup!)I Schreiben Sie ein Bitcoin Script Programm, das x2 + y2 berechnet, wenn x und y

die beiden obersten Zahlen auf dem Stapel sind. (Hinweis: Benutzen Sie op_swap!)I Schreiben Sie ein Bitcoin Script Programm, das x · y berechnet, falls y < x, und

x+ y, falls y >= x, wobei x und y die beiden oberen Zahlen auf dem Stack sind (xoben, y an zweiter Stelle). (Hinweis: Benutzen Sie op_2dup, op_lessthan, op_if,op_else, und op_endif!)

I Sie finden eine Liste aller Bitcoin-Script Befehle aufhttps://en.bitcoin.it/wiki/Script.

I Auf https://siminchen.github.io/bitcoinIDE/build/editor.html gibt eseinen hübschen Online-Simulator.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Übungen

Page 17: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Bei Bitcoin enthalten sowohl Transaktions-Outputs als auch Transaktions-InputsSkripte.

I Zum Verifizieren einer Transaktion wird jeder Input wie folgt geprüft:I Der Output-Skript wird mit dem Input-Skript kombiniert (erst Output-Skript, dann Input-Skript).I Diese Kombination wird ausgeführt.I Die Benutzung des Inputs ist gültig, wenn der Skript keinen Fehler meldet und wenn am Ende eine

Zahl auf dem Stapel liegt, die nicht Null ist.

I Die Transaktion ist gültig, wenn alle Inputs auf diese Weise gültig sind (und wennalle anderen Bedingungen erfüllt sind, also Summe der Inputs größer Summe derOutputs usw.).

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Transaktions-Verifizierung mit Bitcoin Script

Page 18: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Die allermeisten Bitcoin-Transaktionen benutzen gewöhnliche “Hash einesöffentlichen Schlüssels”-Adressen.

I Wie sehen Input- und Output-Skripte in diesem Fall aus?I <sig> <pubKey>

I op_dup op_hash160 <pubKeyHash> op_equalverify op_checksig

I Der Input-Skript legt die elektronische Unterschrift und den öffentlichen Schlüssel auf den Stapel.Der Output-Skript prüft, ob der Hash dieses öffentlichen Schlüssels den richtigen Wert hat und obdie Unterschrift korrekt ist.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Pay to Public Key Hash in Bitcoin Script

Page 19: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Input-Skript:304402200cc8b0471a38edad2ff9f9799521b7d948054817793c980eaf3a6637ddfb939702201c1a801461d4c3cf4de4e7336454dba0dd70b89d71f221e991cb6a79df1a860d0102ce9f5972fe1473c9b6948949f676bbf7893a03c5b4420826711ef518ceefd8dc

I Output-Skript:op_dup op_hash160 1290b657a78e201967c22d8022b348bd5e23ce17 op_equalverify op_checksig

304402200cc8b0471a38ed...02ce9f5972fe1473c9b694...op_dupop_hash1601290b657a78e201967c22d...op_equalverifyop_checksig

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Pay to Public Key Hash — Beispiel

Page 20: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Input-Skript:304402200cc8b0471a38edad2ff9f9799521b7d948054817793c980eaf3a6637ddfb939702201c1a801461d4c3cf4de4e7336454dba0dd70b89d71f221e991cb6a79df1a860d0102ce9f5972fe1473c9b6948949f676bbf7893a03c5b4420826711ef518ceefd8dc

I Output-Skript:op_dup op_hash160 1290b657a78e201967c22d8022b348bd5e23ce17 op_equalverify op_checksig

• 304402200cc8b0471a38ed...02ce9f5972fe1473c9b694...op_dupop_hash1601290b657a78e201967c22d...op_equalverifyop_checksig

304402200cc8b0471a38ed...

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Pay to Public Key Hash — Beispiel

Page 21: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Input-Skript:304402200cc8b0471a38edad2ff9f9799521b7d948054817793c980eaf3a6637ddfb939702201c1a801461d4c3cf4de4e7336454dba0dd70b89d71f221e991cb6a79df1a860d0102ce9f5972fe1473c9b6948949f676bbf7893a03c5b4420826711ef518ceefd8dc

I Output-Skript:op_dup op_hash160 1290b657a78e201967c22d8022b348bd5e23ce17 op_equalverify op_checksig

304402200cc8b0471a38ed...• 02ce9f5972fe1473c9b694...

op_dupop_hash1601290b657a78e201967c22d...op_equalverifyop_checksig

02ce9f5972fe1473c9b694...304402200cc8b0471a38ed...

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Pay to Public Key Hash — Beispiel

Page 22: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Input-Skript:304402200cc8b0471a38edad2ff9f9799521b7d948054817793c980eaf3a6637ddfb939702201c1a801461d4c3cf4de4e7336454dba0dd70b89d71f221e991cb6a79df1a860d0102ce9f5972fe1473c9b6948949f676bbf7893a03c5b4420826711ef518ceefd8dc

I Output-Skript:op_dup op_hash160 1290b657a78e201967c22d8022b348bd5e23ce17 op_equalverify op_checksig

304402200cc8b0471a38ed...02ce9f5972fe1473c9b694...

• op_dupop_hash1601290b657a78e201967c22d...op_equalverifyop_checksig

02ce9f5972fe1473c9b694...02ce9f5972fe1473c9b694...304402200cc8b0471a38ed...

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Pay to Public Key Hash — Beispiel

Page 23: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Input-Skript:304402200cc8b0471a38edad2ff9f9799521b7d948054817793c980eaf3a6637ddfb939702201c1a801461d4c3cf4de4e7336454dba0dd70b89d71f221e991cb6a79df1a860d0102ce9f5972fe1473c9b6948949f676bbf7893a03c5b4420826711ef518ceefd8dc

I Output-Skript:op_dup op_hash160 1290b657a78e201967c22d8022b348bd5e23ce17 op_equalverify op_checksig

304402200cc8b0471a38ed...02ce9f5972fe1473c9b694...op_dup

• op_hash1601290b657a78e201967c22d...op_equalverifyop_checksig

1290b657a78e201967c22d...02ce9f5972fe1473c9b694...304402200cc8b0471a38ed...

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Pay to Public Key Hash — Beispiel

Page 24: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Input-Skript:304402200cc8b0471a38edad2ff9f9799521b7d948054817793c980eaf3a6637ddfb939702201c1a801461d4c3cf4de4e7336454dba0dd70b89d71f221e991cb6a79df1a860d0102ce9f5972fe1473c9b6948949f676bbf7893a03c5b4420826711ef518ceefd8dc

I Output-Skript:op_dup op_hash160 1290b657a78e201967c22d8022b348bd5e23ce17 op_equalverify op_checksig

304402200cc8b0471a38ed...02ce9f5972fe1473c9b694...op_dupop_hash160

• 1290b657a78e201967c22d...op_equalverifyop_checksig

1290b657a78e201967c22d...1290b657a78e201967c22d...02ce9f5972fe1473c9b694...304402200cc8b0471a38ed...

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Pay to Public Key Hash — Beispiel

Page 25: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Input-Skript:304402200cc8b0471a38edad2ff9f9799521b7d948054817793c980eaf3a6637ddfb939702201c1a801461d4c3cf4de4e7336454dba0dd70b89d71f221e991cb6a79df1a860d0102ce9f5972fe1473c9b6948949f676bbf7893a03c5b4420826711ef518ceefd8dc

I Output-Skript:op_dup op_hash160 1290b657a78e201967c22d8022b348bd5e23ce17 op_equalverify op_checksig

304402200cc8b0471a38ed...02ce9f5972fe1473c9b694...op_dupop_hash1601290b657a78e201967c22d...

• op_equalverifyop_checksig

02ce9f5972fe1473c9b694...304402200cc8b0471a38ed...

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Pay to Public Key Hash — Beispiel

Page 26: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Input-Skript:304402200cc8b0471a38edad2ff9f9799521b7d948054817793c980eaf3a6637ddfb939702201c1a801461d4c3cf4de4e7336454dba0dd70b89d71f221e991cb6a79df1a860d0102ce9f5972fe1473c9b6948949f676bbf7893a03c5b4420826711ef518ceefd8dc

I Output-Skript:op_dup op_hash160 1290b657a78e201967c22d8022b348bd5e23ce17 op_equalverify op_checksig

304402200cc8b0471a38ed...02ce9f5972fe1473c9b694...op_dupop_hash1601290b657a78e201967c22d...op_equalverify

• op_checksig01

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Pay to Public Key Hash — Beispiel

Page 27: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Ein anderer häufiger Transaktionstyp in Bitcoin ist Multisig.I Bei einer solchen Transaktion müssen mehrere Parteien digital unterschreiben, um

einen Output ausgeben zu dürfen.I Bitcoin Script unterstützt dies mittels op_checkmultisig.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Multisig

Page 28: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Der Script-Befehl op_return macht einen Output unausgebbar.I Alle Befehle nach op_return werden ignoriert.I Eine Anwendung ist z.B., einen Output vom Wert Null zu erzeugen und ihm einen

Skript zu geben, der mit op_return beginnt und dann beliebige Daten enthält.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Unausgebbare Transaktionen

Page 29: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Der Output von Transaktiona4bfa8ab6435ae5f25dae9d89e4eb67dfa94283ca751f393c1ddc5a837bbc31b warmit folgendem Skript versehen:op_hash2566fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000op_equal

I Um den Output auszugeben, musste man also eine Zahl finden, die dengegebenen Hash hat.

I Es gelang tatsächlich jemandem, diese Rätsel zu lösen: Die gesuchte Zahl war derHash des Genesis-Block-Headers.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Rätsel

Page 30: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Im Jahr 2013 kreierte Peter Todd Skripte, deren Outputs von jedem ausgegebenwerden können, der eine SHA-1-Hash-Kollision findet:op_2dup op_equal op_not op_verify op_sha1 op_swap op_sha1 op_equal

I Man kann Bitcoin an so gesicherte Skript-Adressen schicken, um einen Anreiz zubieten, Hash-Kollisionen zu finden.

I Solange die Belohnung hinreichend groß war und niemand sie gewonnen hatte,konnte man relativ sicher sein, dass niemand eine Kollision gefunden hatte.

I Im Februar 2017 wurde die Belohnung von 2,48 B von jemandem gewonnen.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 31: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

<Datum-1><Datum-2>op_2dupop_equalop_notop_verifyop_sha1op_swapop_sha1op_equal

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 32: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

• <Datum-1><Datum-2>op_2dupop_equalop_notop_verifyop_sha1op_swapop_sha1op_equal

<Datum-1>

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 33: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

<Datum-1>• <Datum-2>

op_2dupop_equalop_notop_verifyop_sha1op_swapop_sha1op_equal

<Datum-2><Datum-1>

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 34: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

<Datum-1><Datum-2>

• op_2dupop_equalop_notop_verifyop_sha1op_swapop_sha1op_equal

<Datum-2><Datum-1><Datum-2><Datum-1>

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 35: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

<Datum-1><Datum-2>op_2dup

• op_equalop_notop_verifyop_sha1op_swapop_sha1op_equal

00<Datum-2><Datum-1>

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 36: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

<Datum-1><Datum-2>op_2dupop_equal

• op_notop_verifyop_sha1op_swapop_sha1op_equal

01<Datum-2><Datum-1>

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 37: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

<Datum-1><Datum-2>op_2dupop_equalop_not

• op_verifyop_sha1op_swapop_sha1op_equal

<Datum-2><Datum-1>

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 38: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

<Datum-1><Datum-2>op_2dupop_equalop_notop_verify

• op_sha1op_swapop_sha1op_equal

<Hash><Datum-1>

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 39: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

<Datum-1><Datum-2>op_2dupop_equalop_notop_verifyop_sha1

• op_swapop_sha1op_equal

<Datum-1><Hash>

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 40: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

<Datum-1><Datum-2>op_2dupop_equalop_notop_verifyop_sha1op_swap

• op_sha1op_equal

<Hash><Hash>

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 41: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

<Datum-1><Datum-2>op_2dupop_equalop_notop_verifyop_sha1op_swapop_sha1

• op_equal

01

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Anreize für Hash-Kollisionen

Page 42: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Bitcoin Script unterstützt Zeitschlösser (Time Locks) mittelsop_checklocktimeverify und op_checksequenceverify.

I op_checklocktimeverify ermöglicht das Ausgeben eines Outputs erst, wenn einbestimmter Zeitpunkt (gemessen in Blockhöhe) erreicht ist.

I op_checksequenceverify basiert im Gegensatz dazu auf relativer Zeit: DieAusgabe ist erst möglich, nachdem die Transaktion eine gewisse Tiefe in derBlockchain erreicht hat.

I Beide Typen von Zeitschlössern finden z.B. in Bitcoin Lightning Anwendung.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Andere Bitcoin Script Typen — Zeitschlösser

Page 43: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

I Alice und Bob sind Geschäftspartner und sichern ihr Geld mittels 2-von-2-Multisig (d.h. beidemüssen unterschreiben).

I Sie haben Angst, dass ihr Geld verloren ist, wenn einem der beiden etwas passiert.I Sie beschließen daher, ihren gemeinsamen Anwalt Charlie um Hilfe zu bitten.I Würden sie eine gewöhnliche 2-von-3-Multisig benutzen, könnten Alice oder Bob gemeinsam mit

Charlie das Geld stehlen.I Stattdessen können Sie das folgende Skript benutzen:

op_if <in drei Monaten> op_checklocktimeverify op_drop <PubKey-Charlie>op_checksigverify 1 op_else 2 op_endif <PubKey-Alice> <PubKey-Bob> 2op_checkmultisig

I Alice und Bob gemeinsam können jederzeit an ihr Geld, wenn sie folgendes Skript benutzen:0 <Sig-Alice> <Sig-Bob> 0

I Nach drei Monaten können Charlie und entweder Alice oder Bob folgendes Skript benutzen:0 <Sig-Alice/Bob> <Sig-Charlie> 1

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel

Page 44: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice><Sig-Bob>00op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — erster Fall

Page 45: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

• 00<Sig-Alice><Sig-Bob>00op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — erster Fall

Page 46: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00• <Sig-Alice>

<Sig-Bob>00op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

<Sig-Alice>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — erster Fall

Page 47: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice>

• <Sig-Bob>00op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

<Sig-Bob><Sig-Alice>

00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — erster Fall

Page 48: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice><Sig-Bob>

• 00op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

00<Sig-Bob>

<Sig-Alice>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — erster Fall

Page 49: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice><Sig-Bob>00

• op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

<Sig-Bob><Sig-Alice>

00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — erster Fall

Page 50: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice><Sig-Bob>00op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else

• 02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

02<Sig-Bob>

<Sig-Alice>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — erster Fall

Page 51: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice><Sig-Bob>00op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif

• <PubKey-Alice><PubKey-Bob>02op_checkmultisig

<PubKey-Alice>02

<Sig-Bob><Sig-Alice>

00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — erster Fall

Page 52: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice><Sig-Bob>00op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice>

• <PubKey-Bob>02op_checkmultisig

<PubKey-Bob><PubKey-Alice>

02<Sig-Bob>

<Sig-Alice>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — erster Fall

Page 53: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice><Sig-Bob>00op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>

• 02op_checkmultisig

02<PubKey-Bob>

<PubKey-Alice>02

<Sig-Bob><Sig-Alice>

00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — erster Fall

Page 54: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice><Sig-Bob>00op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02

• op_checkmultisig

01

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — erster Fall

Page 55: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 56: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

• 00<Sig-Alice/Bob><Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 57: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00• <Sig-Alice/Bob>

<Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

<Sig-Alice/Bob>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 58: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob>

• <Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

<Sig-Charlie><Sig-Alice/Bob>

00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 59: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>

• 01op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

01<Sig-Charlie>

<Sig-Alice/Bob>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 60: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01

• op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

<Sig-Charlie><Sig-Alice/Bob>

00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 61: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01op_if

• <in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

<in drei Monaten><Sig-Charlie>

<Sig-Alice/Bob>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 62: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01op_if<in drei Monaten>

• op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

<in drei Monaten><Sig-Charlie>

<Sig-Alice/Bob>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 63: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverify

• op_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

<Sig-Charlie><Sig-Alice/Bob>

00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 64: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverifyop_drop

• <PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

<PubKey-Charlie><Sig-Charlie>

<Sig-Alice/Bob>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 65: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>

• op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

<Sig-Alice/Bob>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 66: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify

• 01op_else02op_endif<PubKey-Alice><PubKey-Bob>02op_checkmultisig

01<Sig-Alice/Bob>

00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 67: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif

• <PubKey-Alice><PubKey-Bob>02op_checkmultisig

<PubKey-Alice>01

<Sig-Alice/Bob>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 68: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice>

• <PubKey-Bob>02op_checkmultisig

<PubKey-Bob><PubKey-Alice>

01<Sig-Alice/Bob>

00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 69: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>

• 02op_checkmultisig

02<PubKey-Bob>

<PubKey-Alice>01

<Sig-Alice/Bob>00

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 70: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

00<Sig-Alice/Bob><Sig-Charlie>01op_if<in drei Monaten>op_checklocktimeverifyop_drop<PubKey-Charlie>op_checksigverify01op_else02op_endif<PubKey-Alice><PubKey-Bob>02

• op_checkmultisig

01

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Zeitschloss Beispiel — zweiter Fall

Page 71: Blockchain Engineering - Smart Contracts & Bitcoin-Script...I DieProgramme,dieentscheiden,unterwelchenBedingungeneineKryptowährung ausgegebenwerdendarf,müssenaufallenKnotenlaufen,wenneineTransaktion

HinweisDiese Publikation wurde im Rahmen des vom Bundesministerium fürBildung und Forschung (BMBF) geförderten Bund- Länder- Wettbewerbs“Aufstieg durch Bildung: offene Hochschulen” erstellt. Die in dieserPublikation dargelegten Ergebnisse und Interpretationen liegen in deralleinigen Verantwortung der Autor/innen.

Dr. Lars Brünjes Blockchain Engineering 17. Oktober 2019

Hinweis