Bei einer normalen Bitcoin Transaktion kann man ja sehr einfach nachweisen das diese passiert ist und das man sie gemacht hat.
Man nimmt einfach die Transaktion ID durch die jeder im Blockchain explorer sich die Transaktion ansehen kann, und dann signiert man eine Nachricht mit der Absender Adresse, falls man auch beweisen will das man der Besitzer der sendenen Adresse ist.
Wie sieht das bei Lightning Transaktionen aus?
Kann man Kryptographisch beweisen, das man eine bestimmte Transaktion gemacht hat?
Damit das keine Verwirrung gibt, ich meine Szenarien in denen man selbst die Transaktion einer dritten Partei beweisen will, nicht das jemand von außen beweist kann wer was gezahlt hat.
Jo, auch bei Lightning kannst du eine Zahlung, nur eben etwas anders als On-Chain.
Wenn du eine Lightning-Invoice bezahlst, enthält diese einen Payment Hash.
Damit die Zahlung abgeschlossen wird, gibt dir der Empfänger das sogenannte Preimage.
Das Preimage ist der endgültige Zahlungsbeweis, denn der Payment Hash ist der SHA256 Wert von dem Preimage.
Jeder kann verifizieren, dass das Preimage genau zum Hash der Invoice passt.
Zum Beweis für Dritte brauchst du also nur das Preimage + die Invoice.
Ein Dritter kann dann prüfen, ob SHA256(preimage) = Paymenthash.
Wenn es zusammenpasst ist es ein endgültiger Beweis, dass die Rechnung (von dir) bezahlt wurde.
Zusätzlich kannst du auch mit einer Signatur deines Nodekey zeigen, dass DU wirklich derjenige warst, der die Zahlung ausgeführt hat.
Hier mal ein Screenshot aus der Phoenix Wallet mit den wichtigen Daten, wie sowas aussieht:
Ein 100 prozentiger Beweis ist das Pre-Image jedoch nicht. Denn das Pre-Image kennt auch jeder Node, welcher die Zahlung weitergeleitet hat. Wenn das Geld über meinen Node geflossen ist, könnte ich dann so tun, als ob ich das bezahlt habe.
Zumindest solange Lightning invoices über HTLC und nicht PTLC (Point Time Lock Contracts).
Zugegeben, dies ist vermutlich eher ein theoretisches Problem. Wenn Person A an Person B seine Brötchen verkauft, wird nicht zufällig Person C (über dessen Node die TX lief) sagen “Hey das sind meine Brötchen, hier ist das Pre-Image”
Den Part verstehe ich nicht genau. Zumindest nicht, was genau signiert wird. Falls das also des Rätsel Lösung ist, habe ich nichts gesagt
Ja, stimmt… es ist nur ein Beweis dafür, dass bezahlt wurde, nicht zwingend wer bezahlt hat. Deswegen hatte ich auch das „von dir“ in Klammern gesetzt :D. War aber vielleicht missverständlich ausgedrückt.
Ja, ich hatte auch einen Denkfehler . Ich dachte man könnte ja einfach mit seinem Node-Privkey, eine Nachrciht signieren a la „Ich, Node 03ab…c4, erkläre, dass ich die Invoice X bezahlt habe.“ und dann könnte der Empfänger prüfen ob die Signatur zum öffentlichen Node-key passt.
Aber das ist Käse, weil einem das auch nicht wirklich was bringt, der wird ja nicht übermittelt.
Also vergesst den zweiten Teil.
Das Lightning Network ist Sender-anonym und das ist gut so ^^. Man kann nur beweisen, dass bezahlt wurde, aber nicht, wer bezahlt hat.
Sorry, für die Verwirrung.
Es wird nichts „ZUM Preimage gehasht“. Sondern das PI wird ZUM Payment-Hash gehasht.
Die Invoice enthält aber den Paymenthash, so sind die sozusagen verknüpft :).
Na weil der Payment-Hash die mittels SHA256 gehashte Version des Pre-Image ist.
Kannst du ja einfach mal ausprobieren. Nimm dir mal aus deiner Lightning-Wallet ein Pre-Image und erstelle den SHA256-Wert. Und schau mal ob es sich mit dem Payment-Hash deckt =)?!
Und dann kannst du mal deine Invoice mit z.B: lightningdecoder.com decodieren und wirst sehen, dass du darin den gleichen Paymenthash findest =)
Wenn die Invoice eine Beschreibung hat “Paid to Bloktrainer Shop (Order ID: )”wird diese Beschreibung mit in den Payment Hash gehasht?
Und wenn man die Zahlung nicht über Bolt11 macht sondern über Bolt12 oder LNURL und als Sender eine Beschreibung mitschickt, kann diese Beschreibung dann auch Teil des Payment Hash werden?
Wenn die Beschreibung / das custom memo Teil des Payment Hashes wird, welcher wiederum durch das Pre Image bestätigt wird, könnte man darin ja weitere Informationen ablegen.
Zum Beispiel:
Bob und Alice verreinbaren das Bob von Alice einen bestimmten Gegenständ für 1 Millions Sats kauft.
Um sich gegen Betrug zu schützen machen sie Charlie zum Zeugen.
Wenn jetzt Bob die 1 Millions Sats per Lightning an Alice schickt, kann Bob das Charlie beweisen auch wenn Alice es leugnet?
Laut ChatGPT kann man das über das Pre Image beweisen:
Könnte der Sender behaupten dass, das Pre Image zu einer anderen Invoice gehört als es eigentlich tut?
Kurz: Nein — nicht glaubwürdig. Technisch: Der Preimage P gehört kryptografisch zu einem bestimmten payment_hash H = SHA256(P). Wenn Bob das Preimage P zeigt, kann jeder H’ = SHA256(P) berechnen und mit dem payment_hash H in einer konkreten Invoice vergleichen.
Konkrete Fälle:
Wenn H’ == H der strittigen Invoice, beweist P, dass genau diese Invoice eingelöst wurde.
Kann Bob behaupten, P gehöre zu einer anderen Invoice? Er könnte es behaupten, aber die Behauptung wird durch den Hash-Check widerlegt, außer wenn die andere Invoice denselben payment_hash H enthält.
Zwei Möglichkeiten, wie Verwirrung entstehen kann:
Wiederverwendung: Der Invoicenersteller hat absichtlich dieselbe Preimage/payment_hash für mehrere Invoices benutzt — dann passt P zu allen diesen Invoices.
Kollisionsangriff: Zwei verschiedene Preimages mit gleichem SHA‑256-Hash — praktisch unbrauchbar (unrealistisch).
Fazit: Durch SHA256(P) == payment_hash ist es praktisch unmöglich, dass Bob ein Preimage einer anderen, unterschiedlichen Invoice zuordnen kann. Einzige realistische Ausnahme ist, wenn der Invoice‑Ersteller selbst den selben payment_hash/Preimage für mehrere Invoices wiederverwendet hat.