¿Qué es el mezclado de monedas y CoinJoin?

· 5 min read

A menudo se describe Bitcoin como dinero digital, pero la comparación es discutible. Si Alice le paga 10 dólares en efectivo a Bob, Bob no sabrá de dónde salió ese dinero. Y si más tarde Bob se lo entrega a Carol, ella no podrá deducir que antes estuvo en manos de Alice.

Con Bitcoin ocurre lo contrario, precisamente por su naturaleza abierta. El historial de una moneda concreta (es decir, de una salida de transacción no gastada o UTXO) puede consultarlo cualquiera sin dificultad. Es como si cada vez que se usa un bitcoin se anotaran en una factura el importe y el nombre de quien lo recibe.

Ahora bien, como las direcciones públicas no llevan nombres, la identidad de los usuarios no queda expuesta de forma inmediata. Aun así, Bitcoin no es completamente privado. El análisis de blockchain es cada vez más sofisticado y logra vincular direcciones e identidades con más éxito. Además de estas técnicas de rastreo, una unidad dedicada específicamente a ello también puede destapar la identidad de los usuarios de criptomonedas. Para evitarlo, con los años han aparecido técnicas capaces de romper el vínculo entre transacciones.

¿Qué es el mezclado de monedas?

En términos generales, el mezclado de monedas engloba las operaciones destinadas a ocultar unos fondos intercambiándolos por otros. Sin embargo, en el mundo cripto suele referirse a los servicios que ofrecen terceros. El proveedor recibe las monedas del usuario (y una pequeña comisión) y le devuelve otras monedas distintas, sin ninguna relación con las enviadas. Estos servicios también se conocen como tumblers o mezcladores.

Por supuesto, la seguridad y la privacidad de estos servicios centralizados plantean dudas. Nada garantiza que el mezclador vaya a devolver los fondos ni que las monedas recibidas estén libres de un historial de transacciones problemático. Otro punto a tener en cuenta es que un tercero puede registrar tanto las direcciones IP como las direcciones de Bitcoin. En última instancia, el usuario confía sus fondos a otra persona con la esperanza de recibir monedas sin rastro.

Un enfoque más interesante son las transacciones CoinJoin, que generan un grado considerable de negación plausible. Es decir, una vez realizada una transacción CoinJoin, no existe prueba alguna que establezca de forma concluyente la conexión entre un usuario y sus transacciones anteriores. Muchas soluciones CoinJoin ofrecen una alternativa más descentralizada que los mezcladores: el usuario no tiene que ceder la custodia de sus fondos, aunque en el proceso pueda intervenir un coordinador.

¿Qué es CoinJoin?

Las transacciones CoinJoin las presentó por primera vez el desarrollador de Bitcoin Gregory Maxwell en 2013. En su artículo explicaba brevemente cómo se estructuran y cómo pueden aportar una mejora enorme de la privacidad sin necesidad de modificar el protocolo.

En esencia, CoinJoin consiste en combinar entradas de distintos usuarios dentro de una sola transacción. Antes de explicar cómo (y por qué) se hace, conviene repasar la estructura básica de una transacción.

Las transacciones de Bitcoin se componen de entradas y salidas. Cuando un usuario quiere operar, utiliza sus UTXO como entradas, define las salidas y firma las entradas. Un detalle importante: cada entrada se firma de forma independiente y el usuario puede crear varias salidas, es decir, enviar fondos a distintas direcciones.

Si analizamos una transacción con cuatro entradas (de 0,2 BTC cada una) y dos salidas (0,7 BTC y 0,09 BTC), podemos formular algunas hipótesis. La primera es que se trata de un pago: el emisor manda una de las salidas a otra persona y el cambio a sí mismo. Como emplea cuatro entradas, lo más probable es que la salida mayor vaya al destinatario. Si en la suma faltan 0,01 BTC, esa diferencia es la comisión pagada al minero.

También es posible que el emisor quiera crear un UTXO grande a partir de otros más pequeños y, por eso, combine las entradas menores hasta alcanzar los 0,7 BTC que busca.

Otra hipótesis parte del hecho de que cada entrada se firma por separado. La transacción podría haberse construido de manera que las entradas las firmaran cuatro partes distintas. Ese es precisamente el principio que hace que CoinJoin funcione.

¿Cómo funciona CoinJoin?

La idea central es que varias partes se coordinan para crear una transacción comunicando sus entradas y las salidas que desean. Una vez combinadas todas las entradas, resulta imposible afirmar con certeza qué salida pertenece a qué usuario. El proceso se ve en el siguiente esquema:

Aquí tenemos a cuatro usuarios que quieren romper el vínculo entre sus transacciones. Se coordinan entre ellos (o a través de un coordinador) para comunicar las entradas y salidas que quieren incluir.

El coordinador reúne toda la información, construye la transacción y hace que cada participante la firme antes de difundirla en la red. Una vez firmada por todos, la transacción ya no puede modificarse sin invalidarla. Así se elimina el riesgo de que el coordinador se quede con los fondos.

La transacción actúa como una caja negra que mezcla las monedas. Para crear UTXO nuevos hay que destruir los antiguos, y el único nexo entre unos y otros es la propia transacción; llegados a ese punto, ya no es posible distinguir a los participantes entre sí. Como mucho puede decirse que uno de ellos aportó una de las entradas y que podría ser el nuevo propietario de la salida resultante.

Pero ni siquiera eso es una garantía. ¿Puede deducirse de la transacción anterior que hay cuatro participantes? ¿Y si una sola persona está enviando fondos a cuatro direcciones propias? ¿O si dos personas hacen dos compras distintas y se devuelven 0,2 BTC a su propia dirección? ¿O si cuatro personas envían fondos a terceros o a sí mismas? No hay forma de responder con precisión a estas preguntas.

Privacidad mediante la negación plausible

El simple hecho de que existan aplicaciones CoinJoin basta para poner en duda los métodos con los que se analizan las transacciones. Puedes concluir que en muchas operaciones se usa CoinJoin, pero seguirás sin saber a quién pertenecen las salidas. A medida que estas aplicaciones han ganado popularidad, la suposición de que todas las entradas pertenecen al mismo usuario se ha debilitado, lo que supone un gran avance para la privacidad de todo el ecosistema.

En el ejemplo anterior, la transacción tiene un conjunto de anonimato de 4: el dueño de la salida puede ser cualquiera de los cuatro usuarios implicados. Cuanto mayor es ese conjunto, más difícil resulta vincular una transacción con su propietario original. Por suerte, gracias a las últimas implementaciones de CoinJoin, los usuarios pueden combinar sus entradas con decenas de personas sin necesidad de confiar en nadie, lo que asegura un alto grado de negación plausible. Hace poco se llevó a cabo con éxito una transacción con 100 participantes.

Reflexiones finales

Las herramientas para mezclar monedas son un recurso importante al alcance de cualquier usuario preocupado por su privacidad. A diferencia de otras mejoras en este terreno (como las Transacciones Confidenciales), pueden aprovecharse sin alterar el estado actual del protocolo.

Para quien confía en la integridad y los métodos de terceros, los servicios de mezclado ofrecen una solución sencilla. Para quien prefiere alternativas verificables y sin custodia, CoinJoin es claramente superior. Estas operaciones puede realizarlas manualmente un usuario con conocimientos técnicos o bien delegarlas en herramientas de software que evitan lidiar con mecanismos complejos. Ya existen varias de ellas, y su popularidad crece a medida que los usuarios buscan más privacidad.