Unterliegen Micropayment-Kanäle nach BIP65 noch der Formbarkeit?

Unterliegen einfache, unidirektionale MPC nach BIP 65 immer noch der Verformbarkeit von Transaktionen?

Genauer:

Ist der Zahlungsempfänger wegen Formbarkeit gefährdet? Wenn ja, wie? (soweit ich verstanden habe, ist der Zahlungsempfänger nicht mehr gefährdet)

Ist der Zahler wegen Formbarkeit gefährdet? Wenn ja, wie? (Soweit ich verstanden habe, ist der Zahlungsempfänger immer noch gefährdet)

Antworten (2)

Es gibt eine Vielzahl unterschiedlicher Möglichkeiten, einen Mikrozahlungskanal aufzubauen, aber es gibt zwei Designs, die meiner Meinung nach für Ihre Frage zu „einfachen, unidirektionalen Mikrozahlungskanälen“ besonders relevant sind:

In den folgenden zwei Abschnitten wird beschrieben, wie sich die Formbarkeit auf diese beiden unterschiedlichen Arten von Mikrozahlungskanälen bezieht.

Formbarkeit in Micropayment-Kanälen im Spillman-Stil

BIP65 ändert nichts daran, wie sich die Formbarkeit auf Mikrozahlungskanäle im Spillman-Stil auswirkt, daher galt die folgende Beschreibung, bevor BIP65 durchgesetzt wurde, sowie jetzt (zumindest für Transaktionen, die Segwit nicht verwenden).

Ein Mikrozahlungskanal im Spillman-Stil wird mithilfe der folgenden Abfolge von Ereignissen zwischen dem Händler (der die Gelder erhält) und dem Kunden (der die Gelder ausgibt) aufgebaut:

  1. Der Händler gibt dem Kunden seinen öffentlichen Schlüssel.
  2. Der Kunde verwendet seinen öffentlichen Schlüssel und den öffentlichen Schlüssel des Händlers, um eine Multisig-P2SH-Adresse[1] zu erstellen, die Unterschriften sowohl vom Händler als auch vom Kunden erfordert, um an diese Adresse gezahlte Gelder auszugeben.
  3. Der Kunde generiert (aber überträgt nicht) eine Transaktion, die die Multisig-P2SH-Adresse bezahlt.
  4. Der Kunde generiert eine zweite Transaktion, die die erste Transaktion an eine der Adressen des Kunden zurücksendet, gibt dieser Transaktion eine Sperrzeit (damit sie der Blockchain erst zu einem bestimmten Zeitpunkt hinzugefügt werden kann) und signiert diese Transaktion.
  5. Der Kunde gibt diese zweite Transaktion an den Händler (ohne ihm die erste Transaktion zu geben), und der Händler unterzeichnet sie und sendet die unterzeichnete Transaktion an den Kunden zurück.
  6. Jetzt kann der Kunde diese zweite Transaktion, die als Rückerstattungstransaktion bezeichnet wird, verwenden , um eine Rückerstattung zu verlangen, wenn der Händler bis zum Erreichen der Sperrzeit nichts unternimmt.
  7. Mit einer gesicherten Backup-Rückerstattung sendet der Kunde die erste Transaktion (die als Einzahlungstransaktion bezeichnet wird ), damit sie der Blockchain hinzugefügt wird.
  8. Jetzt kann der Kunde Alternativen (sogenannte Zahlungstransaktionen ) zur Rückerstattungstransaktion signieren, die keine Sperrzeit haben, und können daher sofort zur Blockchain hinzugefügt werden, außer dass sie auch die Unterschrift des Händlers erfordern. Indem diese dem Händler übergeben werden, der sie mitunterzeichnen kann (ohne sie an den Kunden zurückzusenden), kann der Händler sicher sein, dass er sie der Blockchain zu einem früheren Zeitpunkt hinzufügen kann, als die Rückerstattungstransaktion gültig wird.

Das Problem mit der Formbarkeit tritt im obigen siebten Schritt auf, wenn die Einzahlungstransaktion gesendet wird. Wenn die Transaktion, die der Blockchain hinzugefügt wird, nicht Byte für Byte mit der Rückerstattungstransaktion identisch ist, die der Händler im fünften Schritt unterzeichnet hat, dann ist die Rückerstattungstransaktion nicht mehr gültig, da versucht wird, eine Transaktion mit einer anderen txid auszugeben als das Einzahlungsgeschäft.

