¶ Begrüßung, Blockzeit und V4V-Aufruf
Herzlich willkommen bei Nodesignal Buchclub. Heute mit deinen Nodes, dem Calso. Guten Abend. Dem Thorsten.
Guten Abend.
Und mit mir, dem Jan Paul. Yes. Los geht's. Buchclub, das heißt, wir lesen weiter Mastering the Lightning Network von René Pickart, Andreas Antonopoulos und Roastbeef.
Roastbeef. Oh, sehr geehrte. Sehr geehrte. Sehr geehrte. Danke. Ja, wirklich.
Das war 'n klassischer Safe. Vielen Dank, Thorsten. Genau, wir lesen Kapitel acht heute. Bei mir ist die Blogzeit, also meine Notes sagt acht zwo sieben null drei acht. Was sagen eure Notes denn? Das kann ich bestätigen. Das sagt meine Note hier auch. Ja, minus bei mir los. Ja, Sehr gut, dann sind wir synchronisiert
und können loslegen. Perfekt. Bevor wir in Inhalte einsteigen, natürlich wie immer der Hinweis, wir sind ein Value for Value Podcast. Falls euch Node Signal einen Mehrwert bietet, würde es uns sehr helfen, wenn ihr beim Hören von Node Signal uns ein paar Satz streamt Und oder uns einen Boost schickt. Mit den Boosts könnt ihr uns auch eine Nachricht schicken, die wir dann in unserem
regelmäßigen Value for Value Folgen besprechen. Würde uns sehr freuen, wenn ihr unsere Arbeit ein bisschen unterstützt. Macht es vor allem, wenn ihr denkt, dass es euch einen Mehrwert bietet.
¶ Recap Kapitel 7
Jo, wir reden heute über das Kapitel acht, bevor wir da einsteigen, Kapitel sieben, Zahlungskanäle.
Wer kann mir denn mal sagen, was wir daraus mitgenommen haben? Ich kann mal eine ganz kurze Zusammenfassung von dem Kapitel machen. Das war ja, ich erinner mich daran, wir haben uns ja schon ordentlich durchgemüht, aber zumindest jetzt dieser ganz, ganz, ganz
Oberflächliche Überblick, den kriegen wir, glaub ich, trotzdem noch hin. Ja, wir haben über Zahlungskanäle an sich gesprochen, wie diese Onchain Erstellt werden, also wie diese Transaktionen, die dann online generiert werden, dann aufgesetzt werden, dass wir dieses dieses zwei von zwei Multi Stick bauen und da dann Diesen Zahlungskanal dann im Bitcoin Netzwerk verankern. Wir haben gelernt, dass es sehr, sehr wichtig ist, dass man zu jeder Zeit als Lightning quasi Kanalpartner
in der Lage sein muss, seine Funds auch wieder onchain zu bringen. Das heißt, da ist es besonders wichtig, dass man diese Commitmenttransaktion immer up to date ab, das ist halt insbesondere dazu wichtig, weil das ist halt diese Sanktionierungsmechanismus, dieses Fairnessprotokoll, was in Bitcoin Oder dafür implementiert worden ist, halt, wie ich's grade schon gesagt habe, jederzeit diese Funds dann wieder zu bringen.
Und Dieser Sanktionierungsmechanismus, den es da dann auch gibt, der dann wiederum dann halt bei betrügen dann im Zweifelsfall dann dazu führt, dass Dass man seine eigenen Einsätze, seine eigenen Funds verliert, führt im Endeffekt dazu, dass das Lightning Netzwerk Off Chain benutzt Werden kann und so prinzipiell alle Teilnehmer einen Anreiz haben, auch ihre Transaktionen nicht onchain zu setteln, sondern offchain zu halten und dadurch prinzipiell sich dann auch teuren Blockspace und Teurer
Transaktionsgebühren zu sparen, als wenn man das, wenn man dann halt jede Transaktion jetzt machen würde. Das ist soweit eigentlich das, was worum's dann im vorigen Kapitel ging.
Wow. Ich bin beeindruckt. Das hätte ich Ja. So nicht zusammen bekommen. Stark, Thorsten.
Gerne.
Ja cool. Dann können wir, glaub ich, ins Kapitel acht springen, ne. Das heißt, Routing in einem Netzwerk aus Zahlungskanälen.
¶ Kapitel 8 - Routing und Wegfindung
Ja, worum geht's? Weiß nicht, wollen wir mal auf die Abbildung acht zwei gucken? Das ist quasi die die zweite Abbildung in diesem Kapitel.
Genau. Vielleicht jetzt noch mal der Hinweis, bevor wir da jetzt in die immer in die Überbilderung reingehen. Wir lesen ja das deutsche Buch, ne? Ja, ich mein, die den Buchclub bisher verfolgt haben wissen, dass wir da die deutsch Sprachige gebunden, also nicht gebundene, die quasi die in Buchform gedruckte Variante verwenden und da ist die Nummerierung der Abbildung eine andere als Das, was wir euch verlinken bei GitHub in der englischen Variante.
Aber nur, damit ihr halt wisst, das ist halt trotzdem das erste richtige Bild in diesem Kapitel. Ja, los geht's.
Jo, was können wir darüber sagen?
Also es wird 'n Szenario aufgemacht. Das ist ja schon mal ganz spannend, dass man nicht einfach von einer Person zur anderen Geld sendet, sondern dass noch Personen dazwischen sind. Was ich hier schon mal ganz cool fand, dass man sich son bisschen am Zahn der Zeit orientiert hat und dann eine Gamerin Beim Zocken unterstützt. Dass man ihr eine Zahlung senden möchte über diverse andere Leute, Weil man keinen direkten Zahlungskanal
zu der Person kennt oder hat. Genau, das ist erst mal so. Ich glaub, das Das ist auch, glaub ich, an der Stelle auch, glaub ich, schon das Wichtigste, ne, dass man halt, dass das Lightning also dass man hier schon direkt dann von vornherein
Die Information rausgeben will, dass man ein übers Lightning Netzwerk Zahlungen senden kann, selbst wenn man keine direkte Verbindung zu einem zu seinem Ziel halt hat, ne. Also dass das Dass hier wirklich dann das Schöne daran ist, dass man dieses über mehrere Knoten oder Notes hinweg Zahlungen weiterleiten kann und nicht jetzt ich mit jedem, mit dem ich eine Zahlung austauschen möchte, dass ich zudem auch wirklich 'n Kanal haben muss. Das ist, glaube ich, hier die elementare Information.
Ja, genau. Zahlende Person ist Alice, wie immer. Die arme Alice gibt immer noch satt aus. Und Dina ist unsere Streamerin, die die Kohle bekommen soll. Und wir sehen dazwischen Bob und Chan Als weitere Glieder in dieser Kette, würde ich's fast nennen. Und ja, daneben sind noch andere Fans aufgelistet. Also es soll darstellen, dass einfach eine größere Gruppe von Leuten über verschiedene Wege miteinander verbunden sind. Genau.
Da jetzt vielleicht dann direkt auch mal an den nächsten Punkt reinzugehen. Wir haben jetzt grade da schon oder ich hatte das grade schon erzählt. Wir versuchen ja Prinzipiell dann, wenn wir eine Zahlung senden wollen, müssen wir ja einen und wir haben keine direkte Verbindung, müssen wir einen Weg über diese unterschiedlichen Knoten zu unserem Ziel finden und da ist dann auch, Was hier der der wichtige Punkt, der hier aufgemacht wurde, der Unterschied zwischen Routing und Wegfindung,
ne. Also die Wegfindung ist erst mal Eigentlich das, was sich, dass ich mir erst mal eine Information über die Gesamttopologie oder über den Aufbau des Netzwerks verschaffen muss, dass es im Endeffekt die Wegfindung, dass ich halt weiß, Okay,
es gibt einen Pfad, der halt von Alice zu Bob, von Bob zu Chan und von Chan zu Dina geht. Das ist der Pfad und das Routing an sich Ist dann eigentlich das, was wir jetzt eigentlich heute besprechen wollen, das ist dann die Art und Weise, wie technisch dann die die Zahlung dann zwischen diesen Partnern dann propagiert wird und Im Idealfall dann die Diener erreicht, wenn die Alice ihre Zahlung versenden möchte oder sendet. Das bedeutet aber, dass dass die Wegfindung
Das eine ist aber das Routing, das andere. Also man es kann einmal es kann also es kann einen Weg geben, aber es heißt nicht zwangsläufig, dass dieser Weg in quasi Just in diesem Moment, wo wo ich diesen Weg auch benutzen möchte, auch verfügbar ist, Weil wir halt vielleicht keine Liquidität haben, weil halt vielleicht der Partner, der dazwischen, den ich für das Routing oder für die für die doch fürs Routing brauche, nicht zur Verfügung steht, weil er irgendwie seine Lightning Note offline gestellt Das sind halt so die die Sachen, wo die man hier dann unterscheiden muss, ne. Also der Pfad kann vorhanden sein, aber ich find halt einfach keine Route, weil halt die Straße gesperrt ist im im Zweifelsfall, ne. Also ne. Also da sone Allergologie zur, wenn ich von hier aus nach Berlin fahren will, kann ich das halt grundsätzlich dann halt machen, wenn ich von die a zwei nach Hannover nehm und von da aus Osten fahre, aber wenn die Autobahn da komplett kaputt ist, dann funktioniert da halt diese Route nicht, ne. Das mal so als Beispiel dann, um's mit dem Straßenverkehr zu vergriffen. Ja, gute Anatomie. Mhm. Jo.
Jo, also ich glaub, das war's auch schon das Wichtigste, ne. Also es geht hier nicht das Thema Wegfindung, also wie finde ich denn jetzt den Pfad von Alice zu Dina. Sondern es geht tatsächlich darum, wie wandert jetzt diese Zahlung von Alice über Bob und Chan zu Dina? Und das bezeichnen wir als Routing und darum geht's jetzt in diesem Kapitel. Genau. Diese Wegfindung, also das, wie der Weg gefunden oder wie diese Informationen übers Netzwerk eingeholt werden, ist hier der Verweis auf Kapitel Zwölf, dass das da dann später dann noch in drei Kapitel weiter oder nee, vier sogar. Wir sind ja erst in acht. Genau. Dass das in Kapitel zwölf kommt.
Jo, und ich würde fast schon direkt in dieses Beispiel einsteigen wollen, das in diesem Kapitel beschrieben ist, weil ich find das eigentlich ganz Ja. Schön gelöst in diesem Kapitel. Das muss ich, vielleicht können wir das an dieser Stelle mal sagen, wir haben uns ja mit den letzten beiden Kapiteln sehr schwergetan. Dieses Kapitel fand ich wiederum sehr gut zu lesen.
Und es ist so strukturiert, dass, Ne, also es wird jetzt das Szenario war jetzt aufgemalt, das haben wir gerade besprochen und jetzt wird eine Analogie verwendet, halt zu etablieren, wie dieses Routing denn stattfinden könnte. Und zwar wird gesagt, Das bei, also 'n Beispiel gewählt und gesagt, okay, wir machen das am Beispiel. Es würden Goldmünzen
von Alice zu Dina geschickt werden, halt über Bob und Chan. So und daran wird jetzt erst mal erklärt, wie das funktioniert und was die Herausforderungen sind und wie man das geschickt lösen kann. Und wir werden dann, glaube ich, sehen, dass später, wenn es dann In die Implementierung geht, wie das dann halt bei Bitcoin im Lightning Netzwerk gelöst ist. Also wie's dann genau umgesetzt ist. Dieses Beispiel erinnert mich irgendwie wieder son bisschen an Rocket Bitcoin, wo er auch dann erst mal mit diesem ganz abstrakten Cookie Token Beispiel angefangen hat. Und dann wird es dann später dann zu echte echtem Bitcoin als Implementierung. Und son bisschen geht das jetzt ja auch so, dass das jetzt so Schritt für Schritt dann wieder aufgebaut wird,
Ja, das Verständnis, glaub ich, dafür zu vereinfachen, als wenn man direkt sagen würde, ja, wir wir knallen jetzt hier die die die Contracts da dann halt rein, die dann da dafür zuständig sind, aber das kommt ja halt dann später dann. Mhm. Deswegen lass uns erst mal bei dem Goldbeispiel noch bleiben. Genau, das Beispiel ist, dass Alice zehn Geldmünzen an Diener schicken möchte, hat aber keinen direkten Weg, sondern muss über Bob und Can gehen. Und Ja, ich glaub, das Erste ist halt die Feststellung, okay, das funktioniert so, dass alles Alice zahlt an Bob, Bob zahlt an Chan,
Zahlt an Diener und damit ist halt sichergestellt, dass Alice an Diener gezahlt hat.
Genau. Darum soll's dann erst mal gehen. Ich fand ganz gut, dass dann auf soner Tonspur eine Art Vertrag geschrieben wurde, also dass man sieht, ich Alice gebe dir Bob Zehn Goldmünzen, wenn Du sie anscheinend übergibst. Da sieht man schon den Aufbau, wo's vielleicht hingehen kann, aber ohne viel vorwegzunehmen, ja, ich fand das erst mal, das ist eine gute Art und Weise, das zu strukturieren. Und da sieht man dann auch immer schnell, okay, wo könnt das jetzt hapern? Warum
Warum sollte Bob das machen zum Beispiel? Das war ja dann auch eine Schwierigkeit, die dann als Erstes aufkam. Warum warum sollte Bob jetzt sich die Mühe machen, das dann weiterzugeben oder vertrauensvoll sein? Genau. Und dann kam man schon schnell auf, ja, es muss 'n kleiner Obolus drin sein, deswegen werden nicht bloß diese zehn Goldmünzen gesendet, Sondern ich glaube, sie entscheidet sich dann zwölf zu senden und jeweils einen für die Mittelsmänner Ja. In diesem Kanal.
Du hast einen Schritt übersprungen, ne? Ja. Weil also das das erste, also der erste Vertrag, der geschrieben wird, ist sagt, ne, ich, Alice gebe dir Bob zehn Geldmünzen, wenn Du sie an Chan weitergibst, sodass Genau. Problem dabei ist, dass Alice nicht sicherstellen kann, dass Bob, sie diese Geldgoldmünzen wirklich an Chhan weitergibt.
Mhm. Und das heißt, ne, der Bob könnte damit mit dem Geld abhauen oder einfach nicht weitergeben oder was auch immer. Sie kann ja nicht darauf vertrauen, dass sie's macht. Und jetzt sagt sie halt, okay, dann machen wir eine Bedingung. Und zwar, ich, Alice erstattet dir Bob zehn Geldmünzen, wenn Du mir nachweisen kannst, dass Du an Chan gezahlt hast. Und dieses gleiche Konstrukt Baut halt dann, ne, macht dann also diesen gleichen Vertrag,
konstruiert dann Bob auch mit Chan, dass er nämlich sagt, hey, Chan, Ich gebe dir zehn Goldmünzen, wenn Du mir nachweisen kannst, dass Du Geld an Diener geschickt hast.
Genau. Das ist halt da dann wichtig, dass man einfach dann ja, eine Absicherung halt halt war sonst im Zweifelsfall. Wenn wir bei dem ursprünglichen Vertrag halt bleiben, hätte sagen hätte der Bob ja sagen können, ja, ja, mach ich ruhig, mach ich ruhig. Tschüs. Tschüs. Wir sehen uns. Tschüs. Ja, und dann ist der Rockpool perfekt. Und das ist halt dann wichtig, dass da dann,
Dass dass man sich da auf die Seite schon mal vertraglich an sich absichert, ne. Und dann zieht sich das halt durch die ganze Kette, wie Du's grade schon gesagt hast. Und dann Kommt der Punkt, den Carl so gerade schon angeführt hat, dass mit den, dass man den Anreiz halt hat, dass dass man quasi nicht betrügt, man halt dieses Fairnessprotokoll,
¶ Analogie Goldmünze
also einen Teil davon auch, ne, dass man halt 'n Anreiz schafft für die Teilnehmer in dieser in diesem Routing Ablauf so. Du das machst, dann kriegst Du sogar noch was dafür. Also Du kannst auch noch was behalten. Mhm. Und dann sieht die Sache natürlich schon wieder anders aus, wenn man da halt dann für seine, Ja, seine geleistete Arbeit oder sein sein sein Routing im Endeffekt dann entlohnt wird in irgendeiner Form.
Ja. Und das ist dann zumindest ja eigentlich schon mal der Physischer Schritt, der jetzt da komplett dann abgebildet ist, dass dann Alice zwölf Gordon an Bob bezahlt. Das sieht man jetzt auf Abbildung acht Punkt fünf. Wir springen jetzt ziemlich schnell, aber Ich glaube, das können wir durchaus bei dem bei dem Punkt jetzt machen. Bob zahlt elf Goldmünzen an an Chan und Chan zahlt die zehn Goldmünzen, die Alice Ursprünglich an Diener zahlen wollte dann an Diener und jeweils Bob und Can behalten eine von den von den Goldmünzen für sich, was dann die Routing Gebühr entspricht, die sie dann behalten können. Dann ist vielleicht noch wichtig der Punkt, den Jan Paul angesprochen hat, dazwischen, der würde mal wieder mit Quittung belegt. Also das ist vielleicht noch 'n wichtiges Wort, was wir dann noch öfter brauchen.
Also es wird jede Transaktion jeweils quittiert in irgend 'ner Form.
Richtig, genau.
Genau, ich glaub jetzt die Frage ist halt, wie gelingt der Nachweis, ne? Also das war ja die die Forderung war ja, wenn Du mir nachweisen kannst, also wenn, ne, Alice Sagt, ich zahle Bob, wenn Bob mir beweisen kann, dass er an Changem gezahlt hat. Genau, und dafür gibt's jetzt halt eine sehr geschickte Lösung und Die funktioniert so, dass Diener sich ein Geheimnis ausdenkt
und genau. Und ja, jetzt wird's 'n bisschen moderner als die Goldmünzen, aber Wir Bitkomer wissen natürlich, damit was anzufangen. Sie bildet dann einen Hashtag von diesem Geheimnis, ne. Und das Geheimnis ist halt in der Regel eine ziemlich große Zahl und sie hascht das jetzt einmal mit zum Beispiel zweihundertsechsundfünfzig. Und diesen Hash gibt Dina an Alice.
So, und dann haben wir auf der einen Seite bei Dina ein Geheimnis Und bei Alice ein, der sich auflöst, ne. Also wenn ich das wenn ich das Geheimnis kenne, kann ich ja auch das den, bilden, das ist ein fester Algorithmus, der Schatz war mal sechsundfünfzig. Genau, so. Aber Alice kann jetzt noch nicht aus dem Hash
auf das Auf das Geheimnis schließen, ne. Das ist ja quasi Eigenschaft dieser Einwegfunk Wie heißt die? Ein Nicht nur Ist richtig, ist richtig. Einrichten richtig. Eigentlich, ich denke immer die Einbahnstraßenfunktion. Na ja, Kommt auch kommt wahrscheinlich auf dasselbe raus. Ja, ja. Genau, also sie kann aus dem aus dem Hash kann sie nicht auf das sogenannte pre Image, also auf das Geheimnis von Diener schließen.
Genau. Und wenn das etabliert ist, dann können wir halt versuchen, diesen Nachweis, der ja gefordert war, den zu bringen. Soweit klar?
Genau. Also für mich für mich passt das so weit. Also Ja. Ich mein, ja, man benutzt im Endeffekt hier die Kniffe von Kryptografie, also in dem Fall dann von von, ja, eine Hash Funktion in dem Fall, die, wie Du's grade super gesagt hast, eine Einwegfunktion ist. Das heißt, wir wir haben irgend 'n Ursprungs, Wert, Zahl,
Zeichenfolge, wie auch immer, Schmeißen die dann halt in der Hasch Funktion. Bei Bitcoin ist es sehr häufig die Chart zweihundertsechsundfünfzig, das heißt, wir bekommen dann zweihundertsechsundfünfzig bit langen Exadezimal String quasi da hinten raus. Also die wir können vorne quasi die komplette Amazon Datenbank reinschmeißen und wenn wir das alles hasschen, kommt trotzdem hinten nur eine zweihundertsechsundfünfzig
Folge hinten raus. Also die die die Inputgröße ist egal, aber hinten kommt halt immer eine gleich 'N Hexadezimalstream raus, der halt immer gleich lang ist. Genau. Und was das das Gute ist, man, es gibt halt, Stand jetzt, keine Möglichkeit von einem, Quasi von dem von dem Hash wieder zurück auf den Ursprung zu schließen, weil darauf basiert im Endeffekt unsere moderne Kryptografie und die Verschlüsselungsmethodik oder beziehungsweise
diese die Verfahren, dass das halt einfach nicht möglich ist. Genau.
Das heißt, ich brauche Im Endeffekt dieses diesen Ausgangswert, rauszufinden, dass es wirklich ja dieses Geheimnis eben, Wie dieser Ash erzeugt wurde. Also wenn Alice am Ende diesen Ausgangswert bekommen hat, dann weiß sie, Wenn sie es nicht über Umwege bekommen hat, dann weiß sie, dass die Zwischenhändler
diesen vertrauensvoll weitergegeben haben in irgendeiner Form. Kann man das jetzt schon so sagen? Ja. Ja, so Oder was spreche ich nicht. Ich glaub, also also Du erinnerst dich vielleicht, ne, die wir haben ja sone son son Vertrag mit Bedingungen gebaut, ne, der ja sagt, ich Zahle dir Bob irgendwie zwölf Goldmünzen, wenn Du mir nachweisen kannst, dass Du elf an Chang gegeben hast. Ja. Jetzt geht's halt genau diesen Nachweis. Und der Nachweis ist, Dass Bob das Geheimnis,
ne, aufzeigt Kennt. Und das Ja. Genau, das kennt und das passt natürlich zum zu dem, den den Alice hat, Ne. Ja. Ne, und das ist quasi der Nachweis so und das das funktioniert in der ganzen Kette. Das heißt, dieses Geheimnis, dass Bob jetzt der Alice gezeigt hat, das hat er vorher von Chun bekommen, weil er mit Can den gleichen Vertrag hatte, wenn Du diesen Nachweis lieferst, ne, dann zahle ich dir elf Geldmünzen, so. Und Can wiederum hat das Geheimnis von Dina direkt bekommen, genau, Genau, also weil er, ne, gesagt hat, okay, kannst Du mir das Geheimnis sagen? Er vergleich das. Okay, das passt jetzt mit diesem, den ich habe. Also zahle ich, schon, ne, die zehn Goldmünzen an an Diener.
Wichtig ist, glaub ich, hier an der Stelle noch mal zu erwähnen, dass Diener, die ja die Zahlungsempfängerin
ist, ihr Geheimnis bildet, daraus diesen Hesh bildet. Und dieser Hash, diese Information geht zuerst an Alice über einen anderen Kanal, also jetzt dann im Zweifelsfall über 'n Browser, über per Mail, per Messenger, wie auch immer. Und mit dadurch, dass sie ja dann den den Hash hat, der des des der der Ziel Hash ist, der im Endeffekt dann diese gesamte Transaktion dann halt durch Durchfließt oder oder verwendet wird, kann sie im im
Zweifelsfall den ersten Vertrag mit Bob aufsetzen, weil sie ja dann festlegen kann, Du musst mir einen musst mir das Geheimnis zu diesem Hash geben. Und mit dieser Information geht Bob dann an zu Chan und Chan hat ja dann auch dann von Alice dann dieses den Hash bekommen Und kann darum wieder den Vertrag auf aufsetzen. Und dann geht der Can
zu Dina selber und sagt, hier, wenn Du mir dein Geheimnis gibst von deinem Hesh, Dann oder von von ja, das Geheimnis zu deinem Hash, dann geht die Zahlung im Endeffekt dann dann ihren Weg, ne. Und wenn diese Runde einmal komplett gemacht ist, Dann kann ja prinzipiell dann das, sind dann die Bedingungen in dem Sinne dann erfüllt, dass dann Dina loslegen kann und ihr Geheimnis veröffentlichen kann.
Das ist eigentlich ganz interessant, ne, dass Also Dina schickt diesen Hash an Alice und der wandert dann von Alice über Bob und Chan wieder zurück zu Quasi zurück zu Dina und erst dann geht die Zahlung los und läuft von Dina über Can zu Bob und dann zu zu Korrekt. Zu Alice. Also Genau, also so funktioniert es. Auch wenn Alice Diener zahlt, ist die Zahlung quasi, läuft von hinten ab. Vom Ende, vom Empfänger her läuft die Zahlung ab.
Das fand ich auch spannend. Also das ja, dass jeder eigentlich aus seinem Portemonnaie zahlt und nicht von dem, was am Anfang von Alice losgesinnt wurde. Also für für eine Sekunde oder Millisekunde, wie auch immer es dann am Ende gelöst ist, ist halt steht halt immer der Der Letzte in der Kette bei dem vorherigen in der andersrum. Springt halt in die Bresche, wie auch immer. Also Du gibst gibst dem dem nachfolgenden Kredit.
Ja, nenn ich so nicht so richtig eigentlich, ne. Weil Du Du zahlst ja im Moment, Du legst ja im Endeffekt deine eigenen Gelder in diese Transaktion rein. Genau, ne. Aber aber das, was Du gerade gesagt hast, ist 'n sehr wichtiger Punkt. Das ist ja auch das Thema Liquidität im Lightning Netzwerk. Bob, Chan,
¶ Der Treuhänder
genau, Bob, Bob und Chan müssen jeweils über diese Höhe dieser dieser also diese mindestens diese zehn Goldmünzen ja oder In dem Fall werden sogar elf und genau elf. Elf. Nee. Nee. Elf und zehn. Elf und zehn verfügen, damit sie überhaupt Teil dieser Route sein kann. Hätten Sie die nämlich nicht, Dann könnten Sie nämlich das dieses Konstrukt gar nicht darstellen, weil
Ja, absolut. Nämlich dann jetzt der nächste wichtige Punkt, der dann bei Abbildung acht Punkt sechs reinkommt. Das ist dann die weitere Ergänzung wieder noch 'n bisschen mehr zu unserer Implementierung im Lightning Netzwerk, dass wir da, dass diese Gelder nämlich bei einem Treuhandder hinterlegt werden müssen. Das heißt, die Gelder In der Zeit, wo diese Transaktion stattfindet, gesperrt, also stehen dann halt nicht für andere Zahlungen zur Verfügung.
Und das dann vielleicht auch noch mal 'n relevanter relevanter Punkt, dass die dann halt da eingelegt werden müssen bei dem Treuhänder. Also dieser Treuhänder ist ja sinnbildlich jetzt erst mal, dann Steht ja für die für die Contracts, die nachher noch kommen. Aber an der Stelle ist es ja jemand, der vertrauenswürdig ist, aber darüber entscheiden kann, ist das, was da passiert ist,
So pack gelaufen, wie's sein soll, ne. Also irgendjemand, der dann halt da sone Richterfunktion hat. Wobei wir jetzt, glaub ich, aufpassen müssen, ne. Also das diesen Treuhänder brauchen wir in der Analogie, also in dem Beispiel der Goldmünzen, die verschickt werden, aber im Lightning Netzwerk haben wir keinen Treuhänder, ne. Den gibt's doch. Was Wer ist denn Die HDLC, die die
die HTLCs. Das sind ist der Treuhänder. Quasi das Bitcoin Skript, was in dem HTLC verankert ist. Das ist der Treuhänder oder sinnbildig gesprochen der Treuhänder. Aber das kommt ja gleich erst.
Okay, lass uns das gleich noch mal, lass uns den Punkt gleich noch mal aufgreifen. Vielleicht bringen wir erst mal das inhaltlich, versuchen wir es aufzuarbeiten, weil ich würde dir da im Moment nicht Aber vielleicht können wir Okay. Können wir das weiterlesen.
Ich glaub, von der Bezeichnung her ist es zu zu fern, aber lass uns gleich genau Aber für die für diese Goldmünzen Analogie geht's nicht ohne. Da kennt man's ja auch nur so, wenn man irgendwas bezahlen will, was in der Ferne liegt, dann brauchst Du halt irgendeine Trittpartei und hier wird jetzt erst mal beschrieben, dass wir davon ausgehen für dieses Modell, dass dieser Treuhänder von allen, dass allen denen vertrauen können Und dass man son Drittparteirisiko
erst mal ausschließt, nur damit man jetzt dieses Beispiel erst mal akzeptieren und verstehen kann. Und dann wird auch schon der Hinweis gegeben, wir kommen gleich da drauf,
Dass das dann nicht mehr nötig ist. Genau. Es gibt auch eine wichtige Bedingung, die wir in diesen Vertrag einbauen müssen, nämlich die Befristung der Zahlung. Und es ist zwar Und es ist so, dass Bob bekommt jetzt in dem Beispiel vierundzwanzig Stunden Zeit, Alice das Geheimnis vorzulegen.
¶ Zeitliche Begrenzung
Chanel wiederum bekommt nur Zweiundzwanzig Stunden Zeit, das Geheimnis vorzulegen und Dina bekommt zwanzig Stunden Zeit, das Geheimnis vorzulegen. Ja, sehr gut. Genau. Kannst Du erklären, warum? Ja, also ich glaub ein ein wichtiger Punkt ist, wenn es keine Zeitbegrenzung gibt, dann könnte Bob ja hingehen und sagen, So, ja klar, also ne, ich könnte jetzt ne diese Zahlung zwar veranlassen, aber Du hast mir ja nur eine Gebühr von einer Goldmünze gegeben. Ich hätte aber gerne drei Goldmünzen,
ne. Also dass er quasi Dadurch, dass Alice darauf angewiesen ist auf die Kooperation von Bob, ne, dass er ihr nämlich das Geheimnis vorlegt, erst dann kann sie quasi die Zahlung vollziehen. Und so hat halt Bob ein ein Druckmittel gegen gegen Alice. Er kann sich quasi ihrpressen und sagen so, ja, ist mir doch egal. Wir haben vielleicht nur eine Goldmünze vereinbart, aber ich hätte jetzt gerne zwei Goldmünzen.
Und das zu verhindern, glaube ich, ist ein Aspekt, warum man diese zeitliche Begrenzung einbaut, ne. Weil Und der also der Trick dabei ist, wenn diese Zeit abgelaufen ist, dann schlägt die ganze Zahlung ja fehl. Und das ist halt auch noch mal son wichtiger Aspekt Jetzt hier bei der Begutachtung von Zahlungen, ne, es gibt halt nur zwei Zustände.
Entweder die Zahlung findet statt, sie erfolgt oder sie schlägt halt komplett fehl. Das wird halt sichergestellt, ne, dass dadurch, dass wir halt eine zeitliche Begrenzung haben dieser quasi einzelnen Zahlungen zwischen Alice Bob, Chan und Dina.
Genau. Und da ist vielleicht auch noch mal wichtig, dass die ja dann sich je nachdem, in welcher Position man in der Kette sich befindet, dass die Zeiten da dann durchaus unterschiedlich sind, ne. Oder halt, je näher man prinzipiell ja am Empfänger ist, desto niedriger ist dieser Dieser zeitliche Werden ist die Schwelle
dann niedriger ist und dann, je weiter wir wieder zu Alice zurückkommen, desto höher wird dieser Wert. Also Alice hat prinzipiell den Den längsten Zeitraum und Bob hat dann halt 'n bisschen Kürzeren und Chant noch 'n bisschen Kürzeren und das war's, ne? Hat Dina? Nee, Dina hat Doch Dina hat auch Ja Dina zahlt ja im Endeffekt an Chan, deswegen Es gibt ja eigentlich nur drei Nee, Dina zahlt an Dina, aber Dina hat Verträge. Nee, Can zahlt an Dina, aber Dina Gibt's also drei Verträge?
Genau. Es gibt, genau, es gibt zwischen Dina und Can, Can und Bob Bob und Alice. Es gibt drei Verträge. Genau. Also da In dem Beispiel ist, glaub ich, ja vierundzwanzig Stunden bei Alice und Bob. Bob zu Chan zweiundzwanzig Stunden und Can zu Dina
zwanzig Stunden. Ja. Ja, genau. Haben wir das Risiko schon ausgeschlossen, dass Dann, ich glaube, wer ist der letzte Chan in der Runde? Genau. Dass er alle Transaktionen
auslöst. Haben wir das damit jetzt abgeschlossen oder ich, kommt das dann erst später. Das kommt Nee, das funktioniert in der Analogie nicht. Das funktioniert erst Ach so, das gibt's bei dem Bereich. Die im Netz, okay. Implementierung. Da wird das nach gelöst. Aber ist grade unser Buch, dass mir das aufgefallen ist.
Mhm. Okay. Hier an der Stelle wird das ja dann der Treuhänder, glaube ich, dann regeln. Genau, genau. Ich hatte ich jetzt auch kurz den Gedanken. Der Treuhandler, der sorry, der hat ja, der sieht ja oder weiß ja, für wen das Geld bestimmt ist. Also der würde jetzt dann die Zahlung dann, genau, der würde die Zahlung, die für Bob bestimmt ist, jetzt nicht Can geben oder Dina oder so.
Cool, dann haben wir's, glaube ich, die Analogie haben wir dann durchgesprochen, ne, oder?
¶ Fairness-Protokoll in LN
Ja, und am Ende diese Analogie kommt Auch oder am Ende von diesem Unterkapitel kommt dann auch relativ klar der Satz, wir ersetzen den externen Treuhänder durch Smart Contracts, Die ein Fairnessprotokoll implementieren. Und das wollen wir jetzt aufdröseln, ne? Das das ist das führt uns auch zu diesem Begriff Fairnessprotokoll wieder. Den hatten wir schon mal in den vorherigen Kapiteln. Will Kann den jemand erklären, bevor ich lese und das versuche?
Das das Fairness Protokoll selber oder was meinst Du? Genau, also das Fairness Protokoll ist quasi, ich hab immer das Beispiel im Kopf, dass wir ja gleich Ganz zu Anfang des Buches hatten, ne. Wie war's? Also wenn irgendwie, ne, ich mach für meine Kinder eine große Portion Pommes und wenn ich möchte, dass sie das, Ne, fair unter sich aufteilen, dann teilt der eine die Portion auf zwei Teller und der andere verteilt die Teller. Und so ist halt, sind beide incentiviert.
Der, der zuerst die Portionen auf die Teller verteilt, das gleich zu verteilen, weil er ja am Ende das nicht kontrollieren kann, was sein Geschwisterkind macht bei Teller Zuordnung und sagt dann okay, dann mach ich lieber in beide Teller gleich viel und es kommt raus, dass beide gleich viel auf dem Teller haben. Danke für die Erinnerung.
Genau und jetzt hier bei dem Thema Routing, so wie ich das jetzt verstehe, bei dem Thema Routing durch Zahlungskanäle geht es darum, haben drei Anforderungen oder drei Eigenschaften, die, ne, dieses Protokoll erfüllen muss und das ist einmal, dass es ein vertrauensvoller Betrieb ist.
Das heißt, ich muss nie irgendwie einer meiner Gegenparteien, also Alice muss nicht Bob vertrauen und Bob muss nicht Chan vertrauen, sondern wir, Es reicht uns, dass wir das Protokoll kennen und somit ein Vertrauen in das Protokoll aufbauen können. Das ist mit vertrauensfreiem Betrieb Gemeint. Dann das Thema, dass die Zahlungen atomar sind. Und atomar heißt halt, ne, sie sind entweder vollständig ausgeführt Oder schlagen halt komplett viel. Und das Dritte war
Multi Hopp. Ach so genau. Das soll halt, ne, die Sicherheit dieses Fairnessprotokoll soll sich von Ende zu Ende, also von Ellis bis zu Dina erstrecken erstrecken. Es soll halt irgendwie an keiner Stelle irgendwo 'n Risiko begeben, ne. Wir wollen halt immer auf der ganzen Route wollen wir sicher sein, dass die Route auch
quasi das tut, was sie was wir Vorhaben, was wir tun wollen, nämlich jetzt in dem Fall eine Zahlung über verschiedene Zahlungskanäle hinwegsenden. Ich glaub, die Unterscheidung oder hier das Merkmal ist dann noch, dass es quasi Über die über die mehreren Hops hinweg genauso ist, wie wenn, als würde man diese Implementierung halt zwischen Partner a und Partner b machen, ohne irgendwelche Zwischensteps, ne, dass halt Die gleichen Sicherheitsmerkmale
dann daran drauf angesetzt sind, wie jetzt halt bei 'ner direkten Zahlung zwischen zwei Pears. Mhm. Gut, dann kommen wir zu Nee, kommen wir da schon zu den HTLCs?
¶ On-Offchain Txn
Ja, ich würd noch einen Punkt noch mal aufgreifen, der in dem Buch Triemot, den hast Du auch in der Einleitung als also in dem Recap von Kapitel sieben hast Du den auch noch mal genannt, nämlich der Vergleich zu Onchain versus Off Chain, ne. Also noch mal die Betonung, Weil jeder Teilnehmer jederzeit seine Off Chain Transaktion als On Chain Transaktion veröffentlichen kann, kann halt niemand betrügen, Das wird halt dadurch sichergestellt. Und wir bevorzugen halt die Off Chain Transaktion,
weil sie einfach kostengünstiger ist als die Off Chain Transaktion. Das heißt, Also eine Off Chain Transaktion ist zum Beispiel die Zahlung von Bob an Chan ist hier damit gemeint, ne. Das ist eine dieser Off Chain Transaktionen. Es ist nicht die Gesamttransaktion von Alice zu Diener gemeint, sondern Unter anderem, ne, diese Teiltransaktionen
von Bob an Chan in dem Routing von Alice und Dina. Genau, das war mir noch mal wichtig, das aber Ja, macht ja auch Sinn, weil zwischen Alice und Dina keine Kanäle bestehen und dementsprechend haben sie auch keine
Offline zueinander in dem Sinne, ne, weil die Verbindungen sind immer nur zwischen den Kanalpaten und dadurch, dass Dina und Alice keine Kanäle zueinander haben, sind sie auch, wie gesagt, haben Sie halt auch keine Online Verbindung zueinander. In dem Sinne würde dann da auch dann, wär's dann egal, es ist immer nur diese Verbindung zwischen den einzelnen PLC untereinander. Jo.
Dann können wir, glaube ich, in die Vollen gehen, ne. Jetzt geht's richtig los. Ja, jetzt wird's spannend. Jetzt wird's spannend. Jetzt kommen die
¶ HTLCs
Hashtag time lockt Contracts, ne?
Genau. HTLCs. Oh ja. Hier steht ja durchaus das Tage vom Lightning verwendete Fairnessprotokoll heißt, entsprechende HTLCs und nutzt halt das, was wir jetzt gleich besprechen werden. Aber da ist jetzt dann für mich die Frage, Warum glaubst Du, dass es nicht der Treuhänder ist, dass das Weil in dem Satz vor dem Fairnessprotokoll stand nämlich, ersetzen den externen Treuhänder durch Smart Contracts, die ein Fairnessprotokoll implementieren und lassen Sie uns dieses Kapitel aufdröseln.
Und auf der anderen Seite steht, heutzutage ist dieses Fairnessprotokoll in HTC TLCs implementiert. Mhm. Ja. Also für mich der Treuhand, der prinzipiell sind diese HTLCs, weil da die Skripte drin sind, die im Endeffekt dann diese dieses Fairnessprotokoll Steuer. Der Unterschied ist für mich,
in dem Goldmünzenbeispiel Funktioniert es nur, wenn Alice zwölf Goldmünzen an einen Treuhänder übergibt, der sie aufbewahrt, bis quasi das, Ne, die ganze Kette des Vertrages zurückgelaufen ist durch die Auflösung des Geheimnisses. Ja. Und erst wenn das aufgelöst wird, so ist die Rolle des Treuhänders in dem Beispiel Peert erst dann gibt der Treuhänder
die Münzen an Bob. Und das muss auch so sein in dem Beispiel der Goldmünzen, weil Bob nicht darauf vertrauen kann, Dass Alice ihm tatsächlich die zwölf Goldmünzen gibt. Er kann erst darauf vertrauen, wenn er sagt, ich hab einen Treuhänder, bei dem das hinterlegt ist und dem halt vertraue dem, von dem ich ausgehen kann, dass er mir diese zwölf Goldmünzen dann gibt, die in dem Vertrag vereinbart sind.
Und hier bei den Gibt es keinen Treuhänder, denn die Geldflüsse finden quasi, die finden koordiniert statt nach eben deinem Fairnessprotokoll. Es ist nicht so, dass ich erst Geld, also dass Alice jetzt erst irgendwie Geld irgendwo deponieren muss, bevor
Bob ihr quasi den Nachweis liefert, hey, ich hab die Zahlung geleistet, also kann ich mir jetzt hier das Geld Da holen, wo Du's deponiert hast. Das passiert halt nicht. Das Geld ist immer bei bei Alice, bis halt quasi der der das Der HTLC erfüllt ist.
Indirekt. Also ich weiß nicht, ob wir da jetzt schon zu weit vorgreifen, aber ich glaube, also indirekt ist das schon der Fall, weil die SATZ oder die Goldmünzen, wenn wir jetzt hier wieder in den HTLC Bereich gehen, die werden ja in diesem HTLC eingesperrt zu dem Zeitpunkt. Und erst, wenn Der Bob entsprechend ja dann diesen Nachweis liefern kann, kann Bob die Zahlung, die Alice an Bob leistet, ja auch für sich claimen?
Also die also das es ist ja definitiv so, dass die SATS während eine Transaktion quasi ausgeführt wird, also diese Normalerweise dauert sone Transaktion ja 'n paar Sekunden, aber es kann nur durchaus sein, dass da zwischendurch dann halt irgendwelche Routing Probleme oder so was gibt. Das sind diese HTLCs definitiv gesperrt. Hab ich bei uns bei der Notsignal lighting Not schon 'n paarmal gesehen, dass dann einfach dieses Satz nicht zur Verfügung stehen.
Ich ich versteh deinen Punkt. Ich find den auch gar nicht gar nicht schlecht, Muss ich sagen. Also ne, ich würde trotzdem noch den Unterschied machen, es ist was anderes, ob ich irgendwie eine Drittpartei.
Ja, ja, absolut, ja. Also genau, der sagt der Spargel. Das als Trauerhändler zu fungieren oder sage, ich hab hier ein Protokoll implementiert, indem ich für eine kurze Zeit auf Also in dem Protokoll quasi die die Satz Locke. Das so ist es ja wahrscheinlich, ne. Die sind Genau. Diese fünfzigtausend Satz, also das ist das Beispiel hier in dem Buch, es werden fünfzigtausend Satz geschickt. Diesen fünfzigtausend Satz kann ich in der Zeit, in dieser, in der dieses Fairnessprotokoll
abläuft, kann ich die nicht anderweitig einsetzen. Genau. Okay. Ja. Wenn von von dem Aspekt, da stimme ich dir zu, wir haben da keinen keine quasi Trustbürcy Party noch, die noch dazu ist. Die gibt's da halt nicht mehr, aber dass Die Funktion, die dieser Treuhänder an sich funktioniert, unabhängig davon, ob der als als Third Party existiert oder nicht, ist ja dann trotzdem in diesen HTLCs abgebildet.
Absolut. Ja, würd ich dir zustimmen. Genau. Gut, fühl mich mal nur halt, ne. Dann sind wir fein. Dann dann Fairnessprotokoll zweiter Absatz. Ganz am Ende die Innovation kryptografischer
Fairnessprotokolle erlaubt Es uns den Treuhänder durch ein Protokoll zu ersetzen. Also es ist schon son bisschen von beidem, ne. Es ist jetzt einfach 'n Protokoll, was die Funktion eines Bräjen das eingenommen hat. Okay. Genau und ich glaub, da sind wir uns jetzt auch einig, oder Thorsten? Ja, absolut. Ja, absolut. Ja. Also passt. Super. Genau.
Jetzt wird's auf jeden Fall kompliziert. HTLCs,
was was ist denn das? Warum denn? Wie? Wir haben's jetzt kurz oft erwähnt und was so Hashtag time lockt contracts. Also für alle, die jetzt dem Englischen nicht so mächtig sind. Hesh haben wir schon gerade erwähnt, haben wir gerade son bisschen erklärt, was das ist. Und Time lockt heißt zeitlich gesperrt und Contract ist der Vertrag. Also gehäschte, zeitlich gesperrte Verträge.
Genau. Ja. Das ist jetzt auch der die Autoren gehen da jetzt auch das Schritt Oder das Beispiel peu à peu durch beziehungsweise bauen das dann auf. Ich würde jetzt dann mal als Ausgangsbasis, dass wir die Abbildung acht Punkt acht nehmen, damit wir da alle d'accord sind. Mhm. Ich Bildung acht Punkt acht nehmen, damit wir da alle d'accord sind. Ja, Sekunde. Seite zweihundertfünfundzwanzig im Buch. Acht Punkt acht sind wir schon? Okay. Wir sind ja jetzt bei Hashtag Log Contracts. Ja, stimmt.
Weil das sind drei das füllt Seiten. So diese Einleitung zu zu und dann kommen noch so Abwicklung. Jetzt sehe ich auch Jan Paul, dass Du den Punkt online
reingebracht hast. Ich hab mich echt getraut zu fragen. Genau. Ich hab mich echt nicht getraut zu fragen, ehrlich gesagt, weil ich dachte, springen wir dann zu sehr, aber es hat mich echt son bisschen gewurmt, auch als ich dann durchgelesen hatte und hinten weiter war, dass ich nie so richtig gecheckt hab, an welcher Stelle erklärt wurde, Wieso ich auch wieder
gehen kann an jeder Stelle. Aber ich glaub, an dem Punkt hatte ich mir noch mal 'n Fragezeichen gemacht und ich würd die Frage dann stellen, wenn wir da hinkommen. Lass uns gerne da weitermachen zu mit dieser Grafik. Ich wollt dich nicht zu sehr rausbringen, Thorsten. Also acht acht. Alice erhält einen Zahlungshash von Dina. Richtig, genau. Das haben wir ja teilweise ja eben sogar schon 'n bisschen erklärt, ne, dass halt dann dieser
Zahlungshash von Diena generiert wird, also der der Secret wird generiert, daraus wird der Hach generiert und dieser Zahlungshash wandert dann über einen anderen Weg dann zu Alice. Und Mit dieser Information ist Alice dann in der Lage, dann die Zahlung aufzubauen, ne. Wir hatten's eben schon gesagt, sie kann jetzt Bob dann einen Vertrag vorlegen, der dann in Form von diesem HTLC System jetzt implementiert wird.
Dass Bob zwölf Goldmünzen bekommt, wenn er Quasi den das Secret zu dem Hash liefern kann, den Alice von Dina bekommen hat, ne. Und das Gleiche macht dann auch Bob mit Chan und Chan mit Dina direkt. Das ist jetzt dann erst mal der Weg und genau. Wir haben jetzt hier dann als als Information haben wir jetzt das Zahlungs preimage. Das ist jetzt in dem Fall Diese Zeichenkette DINer Secret, glaube ich, oder wie das zum Beispiel hier benutzt wird und der hätte Ist einfach eine große Zahl, ne? Genau. In dem haben wir ja jetzt große Zahlen, dann genau. Genau. Beispiel hier ist es
so wie 'n kurzer, wie rum, ne? Also das noch mal vielleicht noch mal das Beispiel noch mal zu verdeutlichen, dieser dieser Zeitpunkt, wenn Dina das Den Hash schickt, ist der Moment, wo die Alice
bei Dina eine Invoice oder eine Lightning Zahlung anfordert. Und In dieser Lightning Zahlung ist dann wahrscheinlich dann auch in irgendeiner Form, das kommt, glaub ich, jetzt auch noch 'n späteren Kathiopital, hatt ich gesehen, ist dann halt verschlüsselt auch dieser Hashtag dann halt drinnen von diesem Secret. Und den der wird dann dafür benutzt, dann diese Zahlung halt aufzubauen und wahrscheinlich auch noch Routinginformationen
sind da vielleicht auch noch irgendwo drin und und solche Sachen dann. Genau. Das ist dann einmal dann der Austausch von dieser Hesh Information.
Genau. Ich wollt noch mal betonen, dass Also die Rechnungsanforderung von Alice and Diener und das Zurückschicken des Zahlungshashes
außerhalb des Bitcoin- und Lightning Protokolles stattfinden kann, ne. Kannst Du dir per E-Mail austauschen, über eine Webseite austauschen. Das hat erst mal mit Lightning gar nix zu tun, ne. Das ist nur also ja, gar nix zu tun, aber ja. Also wie Die beiden da sich untereinander diese Rechnung und den Zahlungshash austauschen, das ist hier nicht Teil der Kommunikation oder des Rootings, so.
Genau. Ja, jetzt kommt dann hier in dem auf Seite zweihundertsechsundzwanzig im gedruckten Buch dann ein Beispiel von diesem Bitcoin Skript, was in diesem h c h h HTLC implementiert ist. Da ist jetzt die Frage, gehen wir da jetzt drauf ein oder machen wir's, wie's im Buch gemacht wurde, dass dieses Beispiel dann einfach auseinandergedröselt
da an dieser Art und Weise dann dieses Beispiel nach und nach dann aufzubauen. Das macht, glaub ich, mehr Sinn als jetzt dann, wenn ich da im Detail dann sich diese Ich muss auch sagen, der der Teil danach hat mir mehr geholfen,
Das einmal gesehen zu haben. Ja, okay. Also ich das ist trotzdem wichtig, das mal zu sehen, wie das aussieht. Genau. Das ist im Endeffekt ja Bitcoin Skript dann, wie dann auch Transaktionen im Off-Chain, nee, On-Chain, auch dann implementiert sind und da dann ja, die Skripte dann dafür sorgen, dass man seine UTXO's ausgeben kann oder nicht und das Gleiche findet dann offensichtlich
im Lightning Netzwerk genauso statt, da auch da, dass da auch Bitconskript genutzt wird, diese Verträge zu schließen. Ja, muss ja, damit Du es On-Chain veröffentlichen kannst, baust Du das halt quasi Off-Chain baust Du diese, nee, Du baust immer die Transaktionen ja schon auf. Du weißt, die Transaktion existiert
und sie kann halt On-Chain veröffentlicht werden, wenn irgendwie was schief gehen sollte, ne? Oder wenn so einer der Teilnehmer in diesem Routing sich dazu entscheiden sollte, das zu machen. Das das ist voll die gute Erklärung gewesen. Das war nämlich jetzt irgendwie auch für mich, Calso hat gerade auch so Mindblowing Moment, das sind grade ganz witzig. Ja. Aber das ist gut. Ja, das macht macht natürlich absolut Sinn, dass man da diese quasi, dass es halt so
Übergangslos, sag ich jetzt mal, zwischen Off-Chain und On-Chain wandern kann, weil die Logik
quasi überall die gleiche ist oder zumindest die Scriptsprache alles identisch ist und auch so genauso dann angewandt werden kann. Nee, also Sie tauschen die On-Chain Transaktionen untereinander aus, aber veröffentlichen sich halt nicht. Ja. Mehr ist es nicht. So. Ja, genau. Die machen sie fertig
und brauchen aber immer oder spring ich jetzt, aber Du Du brauchst halt immer, sie bezahlbar zu machen, brauchst Du aber dieses preimage, ne. Also Du brauchst dieses Secret. Oder springe ich jetzt grad schon mit irgendeiner Information, aber Du Du bereitest quasi die Transaktion komplett vor, aber kannst sie nur dann publishen. Also Du Du brauchst dieses eine Secret, quasi, dass es eine valide Transaktion wird, die die Miner dann auch in den Bock schreiben kann. Ja, nicht unbedingt. Du Du das
Hashtag Timelock Contracts, ne, also Timelock. Das ist ja dann beziehungsweise das t unters l in dem Fall. Das ist ja dann der der Part, der dann dazu zuständig ist, dass dann der Ursprünglicher Zustand dann wiederhergestellt werden kann beziehungsweise dass der Zustand onchain gesettlet werden kann, der bevor dieser Quasi dieser einen Transaktion dann halt stattgefunden hat, dann dann quasi wieder onchain gesettelt wird, ne? Also Ja. Ich weiß nicht, ob das ob ich das jetzt richtig erkläre.
Also ich glaub ich glaub, es ist besser, wir gehen jetzt noch mal das das Thema noch mal durcheinander, dann wird das, glaube ich, klarer, wenn man dann jetzt noch wirklich mal kennt, wie der Dieser Timelock da dann greift.
¶ OnChain vs OffChain
Also, wir haben jetzt grade festgestellt, also diese HTLCs werden als Transaktion, als Bitcoin Onchain Transaktionen ja konstruiert, Weil ich immer wieder gehen können muss. Die Frage, die sich mir jetzt stellt, ist, Wie wird das Protokoll quasi
durchlaufen offchain? Und ich glaube, es funktioniert genauso wie onchain diese onchain, nee, es funktioniert halt eben über diese Skripte, über diese On Chain Skripte. Und das ist wichtig, in meinen Augen zumindest, dass man sich darüber im Klaren ist, okay, Wenn jetzt, ne, also jetzt in dem Beispiel von diesem Zahlungs pre Image und Hashtag Verifikation, wie läuft das ab? Ja, also ich bekomme, Ne, ich ich lege das Secret auf den Stack, dann kommt ObShart zweihundertsechsundfünfzig,
ne, also damit wird das Secret quasi gehascht und dann hab ich zweimal, nämlich den Hashtag des Secrets und den Hashtag, den ich vorher hatte, liegt aufm Stack und dann kommt Ob Equal. Nämlich der Vergleich, sind die beiden gleich? Und wenn die beiden gleich sind, so, dann ist diese Bedingung erfüllt. Richtig. Und das ist dann Läuft das läuft so im Protokoll läuft das auch so ab, ne?
Genau, das ist ja im Endeffekt ein Teil von diesem HTC Bitcoin Skript, ne, der der der jetzt da rausgezogen wurde. Das das stimmt. Ja. Und damit wird der dann im Endeffekt dann sichergestellt, dass dann Das war ja dann dieser Teil, den wir eben in diesem vereinfachten Vertragswerk hatten, wo dann Alice festgelegt hat, Ich gebe dir deine Zahlung, wenn Du mir das Secret zu diesem Hash liefern kannst. Und das ist genau das, was das, was Du grade beschrieben hast in in Bitcon Script implementiert.
Bob liefert im Endeffekt das Secret, legt das das Secret auf den auf den Stack, hasht es, Hat den Hasch, den er ja vorher von Alice bekommen hat, den sie ja haben will. Und wenn der halt mit dem übereinstimmt, das was er grade gebildet hat, dann ist alles tutti. Dann kann die Zahlung auch ausgeführt werden. Dann ist die Bedingung erfüllt, dass der HTLC ausgeführt werden kann und Bob auch seine Zahlung bekommen dann von Elles.
Ah, jetzt wieder son Aha Moment, son Klick Moment. Das heißt, erst wenn ich diesen wenn Chan jetzt diesen Erzeugen kann. Also und das kann er nur, wenn er das hat. Genau, er kriegt das ja von DIN. Dann kann die Transaktion genauso aussehen, wie sie aussehen muss, damit sie Ausgeführt wird, weil dieses Equal, also dieser Abgleich funktioniert immer nur dann, wenn der richtige Hesh drin ist, Der auch vorher schon
von Dina eingegeben wurde. Genau. Ja, ich glaub, also es geht jetzt die, es geht ja darum, wie ich dieses HTLC
konstruiere. Du Ihre. So und der erste Bestandteil ist halt, dass ich den Hashtag bekomme. Ich hab also den Zahnarzt bekommen. So. Und Genau, genau. Alice Sagt jetzt, Bob, pass mal auf, wenn Du mir das Geheimnis lieferst und ne, dass der, also die die Charts mal sechsundfünfzig Funktion das auflöst, also da so, dass Ob Equal einen WA zurückgibt, ne, das ist quasi der der Hash, den ich den Alice an Bob gibt.
Und jetzt kennt Bob ja das Zahlungshas. Das hat er jetzt grade von Alice bekommen. Diesen Zahlungshas kann er nehmen und das Gleiche mit Chan wiederholen Und sagt, wenn Du mir das Secret gibst, das mit ObShart zweihundertsechsundfünfzig diesen Zahlungshash ergibt,
Dann ist es fein, dann hast Du diese Bedingung erfüllt. Darum geht's jetzt erst mal. Wie geht dieser Zahlungshash, den Diener an Alice geschickt hat, wie geht er durchs Netzwerk? Und das wird passiert halt, In den in dem halt dieses Konstrukt, diese, ne, das was hier in genau, was hier unten steht, ne, also Secret, ob Shar zweihundertsechsundfünfzig, hash, ob equal, was da beschrieben ist. Das ist quasi Bestandteil des Bitcoin Skriptes, der mitgenommen wird über die Route.
Ist das klar, was ich hier erzähle? Wie ist das? Absolut. Absolut. Ich glaub, es macht's auch noch einfacher, wenn man dann eine Seite weit tablett hat auf Seite zweihundertachtundzwanzig und da dann in die Abbildung acht Punkt neun mal reinschaut. Sieht man im Endeffekt genau das, was Du grade auch beschrieben hast, dass dieser dieses zweihundertsechsundfünfzig,
dann dieser, dann erst von Alice Bob geht und dann von Bob zu Can und dann von Can zu zu Dina wieder. Und alle implementieren im Endeffekt diesen Spezifischen Hecht, den Diener irgendwann mal aus ihrem Secret generiert hat und der ist quasi relevant für diese komplette Also das ist das ist eigentlich der der zentrale Ankerpunkt für alle, ist dieser Hasch. Und den haben ja dann dann dann alle im Zweifelsfall dann dann zur Verfügung.
Und Erst wenn der ja bei Dina angekommen ist wieder, dann weiß Dina, okay, die Route wurde aufgebaut. Es gibt quasi eine Route, die gefunden werde. Also es gibt eine Route von Der Person, der ich die Rechnung geschickt habe, in dem Fall war's Alice und dann kann Dina theoretisch die Route, das Secret veröffentlichen in dem Fall, was sie ja dann gebildet hat Und somit dann auch die Zahlungen dann wieder wieder dann über Can zu Bob zu Alice dann auflösen, da dann halt dann diese Zahlungen dann wieder Ja, im Endeffekt effektiv auszuführen. Ist das klar, Call so? Oder? Welche Stelle, also wirklich im Skript jetzt,
ermöglicht das Ausführen der Zahlung, wenn ich das Secret kenne. Ich glaub, das ist
das ist da gar nicht Bestandteil dessen. Es geht erst mal nur darum. Ach so, okay, komm. Erst mal wollen wir nur schauen, wie geht das, also ne, Ja. Zahlungshash, wie transportier ich den von Alice über Bob Can zu Dina? Und das mach ich halt, ne, indem ich sage, hier, also
es gibt einen quasi einen zentralen Bestandteil in dieser Bitcoin in dieser In diesen Bitcoin Transaktionen, in diesen Off Chain Transaktionen, die zwischen Alice und Bob, Bob und Chan, Chan und Dina erstellt werden. Und dieses Kernelement ist eben 'n Hash Zu diesem Zahlungshas und der Vergleich. Das ist, mehr ist das nicht, das ist das Kernstück davon. Diese diese quasi drei Informationen, also ein zwei Operatoren und Zahlungheld, das ist das, was durchgegeben wird. Ist das klar?
Ja, das ist klar. Genau. Ach so, vielleicht wird's so klarer. Alice formuliert die Bedingung, wann sie an Bob zahlt und zwar, wenn Bob Dieners Geheimnis Auf
also liefern kann, Ja. Dass sich mit dem Zahlungs, also mit dem Zahlungs, mit dem Zahlungs, gleich ist. Mhm. Also Alice formuliert eine Bedingung an Bob. Ich zahle dich, wenn Du mir das Secret lieferst, das halt auf diesen Zahlungsherr. Das ist ja genau das, was wir eben in dem in dem einfachen Beispiel hatten, das ist diese Quittung. Wenn Bob die Quittung liefern kann, die im Endeffekt dann jetzt in der Form von diesem
quasi von diesem Hash beziehungsweise von dem Secret, der zum Hash gehört oder andersrum liefern kann, Dann ist das die Quittung, dann weiß auch Alice, alles klar, Bob hat diese Zahlung geleistet. Ja, richtig. Und weil er selber ja dann auch seine Zahlung ausgeführt hat, weil er die Informationen von Schandt vorher bekommen hat. Zigtausendzweihundert
SATs, glaub ich, die Ja, hundert SATs pro Person. Von Edistan. Mhm. Vielleicht hier auch noch mal das Beispiel in dem Beispiel, jetzt wird Edles fünfzigtausend SATs schicken Und jeweils hundert SATs sind Route, die Transaktions- oder Routinggebühren, die Bob beziehungsweise Can dann jeweils bekommen. Genau. Und dann wären wir eigentlich an der Stelle, dass Diener dann ihr Secret veröffentlicht und dann Richtung Can propagiert oder ihm die Information weitergibt. Hier, das ist mein Secret.
Auf der Basis kannst Du jetzt dein deine Zahlung, weil Can hat ja mit Dina einen Vertrag, wo drinsteht, Dina liefert mir zu dem diesem Hash das Secret. Dadurch, dass Dina das Secret ja gebildet hat, kann sie das natürlich auch sehr, sehr einfach liefern und Dina hat natürlich auch ein Interesse daran, das Secret liefern, weil sie will die fünfzigtausend SATs haben, die sie die
Chan Diener in ihrem Vertrag versprochen hat. Deswegen hat sie 'n Interesse daran, das freizugeben? Also macht sie das? Und wenn sie das macht, wird die Zahlung zwischen Can und Dina theoretisch freigegeben oder wird dann wird dann freigegeben. Dann geht's ja weiter. Dann hat Can das Secret und kann wiederum sich die fünfzigtausend Einhundert Satz von Bob holen, weil er jetzt ja dann auch Bob Bob gegenüber beweisen kann. Hallo hier, ich hab jetzt das Secret von Dina bekommen.
Bitte gib die fünfzigtausendeinhundert Satz frei. Und dann nach Bob, genau das Gleiche, weil er ja auch wieder das Secret bekommen hat von Can. Zu Alice, bitte gib mir die fünfzigtausendzweihundert Satz frei, die Du mir versprochen hast, wenn ich dieses Secret liefer und Voilà. Wenn alle das liefern können, dann ist im Idealzustand die Zahlung erfolgreich, weil alle zu jedem Zeitpunkt dann die Das Secret da liefern können und dann ist die Kette eigentlich komplett.
Dann hat in dem Sinne dann auch dann die Diener ihre fünfzigtausend SATs von Alice bekommen Und Alice hat effektiv fünfzigtausendzweihundert SATZ bezahlt, wo dann halt diese zweihundert Satoshi Ruding Gebühren mit drin waren. Ich glaub, hier ist nur wichtig zu verstehen, dass
Chan bereit ist, den Kanalzustand mit Dina anzupassen, zu aktualisieren, weil er weiß, dass er von Bob quasi diesen Betrag wieder also wiederholen kann, ne.
Plus die Richtig, genau. Gebühren, die auf die sie sich geeinigt haben. Aber das ist, also die die die Bereitschaft von Chan Er wächst dadurch, dass er weiß, dass er von Bob quasi denselben Vertrag plus x plus ein kleines 'n kleinen Obolus von Bob bekommt. Das ist hier, glaub ich, noch mal wichtig zu sagen, weil er darauf vertrauen kann, dass das Fairnessprotokoll
das sicherstellt, dass weil dieses dieser Vertrag So definiert es in diesem Vertrag steht drin, wenn ich das liefer, bekomme ich das und da kann auch keiner betrügen in dem Fall und deswegen macht er das dann auch und hat er dann entsprechend durch die durch die Routing Gebühren, die sind dann wiederum der Anreiz, dass das überhaupt alles stattfindet, dass er da überhaupt dann diesen diesen Aufwand jetzt betreibt, diese Verträge zu schließen. Das ist 'n guter Punkt. Genau. Dann
auch noch find ich wichtig, was hier dann als Also ich würd jetzt zu den zu der Signaturbindung gehen, wenn das für euch okay ist. Ja. Okay, perfekt. Ja, genau. Das Problem ist jetzt in der jetzigen Situation, die wir jetzt vorher hatten, war, dass wenn Chan ja theoretisch den Das Secret von Dina bekommt, könnt ihr theoretisch auch den HTLC von Bob
¶ Signaturbindung
und von Alice einlösen oder beziehungsweise oder Dina könnte theoretisch den Den die HTLCs von allen dreien einlösen dann, ne, und müsste das gar nicht veröffentlichen, ne. Also es ist jeder, weil Dina ja prinzipiell die Person ist, die diesen Diese Information halt immer hat und die anderen haben sie halt noch nicht. Aber sie könnte theoretisch, wenn es keine Signaturbindung geben würde, alle drei HTLCs für sich claimen. Ob das jetzt Sinn macht, sei jetzt mal dahingestellt, aber Oh.
Das wäre jetzt in wertzigen Zustand. Nee, nee, also das war halt genau die Frage, die sich mir gestellt hatte, ne. Also was passiert, Wenn Dina, also wenn das Fairness Protokoll jetzt nicht so implementiert wäre, wie es jetzt implementiert ist, sondern wenn Dina in der in der Lage wäre, drei HTLCs Gleichzeitig einzulösen.
Also würde sie dann quasi drei Zahlungen von fünfzigtausend Satz plus x erhalten? Na ja, Wenn Sie die Adresse, die Zieladresse verändern könnte, ja, aber und das ist genau der Punkt, glaube ich, dass das mit festgelegt wird, Wer das Geld bekommt. Das ist eigentlich ganz echt ziemlich spannend, weil das ist ja nicht beschrieben. Na ja, keine Frage. Also sie Da steht da nicht, da steht nur, ja nö, das dann wär's nicht vertrauensfrei, also muss es bis behoben werden. Aber wäre das nicht sogar der Fall, was dann passieren würde? Es also ich ich tu mich sehr schwer damit, das vorzustellen. Die Routen sind ja Genau, also ich glaub, es ist Ich glaub, ich kann's mir nur vorstellen, dass es nur Onchain dann
dann funktionieren könnte. Offchain landen die Transaktionen ja dann trotzdem bei den
anderen, für die die ursprünglich diesen Vertrag geschlossen Ja, aufstehen passiert gar nichts. Also nur wenn ich das publische und sagen kann, hier, ich hab das Geheimnis, führe alle drei Transaktionen aus Und lass mir diese zukommen. Also es geht immer wieder darum, dass und das ist hier auf Seite zweihunderteinunddreißig in der Mitte über dem Frettchen, was das ist. Hier das modifizierte HTLC Script.
Okay. Da geht's jetzt darum, also wie das Problem gelöst wird, ne? Genau. Ja. Da steht er also Die Frage war steht er nicht. Genau. Die Frage war, was passiert, ne, wenn es eben diese Lösung mit der Signaturbindung,
auf das wir gleich Sprechen kommen, was denn dann passieren würde. Das war Na ja, genau das Gegenteil eben, dass diese Adresse nicht festgelegt ist. Also das stimmt, das ist nicht klar funktioniert. Ich glaube, also das, was ich mir vorstellen könnte offchain funktioniert, würde es gar nichts funktionieren, das würde würde nichts nichts
verändern. Aber onchain könnt ich mir vorstellen, dass Diener dann alle drei HTLCs off onchain zetteln könnte und prinzipiell dadurch dann für die anderen Teilnehmer Transaktionsgebühren auslösen könnte. Also die würden trotzdem auf Adressen von den jeweiligen Leuten landen, aber Ach so, das ist das Aber sie könnte trotzdem dadurch in Anführungszeichen Force
Quasi sinngemäß sind es ja dann Force Closse, weil die Kanäle dann geschlossen werden, weil wir ja onshaper setteln. Würden wir da, könnte sie da durch Force Closse Auslösen. Das wäre mal die, so könnte das, was ich mir vorstellen könnte, was dann passiert. Ah, okay, ja.
Klingt klingt sinnvoll. Aber okay. Frage an die Zuhörer. Das ist mal wieder eine Stelle, darauf hinzuweisen, dass wir ein Value for Value Podcast sind. Also wenn ihr diese Frage beantworten könnt, würde es uns sehr helfen an die drei, vier Zuhörer, die jetzt sehr beantworten könnt, würde es uns sehr helfen an die drei, vier Zuhörer, die jetzt selbst noch zuhören.
Genau, schickt uns gerne einen Boost. Ihr könnt uns helfen, in die Diskussion mit einsteigen, aber natürlich auch unseren Podcast damit unterstützen. Es würde uns sehr helfen. Damit qualifiziert ihr euch auf jeden Fall schon bei der nächsten Podcast In der Buchclub Folge dabei zu sein, wenn ihr das uns beantworten könnt. Wir müssen ja hier 'n paar Anreize schaffen. Sehr gut, finde ich gut. Aber hier steht doch, das HTC Skript muss eine zusätzliche
Bedingung enthalten, die den HTC
an einen bestimmten Empfänger bindet. Genau. Genau. Das das ist die Lösung, so wie's implementiert ist, aber Jan Pauls Frage war hypothetisch, wenn es nicht so wäre, wie würde würde dann Bitcoin oder die, wie würden würden die HTLCs dann reagieren, wenn Dina missbräuchlich diese drei HTLCs claimen würde mit ihrem Secret? Wenn es diese Bindung nicht gäbe, natürlich ist das jetzt nur eine hypothetische Überlegung, weil es nicht so implementiert ist, weil wir diese Signaturbindung
haben, aber wenn es nicht so wäre, dann, Das ist die Frage, die Jan Paul sich gestellt hat. Ach so, weil das nicht Ich verstehe, weil weil diese Information,
dass es an einen bestimmten Empfänger gebunden ist, Impliziert ja nicht, dass das Geld nur zu diesem Empfänger geht, sondern eben, wie Du sagst. Also es kann auch einfach nur sein, dass der Empfänger es nicht entscheidet und dann wird diese Vieh ausgelöst. Also genau, das eigentliche Problem wird nicht beschrieben. Ich versteh's. Jetzt hab ich dich noch mehrfach für Thorsten.
Ja, also ich weiß nicht, ob Jan Paul das verstanden hat, aber Ja, ja. Also hier steht nicht, dass der dass Diener das Geld sich selbst senden kann, sondern es steht einfach gar nicht da, was Es ist nicht passiert, wie es würde, weil's einfach nicht nie so implementiert wurde. Tierwohl, deswegen ist es 'n rein theoretisches Problem. Mhm, genau. Also ich ich nehme jetzt den Autoren oder dem Autor dieser Stelle jetzt ab, dass Tatsächlich theoretisch möglich wäre, dass die hat alle drei HTLCs eingelöst werden können, was halt wir uns fragen ist, was passiert dann? Aber Ne, Thorsten hat jetzt eine Erklärung
angeboten. Wir wissen nicht, ob's richtig ist, dass dann halt damit quasi sie So Forst Closes erzwingen könnte, ne, weil sie halt dann drei On Chain Transaktionen veröffentlichen könnte. Mhm. Vielleicht ist das so, aber das unter Vorbehalt, also. Lass uns doch vielleicht jetzt an dieser Stelle doch mal schauen, okay, wie stellen wir denn sicher, dass so was nicht passieren kann? Und da kommt jetzt das Thema Signaturbehinderung.
Genau. Also ich fand's nicht so kompliziert. Also Bob muss jetzt nicht nur das Geheimnis vorlegen, sondern auch eine Signatur zu seinem öffentlichen Schlüssel. Das kann er ja machen. Also er kann ja eine eine gültige Signatur liefern und die kann ich ja anhand des öffentlichen Schlüssels, den Bob aus seinem Private Key Erstellt hat, dann auch überprüfen.
In und den sollten idealerweise nur Bob haben und nicht in dem Fall Diener oder Can, damit die sich da unser konstruiertes Beispiel von eben haben, da irgendwie reinzusneaken, weil dann könnte man's wahrscheinlich trotzdem könnte das theoretische Problem, was wir haben, trotzdem dann sein, wenn Dina den Private Key von Bobette.
Okay, ja. Aber also
Weil dann ist er auch Doch das ist dann das ist Alarmstufe rot, absolut. Dann aber dann dann wäre Problem trotzdem wieder vorhanden, was wir eben
skizziert haben. Ja, okay, aber das das geht ja dann, also also dann würde ja auch schon das ganze Thema mit 'nem Secret, 'nem Zahlungshash Zu generieren wär ja dann auch schon, also genauso problematisch.
Nee, nicht unbedingt, weil der der hash, der wird ja dann zu der Laufzeit erzeugt, dann wann es wann er benötigt Und den den public oder Private Key von Bob könnte sich Dina ja irgendwie vorher durch aus irgendwelchen Datenbanken gezogen haben und Bob läuft einfach weiter so, oh ja, hier ist alles ganz private. Aber die da.
Hä? Nee, nee, hä? Der Also der öffentliche Schlüssel ist doch öffentlich. Ist doch egal. Der muss ja aber
Ja, aber das nachzuweisen, muss Bob ja sein mit seinem private Schlüssel nachher dann privaten Schlüssel dann eine Signatur liefern. Genau. Und wenn Dina aber den privaten Schlüssel von Bob hat, könnte sie theoretisch ja ihren Namen von Bob signieren. Das ist das, was sie mir Ja, ja, aber was ihr worauf ich hinaus wollte, das ist ja dann ein, 'n ähnlich schwerwiegendes Problem, wie wenn Bob
das Secret von Diener kennt. Dann kann er nämlich quasi Schon am ersten Hopp kann er sagen, ach hier Alice, pass mal auf, ich hab das Secret, ich kann dir das liefern. Absolut. Ja, also, ja, genau. Aber das ist jetzt, also, ja, also das ist 'n ziemlicher Edge Case. Was heißt Edge Case? Es ist halt, ne, wenn halt Geheimnisse geleakt werden, ja okay, sorry, so funktioniert das halt leider. Wir müssen 'n paar Geheimnisse für uns behalten. Da musst Du gut drauf aufpassen.
Das stimmt, das stimmt. Ja, irgendwie, vielleicht lassen wir diese theoretischen Überlegungen mal und gehen wir 'n bisschen weiter. Aber ist interessant, das mal zu besprechen. Absolut. Also Das sind ja die Sachen, die nicht im Buch drinstehen. Ja. Genau. Genau. Das heißt, Du hast es gerade beschrieben, Bob muss seinen privaten, also sein seine Deine Signatur
liefern und damit dann abgeglichen werden kann, dass derjenige, der diesen HTLC in dem Fall von Ellis dann claimed auch wirklich auch Bob ist. Na, also das packt dann Alice dann mit mit dann in den in den Vertrag mit rein, also mit in den HTLC und dann kann Bob dann in Kombination mit dem Secret, der er von Dina bekommen hat, Plus seinem aus seinem privaten Schlüssel gebildeten öffentlichen Schlüssel, dann den
hat er jetzt je Claim. In dem Sinne dann sich die fünftausendzweihundert Satz auszahlen lassen.
Jo. Jo. Wollen wir uns noch angucken, wie das wie das auf 'nem Stack abgearbeitet wird oder wollen wir das überspringen? Kannst Du das gerne machen. Nee, glaub ich. Kannst Du das lassen? Ja, weiß ich nicht, ob das 'n Mehrwert bringt, also. Ich glaub, vielleicht ist da nur interessant zu sehen, dass ne, also dass diese Bedingung jetzt
den Hash herum gebaut wird, ne. Also Seht ihr das? In der Mitte ist ja dieses ObShard zweihundertsechsundfünfzig und dann ob Equal und das ist jetzt nicht nur ob Equal, sondern ob Equal verify. Und drumherum findest Du noch Bob Signatur, Bobs öffentlichen Schlüssel und Ob Jaxick.
Also ne, diese Bedingung, das ist das Einzige, worauf ich hinauswill, diese Bedingung wird quasi In diesen, den wir vorher durchs Netzwerk propagiert haben, noch mit, also nicht vorher, sondern zu dem, den wir durchs Netzwerk propagieren,
Da bauen wir drum herum noch diesen die Signaturbindung, wie das hier heißt. Also ne, die Forderung, dass eine gültige Signatur Passend zu Bobs öffentlichem Schlüssel mit eingebaut werden muss als Bedingung. Ja. Find ich gut. Was ich noch wichtig fand, jetzt seh ich's grade, an welcher Stelle das war Dem Frettchen hier in der Mitte,
dass die Endung auf
geändert wurde und dass damit dieser Stack nicht Tour oder false zurückgibt am Ende, sondern die gesamte das gesamte Skript schlägt fehl, wenn eine Bedingung nicht erfüllt ist an dieser Stelle. Das glaube ich noch mal 'n ganz wichtiger Punkt, also ob man das jetzt durchgeht oder nicht, aber ich hatte mich immer gewundert, warum das wichtig ist, aber das ist ja diese atomare Sinn, dass dass diese gesamte Transaktion, alles, dieses gesamte Skript dann abgebrochen wird für alle. Also das
Alles dieses gesamte Skript
dann abgebrochen wird für alle. Also es gibt dann keine Auszahlung für niemanden, wenn eine dieser Bedingungen nicht erfüllt wo eben dieses Verify am Ende steht. Gut. Genau, also hier in dem konkreten Beispiel ist es ja, ne, also ob Equal Verify, es wird halt Der Hash, der aus dem Secret generiert wurde, mit dem Zahlungsherr verglichen. Und wenn das wahr ergibt, dann wird halt fortgeschritten.
Wenn's Falsch ergibt, also wenn der Hash des vermeintlichen Secrets und der Zahlungshash nicht übereinstimmt, dann wird er an der Stelle einfach abgebrochen. In dem Fall, dass halt Der Hasch Vergleich positiv ausgeht, also wahr ergibt, ne. Diese beiden Hasches sind gleich. Dann sind halt auf dem Stack noch zwei Dinge übrig, nämlich einmal Bob Signatur und Ob's öffentlicher Schlüssel und dann kommt noch der Operator Operator Ob Checksick
und der prüft halt nur, also der prüft halt, ob die Signatur zum öffentlichen Schlüssel passt Und gibt dann halt wahr oder falsch zurück. Ja, und dann kann Bob das claimen. Genau. Und das ist funktioniert, ne. Also das ist jetzt die Vertragskonstruktion zwischen Alice und Bob. Und natürlich gibt's Das das Äquivalent dazu zwischen Bob und Chan und Chan und Dina. So konstruieren wir das halt. Yes. Und
Ja, genau. Dann kam eine ein ein Abschnitt, der mich etwas überrascht hat an dieser Stelle. Den hätte ich später erwartet, aber Es geht das Thema Hashtag Optimierung.
¶ Hashoptimierung
Ja,
ganz kurz vielleicht nur Genau, da hatten wir auch schon eine gorking Bitcoin auch mal drüber ne, dass da auch viel bei steht, glaube ich, auch im Buch drin, dass im Bitcoin selber auch viel diese zwei geschachtelte Hash Funktionen, ne, also ersten Charts von hundertsechsundfünfzig und der Hash, der da rauskommt, wird dann mit dem, was war das? RIP
MD? RIP MD hundertsechzig.
Hundertsechzehner, das heißt, wir der Hash wird wesentlich kürzer und dadurch, ja, haben wir Ich glaube, bei Grokking Bitcoin hat er ja beschrieben, war das dann so die, war das ist das sone guter Kompromiss zwischen Sicherheit und Quasi Performance in oder Anführungszeichen, platzressourcen
Genau. Schonenden Arbeitens, ne. Weil wir haben ja einen kürzeren, also weniger bite, die dann der herrscht darstellen kann, Ist prinzipiell ja dann auch dann die Möglichkeit, diesen Hashtag zu finden, also das Preimage zu dem Hashtag zu finden, wahrscheinlicher als bei einem längeren Hashtag, ne, weil wir prinzipiell
weniger mögliche Zeichen haben. Macht das überhaupt Sinn? Hab ich überlegt gerade, macht das Sinn? Ja klar, weil die Menge der Pre Images aufm kleineren Raum abgebildet wird, ne. Start zweihundertsechsundfünfzig hat halt, was sind das, zweiunddreißig und
Genau, ja.
RipMD hundertsechzig hat halt nur zwanzig Und deswegen ist es theoretisch ist es einfacher, das Pre Image von einem RIP MD hundertsechzig zu finden als von einem Schad zweihundertsechsundfünfzig.
Genau, aber durch die Sendung. Durch das Doppelte, ne, erst Staats neunzehnhundertsechsundfünfzig und dann noch herrschen neunzehnhundertsechzig haben wir halt, also sind wir relativ sicher, dass das Pre Image Nicht gefunden werden kann und das Ergebnis ist, dass es halt optimiert ist, weil halt der Hasch nur zwanzig Byte lang ist und damit quasi kostensparender ist in einer
Weil er weniger Platz verbraucht. Genau, wo wir wieder beim Thema UTXO Management sind. Transaktionsgrößen hatten wir in den letzten Wochen in den anderen, an anderen Formaten durchaus besprochen, ne. Also da kommt das Thema halt einfach wieder, dass da dass man dann halt mit solchen Kniffen da dann Optimierungen dann macht, einfach den Speicher in den Blöcken und in den Transaktionen
so klein wie möglich zu halten, dass einfach mehr Transaktionen oder mehr Speicher dann in einem Block dann aufgenommen werden können oder mehr mehr Transaktionen besser gesagt, die kleine einfach sind. Genau. Und noch 'n zweiter Punkt ist hier unter Hash Optimierung drin. Und das hatten wir auch in dem in der Folge mit Merge einmal ganz kurz
angesprochen, aber hier ist es noch mal, finde ich, deutlich erklärt. Wir sprechen ja immer von diesen Operatoren, ne? Ob Hash hundertsechzig, ob Schad zweihundertsechsundfünfzig, Ob Equal, ob Equal verify und so weiter. Es gibt eine Menge von Operatoren. Und es ist jetzt nicht so, dass ne in dem Transaktionsskript Da irgendwie ob Equal nehmen, dass das da drin steht, sondern es gibt quasi eine Tabelle,
wo die ob Codes gematcht sind, ne. Das heißt also, Zum Beispiel hat der Ob Code ob Equal verify hat, ne, hat den Wert achtundachtzig, sodass Du halt in der Transaktion Dann sehen kannst, wenn da achtundachtzig steht, dann ist das, dann übersetzt sich das in ob Equal verify. Und das Bitcoin Skript weiß halt, okay, ich muss also an dieser Stelle den Operator Equal Verify ausführen und macht dann halt die vorgesehene
Operation. Genau und dadurch, dass es halt, ne, diese Obcodes sind halt immer nur ein Byte, Ne, zum Beispiel achtundachtzig und sind deswegen relativ, also nicht relativ, sondern sind halt sehr platzsparend. So, und dann hast Du halt, Ja, hast Du dir halt, weiß nicht, ob Du sie jetzt unter Optimierung warst, aber da wird einfach dargestellt, okay, das ist halt recht kurz diese Operatoren, die Obcodes
Oder nehmen wenig Platz ein, so rum. Ja, wär besser als da, wenn man da ja, wirklich diesen Obcode wirklich dann als Character reinschreiben würde oder so was, aber gut. Ja. So ist es ja nicht codiert, so funktioniert ihr Bitcoin ja sowieso nicht. Das ist ja alles dann mit dieser Exadezimal String. Das haben wir jetzt ja auch durchaus schon Mit der Folge mit Merch auch gesehen, wie da diese Transaktionen unter der Haube auch wirklich aussehen. Gut, dann kommen wir zu den
¶ Timelocks
Timelogs. Das ist dann auch das Letzte, was dann noch in den HTLCs noch fehlt. Das hatten wir eigentlich eben schon größtenteils besprochen. Auch in dem Anfangsbeispiel war es ja durchaus auch so, dass Diese HTLCs so aufgebaut werden oder diese Timelogs so aufgebaut werden, dass je näher wir zum Empfänger kommen, sind die Timelogs, Die im Fall von, wenn irgend eine Not, da wenn irgend 'n Zahlungsteilnehmer irgendwie ausscheiden sollte, offline gehen sollte, dass dann diese HTLCs
wieder geunlockt werden Und der ursprüngliche Zustand vor der Transaktion, prinzipiell im Zahlungskanal, aber auch dann die On Chain Transaktionen, die dann gebildet werden, wieder so auf den Ursprungszustand
oder wiederhergestellt werden, wie's halt vorher war. Und dafür sorgt dann dieser Time Contract. Wenn halt eine bestimmte Blockhöhe erreicht worden ist, dann kann diese HTLCs Bis wieder aufgelöst werden und dann ja, ist der HTLC prinzipiell auch wieder entsperrt und kann dann von Bob oder von den jeweiligen Teilnehmer dann wieder im Fall der Fälle, wenn der Kanal dann ja nicht mehr weiter betrieben werden sollte, dann halt online gebracht werden und dann Die Funds oder die Einlagen von den
jeweiligen Leuten dann wieder, ja, in die eigene Verwahrung geholt werden. Oder? Also bei mir warst Du zwischendurch kurz weg. Ich weiß nicht, ob ich den ob ich die ganze Erklärung mitbekommen hab. Also ich hab mir da jetzt nur gemerkt, Also diese HTLCs bekommen ein Ablaufdatum und das Ablaufdatum ist definiert als eine Blockhöhe. Genau. Und es wird halt Bei der Einlösung des HTLCs wird geprüft, ob die angegebene Blockhöhe
noch nicht erreicht ist. Also die quasi die Die Blockhöhe in dem HTLC muss kleiner sein als die aktuelle als die aktuelle Blockhöhe. Und damit ist ja dieser Timelock geschaltet, ne? Also und sobald die Blockhöhe größer ist, Dieses HTLC bricht dann halt einfach ab und dann passiert nichts. Richtig. So, das ist der eine Teil. Was mir noch nicht ganz klar ist, ich glaub, da kommen wir auch später, kommt noch 'n späteren Kapitel, dass, also dann werden diese HTLCs,
die werden irgendwie aufgelöst, oder? Die müssen ja irgendwie, Die bleiben ja nicht bestehen. Also ich behalte ja nicht irgendwie 'n HTLC, der abgelaufen ist, behalte ich ja nicht auf meiner Lightning Node. Genau, der wird ja dann dadurch, wenn ja dann Timelock dann abgelaufen ist, das ist im Endeffekt ja dann der die die Information für den HTLC. Okay, die es ist quasi nichts passiert.
Und wenn natürlich alle alle Notes, die dann daran beteiligt sind halt beziehungsweise an einem HTLC sind ja immer zwei Notes beteiligt, weil die Kanalpartner dann dran ist, Dann ist ja dann, wenn beide weiterhin sich einig sind, dass wir offchain bleiben, dass das Kanalguthaben
Sich wieder in den Zustand zurückbewegt oder beziehungsweise in dem Kanalzustand bleibt, wie er vor dem HTLC war, ne. Und das andere ist dann entsprechend natürlich dann auch, wir haben ja gesagt, Wir lösen von Dina Richtung Alice auf, aber wenn zwischen Bob und Chan zum Beispiel 'n Problem entsteht und Bob nicht in der Lage ist, das zu claimen,
Dann wird im Endeffekt von da aus ja dann der läuft der läuft ja dann irgendwann dann in den Timelock rein und dann Wird die Transaktion ja wieder zurück abgewickelt, weil Bob ja dann niemals das Image von oder das Preimage für Ellis liefern kann, damit er an seine fünfzigtausendzweihundert
SATZ kommen kann. Und wenn das halt der Fall ist, weil er ja dann den Timelock reinläuft und den nicht liefern kann, Dann sind wahrscheinlich ja auch noch die anderen Timelogs entsprechend dann, dass sie beziehungsweise die anderen HTLCs werden dann halt auch rückabgewickelt. Ich struggle grad son bisschen. Ich ich ich ich ich tu mich auch schwer, das jetzt nachzuvollziehen.
Warum, dass wenn wenn wir son Break in der Mitte haben, warum dann halt die Die quasi die Parteien, die näher am Empfänger sind, in dem Fall Shann und Dina, warum die dann ihre HTC jetzt auch wieder rückabwickeln müssten. Also das verstehe ich auch nicht so richtig. Weißt Du, was ich meine? Ja, ja, genau. Also quasi es hat es hat eine Zahlung von Canandina
stattgefunden. Genau, die hat funktioniert. Und von mir aus auch von Bob Anchan. So und jetzt schlägt aber irgendwie ne, fehlt, dass Bob irgendwie mit Diener, mit einem Plattenstrom, was alles kommunizieren kann, irgendwas, was auch immer passieren soll, sodass halt Der Timelock abläuft aus irgend 'nem Grund, kann ja passieren, dann müssten ja eigentlich die Anderen beiden HTLCs, nämlich zwischen Bob und Chan und zwischen Chan und Dina, die müssten ja auch rückabgewickelt werden.
Genau. Weil weil ja die Zahlung nicht stattgefunden hat. Vielleicht das noch in 'nem späteren Kapitel. Ist eine gute Frage, denk ich. Ist hier nicht richtig beschrieben, glaub ich. Oder also vielleicht hab ich's auch übersehen, aber ich hab's nicht Nicht rausgelesen.
Oder in diesen in diesen Timelogs ist dann definiert, dass dann die, hier steht ja bla bla bla den Rückerstattungstimelog, ne. Das, was er im Endeffekt ja dann bedeutet, dass dann, oder? Na ja. Ja, das ja, das ist halt komisch, weil die verbinden ja dann da nicht also bei die die anderen beiden HTLCs sind ja quasi tendenziell erfolgreich.
Ja, vielleicht, das hatte ich mich nämlich noch gefragt. Also wir noch mal zurück auf Seite zweihundertsechsundzwanzig gehen, da ist es ja dieses HTLC in Bitcoin Skript vollständig abgebildet. Und wenn ich das richtig sehe, haben wir nur die Quasi die erste Zeile beziehungsweise hier die zweite Zeile, die haben wir besprochen, ne. Und das ist quasi im unteren Drittel, da kommt ein und dann ein Hashtag
Und da kommt eben dieser Timelock, ob drop und so weiter. Worauf ich eigentlich nur hinauswill, ist, dass Zwischen diesen beiden Zeilen, die wir hier jetzt in diesem Kapitel besprochen haben, ja noch 'n paar mehr Informationen stehen. Und vielleicht ist darin auch noch mal eine Lösung implementiert, halt dieses Problem, das Du grade aufgemacht hast, das abzufangen.
Ja, genau. Ich mein, im Endeffekt steht's in, es steht in den Kommentaren drin, was Du grade vorgelesen Wahrscheinlich ist er einfach in diesen Codes jetzt so festgelegt, verlagert das Kanalguthaben
wieder in den ursprünglichen Zustand Also schieb's wieder an die an die Note zurück, da wo's halt herkommt oder so. Ne, also das ist jetzt in dem Fall dann die, wobei, warte mal, Andy remote Node. Ja, bei remote Node heißt's ja, also Bob an Alice oder nicht? Bob an Alice ist self und Alice ist remote. Genau, dass Alice dann Ihre Zahlung wiederbekommt, was ja durchaus sinnvoll ist dann in dem Fall der Konstrukt, ne. Dass Alice bekommt Ihre Zahlung wieder. Aber das erklärt immer noch nicht genau, Weil wir ja dann in den anderen HTLCs ja theoretisch in den Success reingefallen sind. Genau, also da müsste quasi die Aktualisierung des Kanalzustandes müsste rückabgewickelt werden. Genau. Das ist noch eine offene Frage. Vielleicht
erklärt sich das noch in 'nem späteren Kapitel.
Kann sein, ja. Also müssen wir jetzt vermuten, weil also ich hab's Nicht gelesen in dem Kapitel, das wir Nee, ich glaub auch nicht. Also könnt ich mir jetzt auch nicht erklären. Ansonsten jetzt aber hier auch wieder der Aufruf, hey, Value for value Podcast, ihr wisst es. Wenn ihr uns diese Frage beantworten könnt, wenn ihr wisst, wie diese Rückabwicklung genau funktioniert, in dem Fall, wenn halt mitten in der Zahlung dann
Zwei ein oder zwei HTLCs erfolgreich waren und der andere dann halt auf irgendwelchen Gründen offline geht und in den Timelog live, wie werden die quasi zuvor erfolgreichen HTLCs da trotzdem wieder rückabgewickelt, Damit diese Zahlung niemals stattgefunden hat. Wenn ihr uns das erklären könnt,
qualifiziert ihr euch auch wieder für die Teilnahme bei einem nächsten Buchklub, Wenn ihr dann weißt, dann Ich seh schon eine Runde im nächsten Buchclub. Wie bitte? Ich seh schon eine Runde, der hört sich das hoffentlich an und dann sagt er, jetzt ich mal hin. Ihr Bisher hat er sich noch nicht gemeldet. Wir haben hier schon so häufig nach Hilfe gerufen.
¶ Abschluss
Genau. Aber ansonsten glaub ich, sind wir dann sogar durch mit dem Kapitel. Dann ist es jetzt auch wieder länger geworden als gedacht.
Ja. Aber ich find, wir sind ganz gut durchgekommen. Ich hatte son bisschen Sorgen jetzt am Ende den Calzu, der ist ein bisschen verstummt gegen Ende.
Haben wir dich abgehängt, Calzu? Ja, 'n bisschen schon, aber tatsächlich hatte Die Frage zwischendrin, also beim Selberlesen auch. Also ich dachte auch, ob wir das heute geklärt kriegen? Was passiert, wenn irgendwo zwischendrin was abbricht? Also hatte ich mir auch gestellt, aber nicht so richtig ergründen können. Deswegen ich ja zufrieden, dass wir uns alle die Frage noch stellen.
Jo, ich glaub, damit haben wir das Wesentliche aus diesem Kapitel besprochen. Ich sag vielen Dank, Karlsruhe. Thorsten, hat mir echt Spaß gemacht. War wieder mal eine Freude. Ja. Fox on the Signal. Not on the Signal. Not on the neues.
Tschau. Schönen Abend. Tschau.
