Introducción

A menudo se hace referencia a Bitcoin como dinero digital, pero esta es una comparación aproximada. Si Alice le paga a Bob $10 en efectivo, Bob no tiene idea de dónde vino el dinero. Si luego se lo da a Carol, ella no podrá saber que Alice lo tenía en su poder.

Bitcoin es diferente por su naturaleza pública. Cualquiera puede ver de manera trivial el historial de una moneda determinada (más precisamente, una salida de transacción no gastada o UTXO). Es un poco como escribir el monto de la transacción y los nombres de los participantes en una factura cada vez que se usa.

Dicho esto, seudonimizar una dirección pública garantiza que las identidades de los usuarios no se revelen fácilmente. Sin embargo, bitcoin no es completamente privado. El análisis blockchain es cada vez más sofisticado y es capaz de vincular direcciones a identidades de forma cada vez más eficiente. Además de otras técnicas de vigilancia, una entidad dedicada puede desanonimizar a los usuarios de criptomonedas. Para abordar este problema, a lo largo de los años han surgido técnicas para separar transacciones.


¿Qué es la mezcla de habitaciones?

En términos generales, la mezcla de monedas puede referirse a cualquier actividad que implique la ofuscación de fondos sustituyéndolos por otros. Sin embargo, en el espacio de las criptomonedas, la mezcla de divisas generalmente indica un servicio proporcionado por un tercero. Normalmente, los proveedores de servicios toman los fondos de los usuarios (y una pequeña comisión) y devuelven fondos que no están relacionados con los enviados. Estos servicios también se conocen como vasos o batidoras.

Por supuesto, la seguridad y el anonimato de estos servicios centralizados son cuestionables. Los usuarios no tienen garantía de que el mezclador les devolverá su dinero o de que las monedas devueltas no sean manipuladas de alguna manera. Otro aspecto a considerar al utilizar un mezclador es que un tercero puede registrar las direcciones IP y Bitcoin. En última instancia, los usuarios ceden el control de sus fondos con la esperanza de recibir a cambio fondos libres.

Existe un enfoque probablemente más interesante en forma de transacciones CoinJoin, que crean un grado significativo de negación plausible. Esto significa que después de un CoinJoin, ninguna evidencia puede vincular con certeza a un usuario con sus transacciones anteriores. Muchas soluciones CoinJoin ofrecen una alternativa descentralizada a los mezcladores. Aunque puede haber un coordinador involucrado, los usuarios no necesitan sacrificar la custodia de sus fondos.


¿Qué es CoinJoin?

Las transacciones CoinJoin fueron propuestas originalmente por el desarrollador de Bitcoin Gregory Maxwell en 2013. En su hilo, ofrece una breve descripción de la estructura de estas transacciones y cómo se pueden lograr ganancias masivas de privacidad sin ninguna modificación del protocolo.

En esencia, CoinJoin implica combinar entradas de múltiples usuarios en una sola transacción. Antes de explicar cómo (y por qué), veamos la estructura de una transacción básica.

Las transacciones de Bitcoin constan de entradas y salidas. Cuando un usuario quiere realizar una transacción, toma sus UTXO como entradas, especifica las salidas y firma las entradas. Es importante tener en cuenta que cada entrada está firmada de forma independiente y los usuarios pueden definir múltiples salidas (yendo a diferentes direcciones).


image d'un exemple de transaction avec quatre entrées et deux sorties


Si consideramos una transacción determinada que consta de cuatro entradas (0,2 BTC cada una) y dos salidas (0,7 BTC y 0,09 BTC), podemos hacer algunas suposiciones diferentes. Primero, veremos que se produce un pago: el remitente envía una de las salidas a alguien y se devuelve la diferencia a sí mismo. Dado que utilizaron cuatro insumos, el resultado más importante probablemente sea para el destinatario. Tenga en cuenta que en las salidas faltan 0,01 BTC, que es la tarifa que se le otorga al minero.

