¿Qué es CoinJoin?

El protocolo CoinJoin, es un protocolo implementado para mejorar la privacidad y el anonimato de los usuarios de Bitcoin. Este método consiste en poder unificar en un mismo conjunto todas las transacciones que vayan a realizar distintos usuarios del sistema. Así, una vez unificadas todas estas transacciones, ningún usuario podría determinar de dónde provienen los fondos; ya que no se podrán ver ni asociar las entradas y las salidas de dichas transacciones. Así, ni siquiera el receptor de una transacción podría decir de donde ha recibido los fondos transferidos.

La implementación de este método es particularmente útil para evitar el seguimiento de los fondos recibidos o pagos realizados en el sistema Bitcoin. Sobretodo si cuidamos nuestra privacidad y recordamos que si bien Bitcoin es privado, este no es anónimo. Esto significa que es posible rastrear las transacciones de Bitcoin hasta el punto de dar con tu identidad. No es una tarea sencilla ciertamente, pero los análisis de transacciones y perfiles digitales permiten este tipo de construcciones por difícil que parezca. Cada vez es más fácil hacerlo, y las transacciones de Bitcoin no desaparecen nunca, ni desaparecerán, con todas sus vinculaciones hechas.

Por esa razón, y para aumentar la privacidad, se diseñó CoinJoin. Ahora bien conozcamos cómo funciona CoinJoin, que opciones nos ofrece y sus capacidades y limitaciones (que también las tiene).

Origen de CoinJoin

El concepto fue introducido por el desarrollador Gregory Maxwell, que en agosto de 2013 hizo una publicación en su cuenta de BitcoinTalk, donde explicaba a detalle el desarrollo y funcionamiento de su idea, resaltando además que ésta no implica una modificación en el protocolo de Bitcoin.

La necesidad de este tipo de soluciones partía de la búsqueda de una privacidad más protegida dentro de Bitcoin. Recordemos que Bitcoin no es una criptomoneda realmente anónima, sino pseudo anónima. Esto significa que cada una de las transacciones que realizamos aparece de forma completamente transparente en la blockchain.

Pero no solo eso, sino que también es posible crear un perfil completo de las direcciones que usamos. Incluyendo de qué direcciones recibimos dinero o a qué direcciones enviamos, especificando montos en cada una de ellas. Por supuesto, en cada una de estas transacciones nunca hay datos como nombres o que nos identifiquen de forma directa a nosotros como usuarios.

Pero si algo le gustan a los hackers y analistas son los retos. El reto de la privacidad de Bitcoin llevó a estos grupos a crear herramientas especializadas en estudiar estos datos y relacionarlos con cualquier otra actividad en línea que tengamos. Como resultado, recogen nuestros datos en blockchain y en Internet, crean un perfil y si no somos lo suficientemente cuidadosos, pueden dar con mucha seguridad con nuestras identidades reales.

Así es como varias empresas de análisis de blockchain logran dar con la identidad de muchos usuarios de criptomonedas, y es así, como la privacidad y el pseudo anonimato de Bitcoin quedan reducidos a nada.

Ante este panorama, la creación de CoinJoin se mostró como una respuesta satisfactoria. Esto debido a que si se usa bien esta herramienta hace prácticamente imposible rastrear a los usuarios de Bitcoin. Además, la creación de CoinJoin se mostraba técnicamente superior a la de los mixer coin, otra opción que ya se usaba en ese momento. La razón, es que CoinJoin actuaba como un protocolo P2P mientras que los mixer coins eran centralizados, dados a las estafas y otros pillajes.

¿Cómo funciona CoinJoin?

Primeramente, para llevar a cabo una transacción CoinJoin es necesario que varios usuarios de la red establezcan la decisión de utilizar este método. Es decir, que todos estén de acuerdo en unir las transacciones para realizar una sola transacción agrupada y conjunta. Es decir, sin otras personas (o mejor dicho, direcciones con fondos) queriendo  mezclarse contigo no se puede hacer uso de CoinJoin.

No obstante, esto no quiere decir que, al agrupar todas las transacciones en una sola, se esté cediendo de alguna forma el control sobre las transacciones a una parte en específico. No, más bien se trata de todo lo contrario. En las transacciones CoinJoin de Bitcoin las firmas de cada transacción siguen siendo independientes entre sí. Esto sin importar la cantidad de transacciones que se agrupen dentro de una transacción CoinJoin.

