Introducción
A menudo se hace referencia a Bitcoin como efectivo digital, pero esta es una comparación cuestionable. Si Alice le paga a Bob diez dólares en efectivo, Bob no tiene idea de dónde vino el dinero. Si luego se lo da a Carol, ella no podrá deducir que Alice alguna vez estuvo en posesión de él.
Bitcoin es diferente debido a su naturaleza pública inherente. Cualquiera puede observar trivialmente la historia 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, el seudónimo de una dirección pública garantiza que las identidades de los usuarios no se revelen fácilmente. Aún así, Bitcoin no es completamente privado. El análisis de blockchain se vuelve cada vez más sofisticado y es capaz de vincular direcciones a identidades de manera cada vez más eficiente. Además de otras técnicas de vigilancia, una entidad dedicada puede desanonimizar a los usuarios de criptomonedas. Para remediar esto, a lo largo de los años han surgido técnicas para desvincular transacciones.
¿Qué es la mezcla de monedas?
A grandes rasgos, la mezcla de monedas podría 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 monedas comúnmente denota un servicio proporcionado por un tercero. Normalmente, los proveedores de servicios toman las monedas de los usuarios (y una pequeña tarifa) y devuelven monedas que no tienen ningún vínculo con las enviadas. Estos servicios también se conocen como vasos o batidoras.
Por supuesto, la seguridad y el anonimato de dichos 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 estén contaminadas de alguna manera. Un aspecto adicional a considerar al usar 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 recuperar los no vinculados.
Podría decirse que existe un enfoque más interesante en forma de transacciones CoinJoin, que crean un grado significativo de negación plausible. Es decir, 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 inicialmente por el desarrollador de Bitcoin Gregory Maxwell en 2013. En su hilo, ofrece una breve descripción de cómo se estructuran estas transacciones y cómo se pueden lograr ganancias masivas de privacidad sin ningún cambio en el protocolo.
En esencia, CoinJoin implica la combinación de entradas de múltiples usuarios en una sola transacción. Antes de explicar cómo (y por qué), echemos un vistazo a la estructura de una transacción básica.
Las transacciones de Bitcoin se componen 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 se firma de forma independiente y los usuarios pueden configurar múltiples salidas (yendo a diferentes direcciones).
Si observamos una transacción determinada compuesta por cuatro entradas (0,2 BTC cada una) y dos salidas (0,7 BTC y 0,09 BTC), podemos hacer algunas suposiciones diferentes. La primera es que estamos observando cómo se realiza un pago: el remitente envía uno de los resultados a alguien y se devuelve algún cambio. Dado que han utilizado cuatro insumos, el mayor resultado probablemente sea para el destinatario. Tenga en cuenta que nos faltan 0,01 BTC en las salidas, 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 otros más pequeños, por lo que consolida entradas más pequeñas para obtener 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 podría tener hasta cuatro partes diferentes firmando las entradas. Y ahí radica el principio que hace que CoinJoining sea efectivo.
¿Cómo funciona CoinJoin?
La idea es que varias partes se coordinen para crear una transacción, cada una proporcionando entradas y salidas deseadas. Como se combinan todas las entradas, resulta imposible decir con certeza qué salida pertenece a qué usuario. Considere el siguiente diagrama:
Aquí tenemos cuatro participantes que desean romper el vínculo entre transacciones. Se coordinan entre ellos (o a través de un coordinador exclusivo) para anunciar las entradas y salidas que les gustaría incluir.
El coordinador tomará toda la información, la elaborará en una transacción y hará que cada participante firme antes de transmitirla a la red. Una vez que los usuarios han firmado, la transacción no se puede modificar sin dejar de ser válida. Por lo tanto, no existe riesgo de que el coordinador se quede con los fondos.
La transacción sirve como una especie de caja negra para mezclar monedas. Recuerde que efectivamente destruimos UTXO para crear otros nuevos. El único vínculo que tenemos entre los UTXO antiguos y nuevos es la transacción en sí, pero, por supuesto, no podemos distinguir entre los participantes. En el mejor de los casos, podemos decir que un participante proporcionó uno de los insumos y tal vez sea el nuevo propietario de un resultado resultante.
Pero ni siquiera eso está garantizado. ¿Quién puede decir, al observar la transacción anterior, que hay cuatro participantes? ¿Esta persona envía sus fondos a cuatro de su propia dirección? ¿Dos personas realizan dos compras separadas y devuelven 0,2 BTC cada una a sus propias direcciones? ¿Cuatro personas envían a nuevos participantes o regresan a ellos mismos? No podemos estar seguros.
Privacidad a través de la negació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 deducir que se ha producido un CoinJoin en muchos casos, pero aún no sabe quién es el propietario de las salidas. A medida que crecen en popularidad, se debilita la suposición de que todas las entradas pertenecen al mismo usuario: un salto enorme para la privacidad en el ecosistema más amplio.
En el ejemplo anterior, decimos que la transacción tenía un conjunto de anonimato de 4: el propietario de un resultado podría ser cualquiera de los cuatro participantes involucrados. Cuanto mayor sea el conjunto de anonimato, menos probable será que las transacciones puedan vincularse a su propietario original. Afortunadamente, las implementaciones recientes de CoinJoin hacen que sea trivial para los usuarios fusionar sin confianza sus entradas con docenas de otras, lo que proporciona un alto grado de negación. Recientemente, se ejecutó con éxito una transacción de 100 personas.
Pensamientos finales
Las herramientas para mezclar monedas son una adición importante al arsenal de cualquier usuario que se tome en serio su privacidad. A diferencia de las actualizaciones de privacidad propuestas (como las Transacciones Confidenciales), son compatibles con el protocolo tal como es hoy.
Para aquellos que 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 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 sigue creciendo a medida que los usuarios se esfuerzan por lograr una mayor privacidad.