También es posible que el remitente quiera crear un UTXO grande a partir de UTXO pequeños y consolide las entradas pequeñas para lograr el resultado deseado de 0,7 BTC.

Otra suposición que podemos hacer se basa en el hecho de que cada entrada está firmada de forma independiente. Esta transacción puede tener hasta cuatro partes diferentes firmando las entradas. Y este es el principio que hace que CoinJoins sea efectivo.


¿Cómo funciona CoinJoin?

La idea es que varias partes se coordinen para crear una transacción, y cada una proporcione las entradas y salidas deseadas. Como se combinan todas las entradas, resulta imposible decir con certeza a qué resultado pertenece el usuario. Examina el siguiente diagrama:


image d'un exemple de coinjoin


Aquí tenemos cuatro participantes que quieren romper el vínculo entre transacciones. Se coordinan entre sí (o mediante un coordinador dedicado) para anunciar las entradas y salidas que quieren incluir.

El coordinador tomará toda la información, la convertirá en una transacción y pedirá a cada participante que firme antes de publicarla en la red. Una vez que los usuarios firman, la transacción no se puede cambiar sin dejar de ser válida. Por lo tanto, no existe ningún riesgo de que el coordinador se escape con los fondos.

La transacción sirve como una especie de caja negra para mezclar las piezas. Recuerda que destruimos los UTXO para crear otros nuevos. La única conexión que tenemos entre el UTXO antiguo y el nuevo es la transacción en sí, pero, por supuesto, no podemos distinguir a los participantes. En el mejor de los casos, podemos decir que un participante proporcionó uno de los insumos y quizás sea el nuevo propietario de un resultado resultante.

Pero esto no está garantizado en modo alguno. ¿Quién puede decir, en lo que respecta a la transacción anterior, que hay cuatro participantes? ¿Es una persona enviando sus fondos a cuatro de sus propias direcciones? ¿Dos personas realizan dos compras por separado y cada una envía 0,2 BTC a su propia dirección? ¿Cuatro personas envían dinero a nuevos participantes o a ellos mismos? No podemos estar seguros.


Confidencialidad mediante la posibilidad de denegación

El mero hecho de que existan implementaciones de CoinJoin es suficiente para arrojar dudas sobre los métodos utilizados para analizar las transacciones. Puede inferir que se ha producido un CoinJoin en muchos casos, pero aún no puede saber quién es el propietario de las salidas. A medida que ganan popularidad, se debilita la suposición de que todas las entradas pertenecen al mismo usuario, lo que implica un aumento masivo de la privacidad en el ecosistema en su conjunto.

En el ejemplo anterior, decimos que la transacción tenía un conjunto de anonimato de 4. El propietario de una salida podría ser cualquiera de los cuatro participantes involucrados. Cuanto mayor sea el anonimato establecido, menos probable será que las transacciones puedan vincularse a su propietario original. Afortunadamente, las implementaciones recientes de CoinJoin permiten a los usuarios fusionar de manera confiable sus entradas con docenas de otras, brindando un alto grado de anonimato. Recientemente, se ejecutó con éxito una transacción de 100 personas.


Para concluir

Las herramientas de mezcla de monedas son una adición importante al arsenal de cualquier usuario preocupado por la privacidad. A diferencia de las mejoras de privacidad propuestas (como las transacciones confidenciales), estas son compatibles con el protocolo tal como existe hoy.

Para quienes confían en la integridad y metodología de terceros, los servicios de combinación son una solución sencilla. Para aquellos que prefieren una alternativa verificable y sin custodia, las alternativas de CoinJoin son superiores. Esto se puede hacer a mano para usuarios técnicamente competentes o mediante el uso de herramientas de software que abstraen los mecanismos más complejos. Ya existen un puñado de estas herramientas cuya popularidad no hace más que aumentar a medida que los usuarios se esfuerzan por mejorar su privacidad.