¿Qué son los Cross-chain Swaps?

Los cross-chain swaps o atomic cross-chain swaps, son un tipo de intercambio de monedas que tiene lugar entre dos criptomonedas distintas que se ejecutan en sus propias blockchain. Es decir, es un mecanismo que permite a los usuarios intercambios de diferentes criptomonedas directamente entre dos pares.

La forma más sencilla de ver este tipo de cambios es el cambio de divisas fíat de toda la vida. En dichos intercambios, dos personas (una con euros y la otra con dólares) desean intercambiar sus monedas la una por la otra a una tasa determinada. Para esto, en fíat simplemente conociendo la tasa y haciendo las cuentas, cada una de las partes puede darle a la otra la cantidad de monedas equivalentes al cambio. Por ejemplo, 100 € serían un equivalente a unos 121,55 $, usando una tasa de cambio de 1,2155 $ por euro. Basta decir, que dicho cambio ha sido directo y sin ningún intermediario.

Sin embargo, en este ejemplo hablamos de cosas tangibles, es dinero que está en el mundo real. La pregunta aquí es: ¿Cómo hacer posible dicho intercambio usando criptomonedas cuyos sistemas funcionan en plataformas distintas? Pues bien, la respuesta a ello son los cross-chain swaps y de ellos conocerás mucho más a continuación.

Inicios de los Cross-Chain Swaps

El primer whitepaper que explica ampliamente la naturaleza de cross-chain swaps es “Atomic Cross-Chain Swaps”, de Maurice Herlihy, del Departamento de Ciencias de la Computación de la Brown University Providence. Dicho documento, presentado durante el Simposio ACM 2018, nos explica claramente cómo funciona un atomic cross-chain swap, sus posibilidades y principales retos en la creación de este tipo de herramientas.

Básicamente, lo que un cross-chain swap hace es; tomar el dinero de las partes e ingresarlo bajo una programación especial que garantiza que la operación sólo se pueda culminar con el beneplácito de ambas partes. Y, en caso de que alguna parte actúe de forma maliciosa, esta no pueda tomar el control de nuestros fondos.

Ahora bien, la parte de programación seguramente ha captado tu atención en este punto. Pues bien, en primer lugar, recuerda que toda transacción de criptomonedas se da gracias a que dichas monedas responden a una programación o smart contracts que permite enviar, tomar y entregar el control de dichas monedas. En Bitcoin, por ejemplo, llamamos a esta programación es posible gracias a Bitcoin Script, y en Ethereum, gracias a Solidity. En general, toda criptomoneda usa este modelo de manejo para sus operaciones. Por cierto, si quieres saber como empezar a programar smart contracts para Ethereum, puedes revisar nuestro articulo ¿Cómo empezar a programar en Solidity?

Ahora bien, tomando en cuenta que las criptomonedas son monedas programables, podemos hacer una programación especial, que nos permita el intercambio cross-chain de las mismas con total seguridad. Esto es lo que hace posible este tipo de intercambio, y sobre esto hablaremos más a profundidad en la siguiente sección.

Programando monedas, la clave de los cross-chain swaps

Ahora bien, vayamos un poco al lado práctico de los cross-chain swaps y para ello tomaremos por ejemplo, a Bitcoin. Como ya mencionamos, en Bitcoin contamos con el lenguaje de programación Bitcoin Script. Este lenguaje de scripting nos permite enviar y recibir monedas de forma totalmente programada. De hecho, cada transacción en Bitcoin solo es posible usando dicha programación.

Pero hay algo muy interesante con las capacidades de este lenguaje, más específicamente con las funciones OP_CHECKSEQUENCEVERIFY (CSV) y OP_CHECKLOCKTIMEVERIFY (CLTV). La primera es un código de operación u OP_CODE muy útil, ya que nos permite bloquear la ejecución de una determinado script o transacción hasta que determinadas condiciones se cumplan. Gracias a esto, cosas como Lightning Network son posibles, así como intercambios descentralizados e intercambios P2P seguros. Precisamente estas dos últimas son las que entran en el campo de las operaciones cross-chain swaps. El segundo código, por su parte, nos permite colocar bloqueos de tiempo a nuestras transacciones, algo que podemos usar para crear mecanismos de seguridad para nuestros intercambios.

