¿Alguien puede hacerme ELI5 para intercambios atómicos de Bitcoin?

Estoy leyendo la página wiki aquí: https://en.bitcoin.it/wiki/Atomic_cross-chain_trading

Entiendo que un usuario puede crear una transacción sin firmarla y sin transmitirla a la red. Sé que este es el concepto principal para que funcionen los intercambios atómicos. Pero estoy un poco confundido sobre cómo funciona exactamente cada paso. ¿Alguien puede explicar cada línea?

 A picks a random number x

 A creates TX1: "Pay w BTC to <B's public key> if (x for H(x) known and signed by B) or (signed by A & B)"

 A creates TX2: "Pay w BTC from TX1 to <A's public key>, locked 48 hours in the future, signed by A"

 A sends TX2 to B

 B signs TX2 and returns to A

 1) A submits TX1 to the network

 B creates TX3: "Pay v alt-coins to <A-public-key> if (x for H(x) known and signed by A) or (signed by A & B)"

 B creates TX4: "Pay v alt-coins from TX3 to <B's public key>, locked 24 hours in the future, signed by B"

 B sends TX4 to A

 A signs TX4 and sends back to B

 2) B submits TX3 to the network

 3) A spends TX3 giving x

 4) B spends TX1 using x

 This is atomic (with timeout).  If the process is halted, it can be reversed no matter when it is stopped.

 Before 1: Nothing public has been broadcast, so nothing happens
 Between 1 & 2: A can use refund transaction after 72 hours to get his money back
 Between 2 & 3: B can get refund after 24 hours.  A has 24 more hours to get his refund
 After 3: Transaction is completed by 2
 - A must spend his new coin within 24 hours or B can claim the refund and keep his coins
 - B must spend his new coin within 72 hours or A can claim the refund and keep his coins

 For safety, both should complete the process with lots of time until the deadlines.

Respuestas (2)

Creo que esto es más fácil de entender si se abstrae un poco. En un alto nivel, un intercambio atómico es muy simple: las dos partes configuran transacciones de modo que ambas pueden tomar sus monedas y revelar la preimagen a algún hash (predecidido) H. Inicialmente, una de las partes conoce la preimagen. Deben revelarlo para tomar sus monedas, por lo que el acto de tomar sus monedas es suficiente para permitir que la otra parte tome sus monedas.

Más específicamente, el Tier Nolan en el OP funciona de la siguiente manera.

  1. A elige al azar xy se lo da H(x)a B.
  2. A envía sus monedas a una salida de 2 de 2 que B puede tomar si revela x. De manera similar, B envía sus monedas a una salida de 2 de 2 que A puede tomar si revela x. Estos son TX1 y TX3, respectivamente.
  3. (Antes de transmitirlos, crean transacciones de "reembolso" con tiempo de bloqueo TX2 y TX4. Es importante que el tiempo de bloqueo de A sea mucho más largo que el de B, de modo que si recibe su reembolso, B ha tenido mucho tiempo para recibir su reembolso y no está en riesgo de que A revele xpara tomar también sus monedas.)
  4. En este punto, A toma sus monedas y revela x.
  5. Al ver esto, B aprende xy toma sus monedas.

Hay una variante de esto llamada intercambio de monedas donde xno golpea la cadena de bloques, donde los pasos (4) y (5) se reemplazan por A revelando xfuera de la cadena y luego los firmantes simplemente se dan las monedas, usándolas solo xcomo respaldo. Esto complica la estructura del tiempo de bloqueo y también requiere que se mantengan transacciones con formas diferentes xy su hash fuera de la cadena de bloques, lo que desafortunadamente hace que el protocolo parezca muy aterrador, pero eso es todo lo que está pasando.

Básicamente, esto depende del conocimiento del número aleatorio X :

Bitcoin

      TX1      (To redeem: reveal secret number X or refund)
A   -------> B  ---->

altcoin

     TX2       (To redeem: reveal secret number X or refund)
B   -------> A  ---->
  • Entonces, en ambos casos, la transacción de reembolso (firmada por A y B) es una transacción de tiempo de bloqueo para que el remitente pueda reclamar el dinero después de un tiempo determinado.
  • Ahora, para reclamar el dinero en TX2, A revelará X en la cadena de bloques de altcoin (a través de un script de gasto)
  • B leerá esta X secreta de la cadena de bloques de altcoin y canjeará el dinero de TX1 en la cadena de bloques de bitcoin

Ahora veamos algunos casos:

  • Si A nunca revela el secreto X : Primero B recibe su reembolso y luego, después de 24 horas, A recibe su reembolso. La diferencia en los tiempos de reembolso está ahí para evitar el caso en que A obtiene el reembolso y luego revela X para quedarse con bitcoin y altcoins.
  • A revela la X secreta en la cadena de bloques de altcoin: B tiene que revelar X en la cadena de bloques de bitcoin antes de que se active el tiempo de bloqueo de la transacción de reembolso de A.