Entonces, cada usuario tendrá el control particular sobre sus entradas y salidas y firmará una operación sólo si está de acuerdo con dicha transacción y si ésta es correcta. Y hasta que todos los usuarios participantes dentro de una transacción CoinJoin firmen, la transacción no será efectuada.

Ahora bien, una vez todos los usuarios firmen cada transacción particular, éstas se agruparán en una misma transacción CoinJoin, la cual será procesada y validada por los mineros para incluirla dentro de la blockchain. Donde se verá reflejada como una transacción única y conjunta, que no muestra claramente de donde provienen los fondos o a donde fueron enviados.

Entendiendo como funciona CoinJoin

Ahora bien para entender exactamente cómo funciona CoinJoin lo mejor es verlo por medio de un ejemplo. Así tenemos el siguiente caso:

Supongamos que María  quiere transferir 1 BTC de la dirección A a la dirección B. Mientras que Juan quiere transferir 1 BTC de la dirección C a la dirección D. Para hacer que esta transacción sea privada, ambos deciden usar CoinJoin a los fines de combinar sus transferencias en una sola transacción que tiene dos entradas (A y C) y dos salidas (B y D).

Lo que hace CoinJoin en todo esto es tomar las entradas de María y Juan, combinar las mismas en una misma transacción, y a partir de ellas, mezclar estas monedas para generar las transacciones que irán a su destino. Si la operación requiere el reintegro de un cambio, la transacción CoinJoin también creará esta transacción y la enviará a una dirección de cambio bajo el control de aquella persona a quien le pertenecen esas monedas. La operación de pago de CoinJoin solo se llevará a cabo cuando María y Pedro firmen criptográficamente sus respectivas transacciones.

Sin embargo, el truco que CoinJoin hace muestra todo su poder en la blockchain. Normalmente, las transacciones de María y Juan mostrarían un claro patrón de envío de monedas. Es decir, las monedas van desde su dirección a la dirección destino. Pero en CoinJoin podemos ver una sola transacción donde se unen múltiples entradas y existen varias salidas.

Esto hace más difícil para un tercero determinar qué destinatario recibió qué salida. Incluso, el receptor de la transacción no podría determinar de qué dirección provienen los fondos recibidos, porque las UTXO no están relacionadas directamente con una dirección en sí, sino con una transacción de múltiples entradas todas ellos independientes.

De este ejemplo podemos deducir lo siguiente:

  1. CoinJoin usa el esquema de las UTXO o monedas no gastadas de Bitcoin, para generar con ellas un esquema masivo de entradas para una misma transacción. Por supuesto, estas UTXOs provienen del saldo disponible para cada una de las personas que participan en el esquema CoinJoin, por lo que mientras más personas participen mayor será el nivel de anonimato alcanzado.
  2. Al tomar todas las UTXOs de las personas en el CoinJoin como entradas, se genera un mixing de monedas provenientes de estas UTXOs.
  3. El pago de la CoinJoin se llevará a cabo una vez que todas las personas firmen la transacción conjunta y estén de acuerdo con los saldos que presenta la misma.
  4. Finalmente CoinJoin hará el pago. Dependiendo de la implementación, CoinJoin puede hacer varios pagos a otras direcciones intermedias que también crearán una CoinJoin adicional.  Una medida que busca aumentar el nivel de seguridad de la transacción. Pero finalmente, la CoinJoin llevará el saldo de pago de María y Juan a sus destinatarios. En la blockchain veremos una sola transacción, múltiples salidas  y nada que las relacione entre sí. Hemos hecho una transacción anónima.

¿Por qué es importante CoinJoin en Bitcoin?

Bitcoin es un sistema descentralizado y autónomo que ofrece cierto grado de privacidad en las transacciones. Ya que en lugar de solicitar datos personales como en los sistemas tradicionales, Bitcoin emplea únicamente direcciones, las cuales funcionan como un tipo de cuenta bancaria donde se puede recibir dinero sin ningún tipo de riesgo. No obstante, Bitcoin también es un sistema transparente y auditable, lo que significa que en un explorador blockchain se pueden observar libremente las transacciones realizadas en este sistema desde sus inicios en 2009 hasta la actualidad.

Así, aunque no se revelen datos personales, cualquier tercero podría hacerle seguimiento a ciertas direcciones para ver cómo se mueven o se gestionan los fondos en ella. Determinando la actividad transaccional de un usuario dentro de la red. Recordemos que, aunque Bitcoin no emplee datos personales de un usuario, si es posible asociar una dirección en particular con una persona o empresa.

