Cross Chain Trade

8
Algoritmo de Intercambio de Divisas. Cuando las cadenas de bloques guardan relación o compatibilidad con las transacciones Bitcoin, es posible realizar una operación cambiaria sin la necesidad de la mediación de una cámara de compensación. Si Ana y Beto poseen monedas cada uno de dos diferentes criptodivisas y desean hacer un intercambio, acordando entre ellos una tasa de cambio, el procedimiento puede desarrollarse sin riesgo alguno y sin la dependencia de terceros. Formalismos para Describir Transacciones. Para hacer sencilla estas descripciones, es importante uniformizar la descripción de cada transacción mediante fichas, es decir, representar en tablas de datos a la transacción. Hay datos que forman parte del formalismo detallado en la red Bitcoin, que sin embargo no es necesario mencionar en estas tablas descriptivas. Por ejemplo, no tiene sentido especificar el tipo de formulario, ya que para fines descriptivos, solo habrá uno. Tampoco tiene sentido especificar en un campo aparte de la tabla el número de colocaciones o de entradas, pues al listarlas se hará evidente. De este modo una ficha útil para describir completamente una transacción puede ser como el de la tabla: Identidad, Datos de la Trx Id ¿H Completo? Entradas # Hash (H ) pos Guión de Liberación Colocaciones # Valor Guión de Enclavamiento Enclave de Tiempo Igualmente, será útil una sencilla simbología: Datos en Azul: Datos públicos, tales como llaves públicas. Datos en Rojo: Data privada. Llaves privadas o mensajes privados.

description

Protocolo seguro de transferencia de cambio entre dos monedas criptograficas.Gracias por tu contribución (En Bitcoins):1JSxFCeDBNYVwd6wLp3BcRgrPKNWTnqYcc

Transcript of Cross Chain Trade

Page 1: Cross Chain Trade

Algoritmo de Intercambio de Divisas. Cuando las cadenas de bloques guardan relación o compatibilidad con las transacciones Bitcoin, es posible realizar una operación cambiaria sin la necesidad de la mediación de una cámara de compensación. Si Ana y Beto poseen monedas cada uno de dos diferentes criptodivisas y desean hacer un intercambio, acordando entre ellos una tasa de cambio, el procedimiento puede desarrollarse sin riesgo alguno y sin la dependencia de terceros.

Formalismos para Describir Transacciones. Para hacer sencilla estas descripciones, es importante uniformizar la descripción de cada transacción mediante fichas, es decir, representar en tablas de datos a la transacción. Hay datos que forman parte del formalismo detallado en la red Bitcoin, que sin embargo no es necesario mencionar en estas tablas descriptivas. Por ejemplo, no tiene sentido especificar el tipo de formulario, ya que para fines descriptivos, solo habrá uno. Tampoco tiene sentido especificar en un campo aparte de la tabla el número de colocaciones o de entradas, pues al listarlas se hará evidente. De este modo una ficha útil para describir completamente una transacción puede ser como el de la tabla: Identidad, Datos de la Trx Id ¿H Completo?

Entradas # Hash (H ) pos Guión de Liberación

Colocaciones # Valor Guión de Enclavamiento

Enclave de Tiempo

Igualmente, será útil una sencilla simbología: Datos en Azul: Datos públicos, tales como llaves públicas. Datos en Rojo: Data privada. Llaves privadas o mensajes privados.

Page 2: Cross Chain Trade

