Introducción a CoinSwap: una herramienta para usar Bitcoin de forma más privada

La privacidad en Bitcoin es un punto a mejorar desde el día 1. En ese momento, incluso se revelaban las direcciones IP de los usuarios, pero hoy, once años después, si bien ha habido cambios y evolución, el debate sigue vivo y las herramientas para añadir ofuscación a la red están a la orden del día. En esta evolución surge CoinSwap.

En CoinTelegraph en Español ya hemos hablado de CoinJoin, otro tipo de transacción que permite eliminar la relación entre quien envía y quien recibe a través de la unión de un número n de UTXO como entradas, en una misma transacción para que llegue a su destino.

Si bien hay ciertas similitudes, uno de los principales avales de esta nueva propuesta es que mejora el funcionamiento de las CoinJoin, especialmente en cuanto a la gestión de UTXO de un mismo monto. ¿Qué es? ¿Cómo funciona? ¿De dónde viene? Responderemos todas estas preguntas sobre CoinSwap.

¿Qué es CoinSwap?

CoinSwap es una forma de intercambiar una moneda por otra moneda de manera no custodial. Está estrechamente relacionado con la idea de un intercambio atómico (atomic swap)”, según la descripción del desarrollador Chris Belcher en GitHub. 

En principio, podemos decir que CoinSwap es un protocolo de privacidad. A pesar de esta impronta, las transacciones que se realizan a través de CoinSwap se ven igual que cualquier transacción regular. 

Esto quiere decir que cualquier entidad que vigile la cadena de bloques de Bitcoin quedará con menos datos para distinguir una transacción por encima de otra, tal como sucede ahora con los CoinJoin, que pueden ser reconocidos porque las UTXO tienen el mismo tamaño.

Si bien esta forma de ofuscar las transacciones de Bitcoin fue enunciada por Greg Maxwell en 2013, retomando una idea propuesta por el argentino Sergio Lerner en 2012; en 2020 es Belcher quien avanza una implementación. El objetivo es mejorar la idea original de Maxwell, añadiendo una serie de elementos que permitan que estas transacciones sean resistentes a la observación de agentes externos, especialmente por lucir como una transacción cualquiera.

¿Cómo funciona?

El principio básico es que al menos 2 entidades intercambian (swap) sus UTXO. Sin embargo, no hay un intercambio más que de las entradas no gastadas, y no hay una interacción directa entre los participantes. Para esto, Belcher propuso una solución similar a la de JoinMarket, de la que también es creador.

JoinMarket es un mercado de liquidez para realizar CoinJoin, una de las varias implementaciones disponibles actualmente, aunque con un esquema propio de funcionamiento en el que algunos usuarios son proveedores de liquidez. En el caso de CoinSwap, el proveedor de liquidez incluirá a otros usuarios interesados en recibir comisiones solo por “prestar” sus bitcoins para que los swaps ocurran.

Te puede interesar: CoinJoin: conoce lo básico de este tipo de transacciones para hacer de Bitcoin más privado

Uno de los elementos clave es que no se hacen transacciones exactas para llegar a los montos que se busca intercambiar. Así, en el caso de que Alice quiera limpiar 10 BTC utilizando CoinSwap, su contraparte, enviaría los bitcoins a Alice en varias transacciones hasta completar el total. Recordemos que hay más participantes, Caroline, Doug, Edward, etc.

Para añadir mayor ofuscación, y aprovechando las nuevas capacidades del protocolo, especialmente con los pagos multifirma, el protocolo diseñado por Belcher utiliza distintas UTXO hasta completar el monto: Alice recibiría 3, 5 y 2 BTC respectivamente.

Todas estas operaciones serán firmadas como una transacción normal, y así serán añadidas en la blockchain. Además, el intercambio básico, entre Alice y Bob, se basa en dos transacciones separadas, que son dependientes entre sí; es decir, ninguna de las partes involucradas en un CoinSwap puede negarse a devolver los fondos.

Por si fuera poco, en su diseño, Belcher propone que al original intercambio entre 2 partes (A —>B), se le añadan cuantos “Bobs” sean posibles. Con la misma estructura de multifirmas y multipagos, hacer aún más ofuscado el movimiento de los fondos, de manera que ni siquiera los participantes sabrían de quién son los fondos (lo que podría pasar si solo participaran Alice y Bob).

La capacidad de anonimizar de CoinSwap es tal que incluso podrían utilizarse direcciones Legacy, de formato p2wpkh, y es un tipo de mejora a la privacidad que no requiere cambios es el protocolo, un elemento significativo cuando se trata de modificaciones en Bitcoin.

Algunos detalles sobre CoinSwap

A nivel técnico, la implementación de CoinSwap de Belcher utilizará un esquema de 2-of-2 multisig, es decir, dos llaves privadas deben firmar la transacción para que pueda realizarse, y el servidor del CoinSwap no tiene forma de gastar las UTXO de manera independiente. ¿Pero cómo es que una transacción multisig parece una transacción común? Esto se debe a que utiliza multi party ECDSA completation para firmar las transacciones que salen desde la dirección de CoinSwap.

De esta forma, rompe la heurística de common-input-ownership, que asume que las transacciones con múltiples entradas “generalmente surgen si la billetera del usuario (payer – A) no tiene un solo UTXO lo suficientemente grande como para cumplir con el monto del pago de la contraparte (payee – B)”,

Los “Bobs” de la transacción de Alice podrían coludir para robar sus fondos. Sin embargo, la idea de Belcher incluye un incentivo para solucionar esto. Los proveedores de liquidez (posiblemente hodlers que quieran ganar más satoshis vía comisiones; o aquellos que quieran ayudar a la privacidad de la red) además tienen un bono de fidelidad. 

Los incentivos por participar de manera honesta en la implementación son mayores a los costos (coordinación con extraños incluida) para coludir.

No es suficiente

Cabe destacar que a pesar de lo prometedora que resulta la implementación de Belcher, CoinSwap no resuelve los debates de privacidad en la cadena de bloques, rompe heurísticas y asunciones que relacionan ciertas transacciones, pero solo una adopción importante de esta herramienta ayudaría a darle privacidad a la red.

El desarrollador ha puesto como ejemplo la adopción de SegWit. A pesar de que ya han pasado 3 años desde la activación de este elemento en el protocolo de Bitcoin, la adopción se ubica en 60%, incluso a pesar de que supondría un importante alivio en cuanto a las comisiones y la gestión de la información que se añade a la blockchain.

Es importante decir que, recientemente el propio Belcher señaló que no espera tener la implementación lista antes de 6 a 9 meses, de manera que no se trata de una solución inmediata ni mucho menos.

Sigue leyendo: