¿Por qué necesitamos CoinJoin?
La privacidad es un tema crucial, especialmente cuando se trata de transacciones de Bitcoin. Una de las herramientas más efectivas para mejorar la privacidad en este contexto es CoinJoin. Pero, ¿por qué necesitamos CoinJoin? La respuesta radica en su capacidad para romper enlaces deterministas, crear incertidumbre y generar múltiples interpretaciones de las transacciones.
La necesidad de CoinJoin
Frecuentemente, se escuchan diversas opiniones sobre la blockchain, su naturaleza abierta y el concepto de «privacidad». Sin embargo, desde un punto de vista técnico, la realidad es más precisa. La mayoría de las transacciones de Bitcoin no generan incertidumbre en la blockchain. Cada transacción tiene una interpretación única, determinada por el número de entradas y salidas, así como por la cantidad de BTC asociada a cada una. Esta única interpretación simplifica el seguimiento de los flujos de bitcoin.
El «flujo» de Bitcoin en una transacción puede servir como un modelo mental para comprender la relación entre las entradas y salidas. En este contexto, las conexiones entre ellas se asemejan a tuberías que transportan valor de un punto a otro.
Por ejemplo, en una transacción simple, la entrada 0 pagó a la salida 0. Esta transacción tiene un enlace DETERMINISTA y una única INTERPRETACIÓN.
Las transacciones con múltiples entradas y salidas pueden tener muchos enlaces deterministas. Si cada relación entre entradas y salidas es DETERMINISTA, la transacción aún tendrá una única INTERPRETACIÓN.
Definición de enlaces deterministas
Un enlace determinista es una conexión específica entre una entrada y una salida de una transacción, determinada por todas las combinaciones de las cantidades de BTC en cada entrada y salida. Kristov Atlas desarrolló CoinJoin Sudoku para analizar transacciones en busca de enlaces deterministas durante su revisión del protocolo «CoinJoin» SharedCoin de BC.i.
Atlas fue capaz de aprovechar este caos y establecer vínculos deterministas entre entradas y salidas, incluso para salidas de cantidades idénticas.
El objetivo de CoinJoin
Una transacción real de CoinJoin tiene como objetivo romper estos enlaces deterministas mediante el uso de salidas de tamaño IDÉNTICO. Al deshacer los enlaces deterministas entre entradas y salidas, se generan múltiples interpretaciones de una transacción, lo que se traduce en un mayor número de «tuberías» en el modelo térmico. Esta es la razón por la que implementamos CoinJoin.
Sin embargo, una transacción que incluya algunas salidas (no todas) de tamaño idéntico aún puede presentar enlaces deterministas. La manera más efectiva de prevenir estos enlaces es asegurarse de que todas las salidas sean idénticas. Pero si los enlaces entre entradas y salidas no son deterministas, ¿cómo podemos evaluarlos? A pesar de ello, siguen estando interconectados.
Aquí es donde entran los enlaces probabilísticos, definidos por LaurentMT.
Existen suposiciones y simplificaciones que se emplean para identificar estos enlaces, siendo la matriz de enlaces probabilísticos (LPM) una herramienta eficaz para evaluar el número de interpretaciones posibles de una transacción.
Evaluando la privacidad
Debemos evaluar la «privacidad» de una transacción en función del costo computacional asociado a su análisis. A medida que aumenta el número de interpretaciones posibles, también se eleva el costo de su evaluación, lo que se traduce en una mayor «privacidad». En este contexto, una transacción con múltiples interpretaciones se vuelve más compleja de analizar y, por lo tanto, más protegida.
El modelo matemático basado en la matriz de enlaces probabilísticos (LPM) se emplea para evaluar las mejores prácticas en un CoinJoin. Cuando estas prácticas no se siguen, tanto el número de interpretaciones posibles como el costo del análisis disminuyen. Por ejemplo, la LPM penaliza directamente la reutilización de direcciones, asignando un valor de 1 (100% de enlace) a toda una columna o fila, y también impone penalizaciones a los enlaces deterministas.
Estas métricas no son infalibles y pueden verse influenciadas por información externa a la blockchain. Aunque no existen medidas de privacidad absolutas, pueden proporcionar una indicación valiosa sobre la calidad de un CoinJoin.
Resumiendo
Para resumir (en el caso de entradas/salidas constantes):
- A menor número de enlaces deterministas ⇒ Mayor cantidad de interpretaciones ⇒ más cerca de una transacción de CoinJoin «ideal» ⇒ Mayor privacidad de la transacción.
- Cuanto más parecidas sean las cantidades de entrada/salida ⇒ Mayor cantidad de interpretaciones ⇒ más cerca de una transacción de CoinJoin «ideal» ⇒ Mayor privacidad de la transacción.
Si quieres entender mejor esto, realmente deberías leer los gists de LaurentMT sobre Boltzmann.
Para realmente comprender este tema, te recomiendo revisar la conversación entre Adam Gibson (JoinMarket) y LaurentMT en la sección de comentarios de este resumen:
https://gist.github.com/LaurentMT/e758767ca4038ac40aaf#gistcomment-2851522
*Esta entrada es un resumen del hilo escrito por @ErgoBTC