: El valor por default (Supuesto cero) indica que no habrá enclave de tiempo. De otro modo (Si vale uno), podría existir algún enclavamiento temporal. Datos que corresponden a Secuencias de Ceros: (“Dato que suplanta la secuencia de Ceros”). Firma de Ana número “N”: S.AN Firma de Beto número “M”: S.BM Por ejemplo: Secuencia de Ceros, donde debería ir la firma de Beto número M: (S.BM). Las firmas se forman con el hash (H) de la data parcial de la transacción, excluyendo el guión de Liberación: [H(M) kB]⋆G = S.BM; [H(N) kA]⋆G = S.AN. Finalmente, en el campo “¿H Completo?” se describe si con la información que se ha constituido para el estado en que se presenta esta transacción, es posible formar el Hash Completo (H ) válido de la misma. Un checkmark (), indicará que es correcto. Una equis () indicará que la información es aún incompleta. Ya con estos formalismos se hace sencillo describir el algoritmo. Descripción Ana posee una cantidad N de Bitcoins (BTC) y Beto posee una cantidad M de Altcoins (ALT) y han decidido intercambiar sus monedas al cambio de una tasa T = N/M <BTC/ALT>. Llave privada de Ana en la red Bitcoin: k1 ; Llave pública de Ana: K1 = k1⋆G, red Bitcoin. Llave privada de Beto en la red Bitcoin: k2 ; Llave pública de Beto: K2= k2⋆G, red Bitcoin. Llave privada de Ana en la red Altcoin: q1 ; Llave pública de Ana: Q1 = q1⋆G, red Altcoin. Llave privada de Beto en la red Altcoin: q2 ; Llave pública de Beto: Q2= q2⋆G, red Altcoin. Paso N° 1: Ana elige una cadena de datos de un modo adecuadamente aleatorio: x. Paso N° 2: Ana crea la transacción de depósito: T1, con las siguientes características: Identidad, Datos de la Trx Id T1 ¿H Completo? Entradas # Hash (H ) pos Guión de Liberación

CU1 1 H (Tx) n S.Ax 0

Colocaciones # Valor Guión de Enclavamiento

CV1 1 N 2DUP IF [HASH256 H(x) EQ? K2 CHECKSIG] [ELSE [2 K1 K2 2 CHECKMULTISIG]] ENDIF

Enclave de Tiempo

Page 3: Cross Chain Trade

Explicación de los Guiones: El guión de liberación del CU1 de esta transacción T1, sólo provee la firma S.Ax que corresponde a la firma de H(Tx): S.Ax = [H(Tx) k1]⋆G y que se verifica con la llave pública de Ana: K1. Aquí Tx representa toda aquella transacción de la que provienen los fondos de Ana. El guión de liberación que corresponda al guión de enclavamiento de la CV1 de T1 deberá proveer dos datos: O bien se provee una firma de Beto: [H(m) k2]⋆G = S.B(m) ; y una firma de Ana: [H(m) k1]⋆G = S.A(m); O bien se provee una firma de Beto: [H(m) k2]⋆G = S.B(m) ; y el mensaje privado que creó Ana “x”. Aquí m corresponde a cualquier transacción que pretenda hacer uso de los fondos de CV1. Al comenzar a ejecutarse el guión de enclavamiento de la CV1 se hace una copia de los dos datos suministrados (2DUP) y comienza a ejecutarse el comando IF, que verificará si es verdadero o no el guión del primer paréntesis “[ ]”. El primer guión comienza extrayendo el valor Hash del mensaje privado x, mediante el comando HASH256 y se compara con el valor del Hash del mensaje “x”, que Ana hará del conocimiento público: H(x), mediante el comando EQ?; Si el resultado es verdadero, este lenguaje de pila borra este ultimo “verdadero” y se prosigue tomando el valor de la firma de Beto S.B(m) luego su llave pública K2 y se procede a verificar dicha firma S.B(m) con el comando CHECKSIG. Sin embargo si el resultado del comando EQ? es “falso”, se salta al final del paréntesis “[ ]”, se borra este resultado “falso” y se da inicio a evaluar el comando ELSE. Esto significaría que el segundo dato del guión de liberación no era el mensaje privado de Ana “x”. Entonces el siguiente guión verifica que los dos datos disponibles en la pila sean efectivamente las firmas de Ana S.A(m) y de Beto S.B(m). Paso N° 3: Ana crea la transacción de recuperación: T2, con las siguientes características: Identidad, Datos de la Trx Id T2 ¿H Completo? Entradas # Hash (H ) pos Guión de Liberación