Der Händler kann immer noch freiwillig mit dem Kunden zusammenarbeiten, um das Geld des Kunden zurückzugeben, aber das bedeutet, dass wir nicht die vertrauenswürdigen Micropayment-Kanäle haben, die wir wollen.

Ein Hinweis zu segregiertem Zeugen (Segwit): Da Segwit die Art der Formbarkeit eliminiert, die es jemandem ermöglichen würde, die txid der Einzahlungstransaktion ohne die Erlaubnis des Kunden zu ändern, können Transaktionen, die Segwit verwenden, Micropayment-Kanäle im Spillman-Stil ohne Risiko der Formbarkeit verwenden. Probleme verursacht. Zum jetzigen Zeitpunkt ist Segwit nicht im Mainnet implementiert, aber ich gehe davon aus, dass dies früher oder später der Fall sein wird, also beschreibe ich dies hier für zukünftige Leser dieser Antwort. Beachten Sie, dass Segwit eine optionale Funktion ist, die der Kunde bereits verwenden müsste, um die Formbarkeit in diesem Fall zu eliminieren, sodass die Aktivierung von Segwit selbst nicht automatisch die Formbarkeit in Kanälen im Spillman-Stil eliminiert.

[1] Bare Multisig (Multisig ohne P2SH-Adresse) kann ebenfalls verwendet werden.

Formbarkeit in Mikrozahlungskanälen im CLTV-Stil

Ein Mikrozahlungskanal im CLTV-Stil wird unter Verwendung der folgenden Abfolge von Ereignissen zwischen dem Händler und dem Kunden aufgebaut. Diese Schritte sind vor und nach der Aktivierung von SegWit identisch.

  1. Der Händler gibt dem Kunden seinen öffentlichen Schlüssel.
  2. Der Kunde verwendet seinen öffentlichen Schlüssel und den öffentlichen Schlüssel des Händlers, um eine P2SH-Adresse zu erstellen, für die eine der folgenden Bedingungen erfüllt sein muss:
    1. Sowohl der Händler als auch der Kunde signieren alle Transaktionen, die von dieser P2SH-Adresse ausgegeben werden.
    2. Nur der Kunde signiert alle Transaktionen, die von diesem P2SH ausgegeben werden – aber diese Ausgabentransaktionen müssen eine Sperrzeit haben, die größer ist als die Rückerstattungszeit.
  3. Der Kunde generiert und übermittelt die Einzahlungstransaktion sofort. Dem Kunden wird durch Bedingung 2.2 oben zugesichert, dass er auf Anfrage eine Rückerstattungstransaktion generieren kann .
  4. Jetzt kann der Kunde die obige Bedingung 2.1 verwenden, um Zahlungstransaktionen, die den Händler bezahlen, halb zu unterzeichnen (1 von 2 erforderlichen Unterschriften zu unterzeichnen). Der Händler kann die zweite Signatur generieren (ohne sie dem Kunden bereitzustellen) und sicher sein, dass er die endgültige Zahlungstransaktion übertragen kann, bevor der Kunde eine Rückerstattungstransaktion zur Blockchain hinzufügen kann, die gemäß den Bedingungen von Bedingung 2.2 generiert wurde.

Dieser Prozess beseitigt die Bedenken hinsichtlich der Formbarkeit in Mikrozahlungskanälen im CLTV-Stil, obwohl er die Formbarkeit selbst nicht beseitigt. Da der Kunde die Rückerstattungstransaktion jederzeit gemäß Bedingung 2.2 oben veranlassen kann, muss er sich nicht vorab auf eine bestimmte txid festlegen; Er kann warten, bis die Einzahlungstransaktion zur Blockchain hinzugefügt und ihre txid nahezu unveränderlich gemacht wurde, bevor er die Rückerstattungstransaktion generiert.

