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)
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:
Mikrozahlungskanäle im Spillman-Stil: Dies war ein häufig beschriebenes Design von Mikrozahlungskanälen vor BIP65 ( OP_CHECKLOCKTIMEVERIFY
, CLTV). Kanäle im Spillman-Stil wurden erstmals im April 2013 von Jeremy Spillman beschrieben und 2013 in die BitcoinJ-Bibliothek implementiert .
Mikrozahlungskanäle im CLTV-Stil: Dies ist eine neue Art, einen Zahlungskanal aufzubauen, der möglich wurde, als CLTV Mitte Dezember 2015 durchgesetzt wurde. Kanäle im CLTV-Stil wurden vom BIP65-Autor Peter Todd als Teil dieses BIP beschrieben und in zwei Jahren implementiert1- Python im Februar 2016 .
In den folgenden zwei Abschnitten wird beschrieben, wie sich die Formbarkeit auf diese beiden unterschiedlichen Arten von Mikrozahlungskanälen bezieht.
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:
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.
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.
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.
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.
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.
knokte
David A. Harding