CU2 1 H (T1) 1 S.A2 (S.B2) 1

Colocaciones # Valor Guión de Enclavamiento

CV2 1 N K1 CHECKSIG

Enclave de Tiempo F1 Es una Fecha/Hora en el futuro, dando tiempo para que se concrete la transacción.

Page 4: Cross Chain Trade

Explicación de la Transacción: El guión de liberación del CU2 de esta transacción T2, hace uso de los fondos de la transacción T1. Debe proveer tanto la firma de Ana S.A2 = [H(T1) k1]⋆G, como la de Beto S.B2 = [H(T1) k2]⋆G. Pero dado que Ana desconoce la llave privada de Beto, no puede colocar este dato en el guión de liberación, colocando en vez de ello la secuencia de ceros: (S.B2). El CU2 esta indicando que la transacción tendrá un enclave de tiempo activo. El guión de enclavamiento de la CV2 de T2 colocará los fondos reclamados en esta transacción, los N Bitcoins, a favor de la dirección pública de Ana: K1. Aquí m corresponde a cualquier transacción que pretenda hacer uso de los fondos de CV1. El enclave de tiempo se configura para que la transacción T2 sea válida, solo a partir de la fecha/hora: F1. Digamos, por ejemplo, 20 minutos. Paso N° 4: Ana comparte con Beto, mediante un canal privado de comunicación, propio del software de la cartera de multidivisas que ellos utilizan, la transacción T2 en el estado de incompletitud que se encuentra. Paso N° 5: Beto calcula la firma de T2: S.B2 = [H(T1) k2]⋆G, y sustituye en T2 la secuencia de ceros (S.B2) por esta firma S.B2 y usando el mismo canal privado de comunicación, comparte esta nueva versión de la transacción T2, esta vez en estado de completitud: Identidad, Datos de la Trx Id T2 ¿H Completo? Entradas # Hash (H ) pos Guión de Liberación

CU2 1 H (T1) 1 S.A2 S.B2 1

Colocaciones # Valor Guión de Enclavamiento

CV2 1 N K1 CHECKSIG

Enclave de Tiempo F1 Es una Fecha/Hora en el futuro, dando tiempo para que se concrete la transacción.

Sin embargo, a Beto no le conviene difundir esta transacción a la cadena de bloques del Bitcoin, puesto que con ello frustraría la transacción. Además, recuérdese que mientras T1 no se difunda, T2 será una transacción huérfana. Paso N° 6: Ana verifica que la firma suministrada por Beto, S.B2 es correcta, haciendo uso de K2 y el comando CHECKSIG. De ser “falso” el resultado, Ana aborta el procedimiento. Paso N° 7: Ana difunde T1 a la cadena de bloques de Bitcoin.

Page 5: Cross Chain Trade

Paso N° 8: Beto, haciendo uso del valor Hash H(x), que Ana acaba de hacer del dominio público, al difundir T1 a la red Bitcoin, crea una transacción de depósito: X1, bajo los estándares de la red Altcoin, con las siguientes características: Identidad, Datos de la Trx Id X1 ¿H Completo? Entradas # Hash (H ) pos Guión de Liberación

CU3 1 H (Xx) n .Bx 0

Colocaciones # Valor Guión de Enclavamiento

CV3 1 M 2DUP IF [HASH256 H(x) EQ? Q1 CHECKSIG] [ELSE [2 Q2 Q1 2 CHECKMULTISIG]] ENDIF

Enclave de Tiempo

