¿Puedo probar un intento de doble gasto con un tx firmado con la misma entrada? [cerrado]

Estoy diseñando un intercambio atómico de cadena cruzada en una cadena de bloques personalizada: Protoblock. Creo que se puede hacer siempre que Protoblock sepa cómo analizar las transacciones de bitcoin p2pkh . La parte crítica es poder "revertir" las cosas cuando ve un gasto doble.

  • Alicia tiene 1 Bitcoin
  • Bob tiene 100 Fantasybit
  • Alice cambiará 1 BTC por Bobs 100 FB

Paso 1) Bob firma una transacción de "intercambio" de Protoblock (TX1a) que contiene una transacción de bitcoin sin firmar (TX1b) que debe tener 1. una entrada de ScriptSig con p2pkh de Alice (dirección de bitcoin) y 2. una salida de p2pkh a Bob (bitcoin- DIRECCIÓN)

Paso 2) 100 FB de Bobs se bloquean durante 24 horas o hasta...

Paso 3) se ve una transacción Protoblock (TX2a) que contiene la firma para TX1b y TXID (TX1a)

Paso 4) 100 FB se transfieren a Alice y se bloquean durante 24 horas o hasta...

Paso 5) se ve una transacción de Protoblock (TX3a) que contiene una transacción de bitcoin firmada (TX2b) que tiene 1. las mismas entradas de ScriptSig con p2pkh de Alice (dirección de bitcoin) como TX1b y 2. una salida que NO es una salida p2pkh a bob (dirección bitcoin)

Paso 6) 100 FB se devuelven a Bob, el mismo estado que antes del Paso 1


El motivo del Paso 5 es que una transacción de bitcoin firmada no es suficiente para probar que Bob recibió el bitcoin de Alice, porque Alice podría simplemente firmar la transacción, pero no gastarla en bitcoin, y simplemente gastarla dos veces.

Sin embargo, Bob verá que Alice gastó la entrada y creará TX3a que le devuelve sus 100 Fantasybit. De hecho, cualquiera puede estar viendo bitcoin y crear TX3a como un servicio para Bob.

Pregunta: ¿hay alguna manera de que Alice pueda gastar las mismas entradas de TX1b, que será indetectable con el algoritmo anterior?

Nota: la transacción de bitcoin con las salidas para las entradas TX1b será creada por el software de la billetera que realiza el intercambio atómico. Entonces Alice primero tendrá que enviarse 1 Bitcoin a sí misma para asegurarse de que sea un p2pkh simple. Aquí está el código Protoblock que crea las salidas p2pkh y bitcoin tx:

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

Respuestas (1)

Los intercambios no atómicos son, por definición, atómicos, lo que significa que hay un intercambio y ambas partes canjean las monedas o no. Le sugiero que eche un vistazo al repositorio de Decred para comprender la mecánica del intercambio.

se utiliza el término intercambio "atómico", aunque no es atómico. apuesto a que decred es igual de "atómico", le echaré un vistazo... de todos modos, pero la pregunta que hago es en relación con un gasto doble, y si puede haber pruebas de una entrada gastada.
decred usa la técnica estándar de tiempo de espera, que (creo) requiere que una de las partes mueva las monedas nuevamente, o el intercambio no se realiza