Por ejemplo, si esa persona o empresa ha publicado abiertamente que es el dueño de una dirección en especial, o si se hace un monitoreo y seguimiento a las direcciones IP desde donde se hayan realizado varias transacciones. Por ello es que Bitcoin se conoce como un sistema pseudo anónimo, es decir, que ofrece un anonimato parcial a sus usuarios.

Esta característica hace que, en Bitcoin, sea posible marcar / etiquetar ciertas monedas como “corruptas o contaminadas”. Si al hacerles un seguimiento se descubre que han estado involucradas en intercambios fraudulentos de lavado de dinero o de financiación de actividades ilegales. Lo que le resta también la cualidad de fungibilidad a la criptomoneda; es decir, su capacidad de ser consumible y gastable. Ya que muchos usuarios de la red no querrán hacer uso de esas criptomonedas que hayan sido tachadas como “contaminadas” por estar vinculadas a actividades ilícitas. Por lo que un bitcoin ya no es igual que otro bitcoin.

Es por ello que la implementación del método CoinJoin ofrece una alternativa de solución viable para estas problemáticas de privacidad del sistema Bitcoin. Al impedir que las transacciones realizadas en la red puedan ser rastreadas por terceros o vinculadas con ciertas actividades.

Implementaciones de CoinJoin

Como mencionamos al principio, CoinJoin se implementó en un inicio en la blockchain de Bitcoin con la finalidad de mejorar su privacidad y anonimato. No obstante para la fecha existen varias implementaciones de este método, siendo los más comunes y ampliamente utilizados Samourai Wallet, Wasabi Wallet y JoinMarket.

La Samourai Wallet está orientada hacia la protección y garantía de privacidad de los usuarios. Por lo que implementa el método CoinJoin a través de la interfaz de Whirlpool para mezclar y unificar las entradas y salidas de transacciones de un mismo usuario, para hacerlas parecer que provienen de una transacción CoinJoin. Esta wallet está disponible tanto para ordenadores como para smartphone que operan con el sistema Android.

Por su parte, Wasabi Wallet emplea el servicio de Chaumian CoinJoin y el protocolo de red Tor para mezclar las transacciones y garantizar la máxima privacidad a sus usuarios. Haciendo que las transacciones sean prácticamente imposibles de rastrear, así como las IP públicas que se utilicen. En ambas wallets se manejan tarifas de comisiones por utilizar estos servicios de privacidad y anonimato.

Así mismo, la implementación del software JoinMarket de CoinJoin busca, de igual forma, mejorar la privacidad y el anonimato en las transacciones de Bitcoin. Permitiendo que los usuarios puedan comprar, a una muy baja tarifa, un lugar dentro de una transacción CoinJoin, como si de un mercado se tratase. De hecho, JoinMarket opera como un mercado para las transacciones de Bitcoin.

En resumen, la implementación de CoinJoin ha resultado ser un método muy efectivo y eficaz para asegurar la privacidad y el anonimato en la red Bitcoin. Pero como todo método, requiere de un uso masivo para garantizar el anonimato en todas las monedas bitcoins existentes hasta la fecha. Mientras mayor sea el número de usuarios que implementen CoinJoin mayor será el número de bitcoins privados.

Curiosidades sobre CoinJoin

En este punto es importante destacar algunas curiosidades sobre CoinJoin nacida de preguntas y preocupaciones de usuarios de Bitcoin. Entre ellas podemos mencionar:

CoinJoin y el mito del anonimato absoluto

CoinJoin no garantiza un anonimato al 100%. Esto debido a que todavía se puede hacer análisis de datos, comportamiento de blockchain, incluso interceptación de datos en red para el análisis de un objetivo bajo investigación que use Bitcoin. Así que el mito de que CoinJoin garantiza un 100% de privacidad es falso. Ciertamente lo mejora en un nivel no visto en Bitcoin sin este protocolo, pero el anonimato completo no está garantizado de ninguna manera.

Costes de una transacción

El costo de una transacción CoinJoin es mucho más alto que el de una transacción común de Bitcoin. Esto se debe a que CoinJoin realiza “saltos de mezclas” que no son más que transacciones adicionales de criptomonedas entre los participantes del CoinJoin. Cada uno de estos saltos genera una nueva transacción que a su vez tiene un fee de minería asociado. En total, mientras más saltos de minería mayor será el anonimato alcanzado pero mayor costo tendrá la transacción CoinJoin final.