Explicación de los Guiones: El guión de liberación del CU3 de esta transacción X1, sólo provee la firma Altcoin de Beto .Bx que corresponde a la firma de H(Xx): .Bx = [H(Xx) q2]⋆G y que se verifica con la llave pública de Beto: Q2. Aquí Tx representa toda aquella transacción de la que provienen los fondos Altcoin de Beto. El guión de liberación que corresponda al guión de enclavamiento de la CV3 de X1 deberá proveer dos datos: O bien se provee una firma de Ana: [H(h) q1]⋆G = .A(h) ; y una firma de Beto: [H(h) q2]⋆G = .B(h); O bien se provee una firma de Ana: [H(h) q2]⋆G = .A(h) ; y el mensaje privado que creó Ana “x”. Aquí h corresponde a cualquier transacción de la Altcoin que pretenda hacer uso de los fondos de CV3. Al comenzar a ejecutarse el guión de enclavamiento de la CV3 se hace una copia de los dos datos suministrados (2DUP) y comienza a ejecutarse el comando IF, que verificará si es verdadero o no el guión del primer paréntesis “[ ]”. El primer guión comienza extrayendo el valor Hash del mensaje privado x, mediante el comando HASH256 que debe ser identico en los códigos del Altcoin al usado en Bitcoin y se compara con el valor del Hash del mensaje “x”, que Ana ya hizo del conocimiento público: H(x), mediante el comando EQ?; Si el resultado es verdadero, este lenguaje de pila borra este ultimo “verdadero” y se prosigue tomando el valor de la firma de Ana .A(h) luego su llave pública Q1 y se procede a verificar dicha firma .A(h) con el comando CHECKSIG.

Page 6: Cross Chain Trade

Sin embargo si el resultado del comando EQ? es “falso”, se salta al final del paréntesis “[ ]”, se borra este resultado “falso” y se da inicio a evaluar el comando ELSE. Esto significaría que el segundo dato del guión de liberación no era el mensaje privado de Ana “x”. Entonces el siguiente guión verifica que los dos datos disponibles en la pila sean efectivamente las firmas de Beto .B(h) y de Ana .A(h). Aquí h corresponde a cualquier transacción que pretenda hacer uso de los fondos de CV3. Paso N° 9: Beto crea la transacción de recuperación: X2, en la Altcoin, con las siguientes características: Identidad, Datos de la Trx Id X2 ¿H Completo? Entradas # Hash (H ) pos Guión de Liberación

CU4 1 H (X1) 1 .B2 (.A2) 1

Colocaciones # Valor Guión de Enclavamiento

CV4 1 M Q2 CHECKSIG

Enclave de Tiempo F2 Es una Fecha/Hora en el futuro, más cercana a F1, aproximadamente la mitad del tiempo.

Explicación de la Transacción: El guión de liberación del CU4 de esta transacción X2, hace uso de los fondos de la transacción X1. Debe proveer tanto la firma en la Altcoin de Beto .B2 = [H(X1) q1]⋆G, como la de Ana .A2 = [H(X1) q2]⋆G. Pero dado que Beto desconoce la llave privada de Ana, no puede colocar este dato en el guión de liberación, colocando en vez de ello la secuencia de ceros: (.A2). El CU4 esta indicando que la transacción tendrá un enclave de tiempo activo. El guión de enclavamiento de la CV4 de X2 colocará los fondos reclamados en esta transacción, los M Altcoins, a favor de la dirección pública de Beto: Q2. El enclave de tiempo se configura para que la transacción X2 sea válida, solo a partir de la fecha/hora: F2. Digamos, por ejemplo, 10 minutos. Paso N° 10: Beto comparte con Ana, mediante un canal privado de comunicación, propio del software de la cartera de multidivisas que ellos están utilizando, la transacción X2 en el estado de incompletitud que se encuentra.

Page 7: Cross Chain Trade

Paso N° 11: Ana calcula la firma de X2: .A2 = [H(X1) q1]⋆G, y sustituye en X2 la secuencia de ceros (.A2) por esta firma .A2 y usando el mismo canal privado de comunicación, comparte esta nueva versión de la transacción X2, esta vez en estado de completitud: Identidad, Datos de la Trx Id X2 ¿H Completo? Entradas # Hash (H ) pos Guión de Liberación