Así, si usamos un monedero capaz de darnos la capacidad de realizar operaciones cross-chain swaps, podemos hacer uso de las funciones OP_CHECKSEQUENCEVERIFY y OP_CHECKLOCKTIMEVERIFY, y realizar operaciones cross-chain swap con personas que tengan la misma capacidad. Y todo, porque nuestro monedero programará las monedas para que solo puedan cambiarse bajo una serie de condiciones que ambas partes hayan decidido de antemano y sin intermediario alguno.

Por supuesto, esta es una explicación muy sencilla de cómo sucede todo en realidad, así que a continuación explicaremos como en realidad sucede todo esto.

¿Cómo funciona un cross-chain swap?

Ahora bien, supongamos el siguiente escenario. Por un lado, tenemos a Laura que desea intercambiar su Bitcoin (BTC) por Monero (XMR). Y, por otro lado, tenemos a Juan que desea intercambiar su Monero por Bitcoin. Ambos tienen una necesidad de intercambio, y ambas partes tienen la moneda que necesitan.

Ante esto, Laura y Juan comienzan con el proceso de intercambio teniendo sus monederos capacitados para ello. En primer lugar, Laura crea una transacción usando el código de operación OP_CHECKSEQUENCEVERIFY y bloquea la cantidad de Bitcoin a intercambiar con Juan. Dicho script solo podrá ser desbloqueado una vez que Juan cumpla con las condiciones de intercambio, emitiendo su transacción equivalente en Monero, y conozca el secreto que protege a la transacción de Laura. En caso de que algo vaya mal, la transacción de Laura tiene una medida de seguridad que le permitiría recuperar el dinero pasado un tiempo, usando para ello OP_CHECKLOCKTIMEVERIFY.

Por su lado, Juan también emite una transacción en Monero usando la programación correspondiente. En este caso, Monero no es compatible con OP_CHECKSEQUENCEVERIFY, sino que en su lugar usa una operación llamada DLTC o Discrete-log Timelock Contract, un sistema que permite pagos condicionales en esta moneda. Dicha operación, le permite a Juan emitir un pago en Monero, que solo se hará efectivo si Laura cumple con las condiciones. Al igual que Laura, Juan ha incluido condiciones que le permitirán recuperar los fondos en caso de que algo vaya muy mal.

En este punto, ambas partes han emitidos los pagos, pero nadie tiene el dinero. En este punto, llega la hora de comprobar las condiciones de desbloqueo, que le permitirán a Laura y Juan tomar el dinero del intercambio de forma efectiva. Así, tanto Laura como Juan revelan los secretos que protegen sus transacciones, y una vez que ambos conocen dichos secretos, podrán usarlos para desbloquear el script que retiene los pagos. En caso de que alguna de las partes haya actuado de forma maliciosa, una de las partes puede hacer uso de las medidas de seguridad para sus transacciones.

Estas medidas de seguridad son los bloqueos de tiempo, y su función es garantizar que los fondos estén inaccesibles para ambas partes por un determinado y prudencial periodo de tiempo. Así, si pasado un tiempo, una de las partes no cumple con las condiciones, la otra puede simplemente retirar su dinero del intercambio y recuperarlo, quedando como al principio.

Cross-chain swaps con otras criptomonedas

El ejemplo que hemos dado acá lo hemos realizado con Bitcoin y Monero, y pese a que es un ejemplo ficticio, se acerca a la realidad de este sistema. De hecho, el equipo de Monero está actualmente trabajando en un protocolo de cross-chain para permitir que los usuarios de Bitcoin puedan convertir su BTC en Monero usando esta aproximación.

Por supuesto esto no solo se limita con criptomonedas como Bitcoin o Monero, todas las criptomonedas tienen esta posibilidad, siempre y cuando cumplan con estos dos requisitos:

  1. Deben permitir el bloqueo a nivel de scripts.
  2. Deben permitir el bloqueo a nivel de tiempo.

Ambos bloqueos de ejecución de transacciones tienen como finalidad agregar la seguridad necesaria para que estos intercambios sean seguros. Así, por ejemplo, Ethereum podría implementar este sistema para permitir cross-chain con otras criptomonedas, y lo mismo con el resto de criptos. La única limitante en todo esto es la que los desarrolladores puedan interponer al no soportar determinadas funciones o equivalencias en la blockchain y criptomoneda.