Wenn trotz des Wartens auf mehrere Bestätigungen dennoch eine Formbarkeit eintritt, kann der Kunde jederzeit eine neue Rückerstattungstransaktion mit seinem privaten Schlüssel generieren und signieren. Denn laut Bedingung 2.2 in der P2SH-Adresse ist lediglich eine Signatur des berechtigten Schlüssels plus eine Sperrzeit über ein bestimmtes Datum hinaus erforderlich.

Der Händler kann von Formbarkeit betroffen sein, wenn sich die Einzahlungstransaktions-txid ändert, nachdem er Zahlungen akzeptiert hat. Aus diesem Grund ist es für den Händler am besten, abzuwarten, bis die Einzahlungstransaktion mindestens eine Bestätigung erhält, bevor der Händler Zahlungstransaktionen akzeptiert (das Warten auf weitere Bestätigungen bietet mehr Sicherheit und wird für hohe Werte empfohlen). Da der Händler auf jeden Fall auf die Bestätigung der Einzahlungstransaktion warten sollte, um zu verhindern, dass der Kunde sie doppelt ausgibt (was auch bei Kanälen im Spillman-Stil der Fall ist), wirkt sich diese Formbarkeitsquelle nicht wesentlich auf die Sicherheit aus Modell.

Fazit

BIP65 hat die Formbarkeit für ältere Kanäle im Spillman-Stil nicht behoben, aber es hat Zahlungskanäle im CLTV-Stil ermöglicht, die nicht durch Transaktionsformbarkeit beeinträchtigt werden. Segwit wird auch die Formbarkeit für Kanäle im Spillman-Stil beheben, wenn alle Eingaben in der Einzahlungstransaktion von Segwit-Ausgaben ausgegeben werden.

Das ist eine hervorragende Antwort, vielen Dank (haben Sie gerade positiv bewertet). Darf ich Ihnen jetzt noch 2 Fragen stellen? 1) Kann man Zahlungskanäle mit CSV anstelle von CLTV erstellen. 2) Wären CSV-basierte Zahlungskanäle auch resistent gegen Formbarkeit? 3) Ist ein CSV-basierter Zahlungskanal besser als ein CLTV-Kanal?
@knocte 1) Ja, Sie können CSV einfach verwenden. 2) Ja, Sie erhalten den gleichen Formbarkeitswiderstand. 3) Sie haben unterschiedliche Kompromisse; CLTV erlaubt Ablaufdaten weit in der Zukunft (siehe Unix-Jahr-2038-Problem), CSV erlaubt maximal ~1 Jahr; Der CLTV-Ablauf wird ausgewählt, wenn der Kanal erstellt wird, für CSV beginnt die Uhr erst zu ticken, wenn der Einzahlungs-Tx bestätigt. Meiner Meinung nach ist CSV etwas besser für kurzzeitige Kanäle und glänzt wirklich, wenn es als Teil eines HTLC wie Lightning verwendet wird: en.bitcoin.it/wiki/Hashed_Timelock_Contracts

Ja. Da Sie keine Signatur signieren können und Signaturen in einer Transaktion bei der Berechnung von a verwendet werden txid, würden daher nur getrennte Zeugen oder normalisierte txids die Verformbarkeit von Transaktionen beheben.

Danke für diese Antwort. Ich verstehe, dass der Payment tx immer noch unter dieser Formbarkeit leiden kann, da er auf einen tx (die Einzahlung) hinweist, der sich noch nicht in der Blockchain befindet. Aber es scheint mir, dass der Zahlungsempfänger dank BIP65 von jeglichem Risiko isoliert ist, da die Einzahlung vom Zahlungsempfänger zu einem späteren Zeitpunkt ausgegeben werden kann (nämlich wenn die Einzahlung der Blockchain hinzugefügt wurde und die Formbarkeit kein Problem darstellt). . Ist es nicht so? (Ich habe meine Frage nach Ihrer Antwort bearbeitet. Danke agn)
Es hängt immer noch vom Zeitrahmen und Ihrer Risikotoleranz ab. Wenn Sie zu 100 % risikoscheu sind, dann ist der Zahlungsempfänger immer einem Risiko ausgesetzt, da es möglich ist, dass eine widersprüchliche Abzweigung zur Gewinnerkette wird und die Formbarkeit den Zahlungsempfänger in der Abzweigung immer noch beeinträchtigen kann.