Kann ich einen doppelten Ausgabenversuch mit einem signierten TX mit derselben Eingabe nachweisen? [geschlossen]

Ich entwerfe einen Cross-Chain Atomic Swap in einer benutzerdefinierten Blockchain - Protoblock. Ich denke, es ist möglich, solange Protoblock weiß, wie man p2pkh- Bitcoin-Transaktionen analysiert. Der entscheidende Teil besteht darin, Dinge "umzukehren", wenn doppelte Ausgaben auftreten.

  • Alice hat 1 Bitcoin
  • Bob hat 100 Fantasybit
  • Alice tauscht 1 BTC gegen Bobs 100 FB

Schritt 1) ​​Bob signiert eine Protoblock „Swap“-Transaktion (TX1a), die eine unsignierte Bitcoin-Transaktion (TX1b) enthält, die 1. eine ScriptSig-Eingabe mit p2pkh von Alice (Bitcoin-Adresse) und 2. eine p2pkh-Ausgabe an Bob (Bitcoin- Adresse)

Schritt 2) 100 FB von Bobs ist für 24 Stunden gesperrt oder bis ...

Schritt 3) Eine Protoblock-Transaktion (TX2a) wird gesehen, die die Signatur für TX1b und TXID (TX1a) enthält.

Schritt 4) 100 FB werden an Alice übertragen und für 24 Stunden gesperrt oder bis...

Schritt 5) Es wird eine Protoblock-Transaktion (TX3a) gesehen, die eine signierte Bitcoin-Transaktion (TX2b) enthält, die 1. die gleiche(n) ScriptSig-Eingabe(n) mit p2pkh von Alice (Bitcoin-Adresse) wie TX1b und 2. eine Ausgabe hat, die NICHT a ist p2pkh-Ausgabe an bob (Bitcoin-Adresse)

Schritt 6) 100 FB werden an Bob zurückgesendet, derselbe Zustand wie vor Schritt 1


Der Grund für Schritt 5 ist, dass eine signierte Bitcoin-Transaktion nicht ausreicht, um zu beweisen, dass Bob die Bitcoin von Alice erhalten hat, da Alice die Transaktion nur signieren, aber nicht in Bitcoin ausgeben und nur doppelt ausgeben könnte.

Bob wird jedoch sehen, dass Alice die Eingabe ausgegeben hat, und wird TX3a erstellen, das ihm seine 100 Fantasybit zurückgibt. Tatsächlich kann jeder Bitcoin beobachten und TX3a als Dienst für Bob erstellen.

Frage: Gibt es eine Möglichkeit, dass Alice die gleichen Eingänge von TX1b ausgeben kann, die mit dem obigen Algo nicht erkennbar sind?

Hinweis: Die Bitcoin-Transaktion mit den Ausgängen für die TX1b-Eingänge wird von der Wallet-Software erstellt, die den Atomic Swap durchführt. Alice muss also zuerst ihr 1 Bitcoin an sich selbst senden, um sicherzustellen, dass es sich um ein einfaches p2pkh handelt. Hier ist der Protoblock-Code, der die p2pkh-Ausgaben und Bitcoin-TX erstellt:

https://github.com/SatoshiFantasy/--skillSale/blob/4e59f50b7555527046804418d6483b0df1933637/share/fantasybit-core/FantasyAgent.cpp#L444

https://github.com/SatoshiFantasy/--skillSale/blob/4e59f50b7555527046804418d6483b0df1933637/share/fantasybit-core/FantasyAgent.cpp#L525

Antworten (1)

No Atomic Swaps sind per Definition atomar, was bedeutet, dass entweder ein Swap stattfindet und beide Parteien die Coins einlösen oder nicht. Ich schlage vor , dass Sie sich das Decred - Repository ansehen , um die Mechanismen des Swaps zu verstehen .

Der Begriff "atomarer" Swap wird verwendet, obwohl er nicht atomar ist. Ich wette, decred ist genauso "atomar", ich werde es mir ansehen ... wie auch immer, aber die Frage, die ich stelle, bezieht sich auf eine doppelte Ausgabe und ob es einen Beweis für eine ausgegebene Eingabe geben kann.
decred verwendet die Standard-TimeOut-Technik, die (glaube ich) erfordert, dass eine Partei die Münzen erneut bewegt - oder der Swap geht nicht durch