CU4 1 H (X1) 1 .B2 .A2 1

Colocaciones # Valor Guión de Enclavamiento

CV4 1 M Q2 CHECKSIG

Enclave de Tiempo F2 Es una Fecha/Hora en el futuro, más cercana a F1, aproximadamente la mitad del tiempo.

Recuérdese que similar a la transacción Bitcoin, en este caso a Ana tampoco le conviene difundir esta transacción a la cadena de bloques de la Altcoin, puesto que con ello frustraría la transacción. Además, recuérdese que mientras X1 no se difunda, X2 será una transacción huérfana. Paso N° 12: Beto verifica que la firma suministrada por Ana, .A2 es correcta, haciendo uso de Q1 y el comando CHECKSIG, que se supone exista una similar a este en la Altcoin. De ser “falso” el resultado, Beto aborta el procedimiento. El único inconveniente es que Ana debe esperar 20 minutos para volver a disponer sus monedas BTC. Paso N° 13: Beto difunde X1 a la cadena de bloques de la Altcoin. Paso N° 14: Ahora le es posible a Ana gastar las M Altcoins de Beto, haciendo uso del valor secreto x, que hasta ahora sólo ella conoce. Para ello, Ana crea una transacción X3, bajo los estándares de la red Altcoin, con las siguientes características: Identidad, Datos de la Trx Id X3 ¿H Completo? Entradas # Hash (H ) pos Guión de Liberación

CU5 1 H (X1) 1 .A3 x 0

Colocaciones # Valor Guión de Enclavamiento

CV5 1 M Q1 CHECKSIG

Enclave de Tiempo

Donde .A3 = [H(X3) q1]⋆G Paso N° 15: Ana ahora difunde X3 a la cadena de bloques de la Altcoin, haciendo así del conocimiento del público el mensaje (Que ya no es privado): x.

Page 8: Cross Chain Trade

En este momento Ana pasa a ser dueña de las M Altcoins que fueron de Beto, pero aún podría recuperar los N Bitcoins que están enclavados en la transacción T1, haciendo uso de la transacción T2, aún no difundida y que ya fue firmada por Beto. Pero no servirá de nada difundir T2 a la red Bitcoin, antes de la fecha/hora F1. Sólo si a Beto le ocurriese algo en ese lapso de tiempo y Beto no hace nada para reclamar sus N Bitcoins, es que Ana podria hacer uso de T2, tras la fecha/hora F1. Pero, pasarle “algo” a Beto, como ¿Que? Un ataque en su sistema de comunicación o su capacidad de difundir a la red Bitcoin, por ejemplo. O un ataque mas “hardware”... Un “infortunado” accidente. Para proteger en un punto como este los intereses de Beto, Ana debe conocer lo menos posible de Beto. Un conocimiento tal como la dirección IP, sería tan delicado como conocer la dirección física de la ubicación de Beto. Para evitar esta debilidad del protocolo, el canal privado de comunicación así como el medio de difusión que utiliza el software de la cartera hacia las cadenas de bloques debe gozar de algún medio de oscurecimiento o encriptamiento. Paso N° 16: Beto, haciendo ahora uso del dato recientemente públicado por Ana, el mensaje “x”, es capaz de crear una transacción T3 que le permita gastar los N Bitcoin que ya no le pertenecen de derecho a Ana, pero que aún podría recuperar de hecho. Identidad, Datos de la Trx Id T3 ¿H Completo? Entradas # Hash (H ) pos Guión de Liberación

CU6 1 H (T1) 1 S.B3 x 0

Colocaciones # Valor Guión de Enclavamiento

CV6 1 N K2 CHECKSIG

Enclave de Tiempo

Donde S.B3 = [H(T3) k2]⋆G Puede probarse, que salvo el riesgo de seguridad que tiene el procedimiento tras el paso N° 15, el protocolo permite revertir los fondos a sus respectivos dueños originales si algo ocurriese que forzara el procedimiento a detenerse.