Una de las propuesta de actualización para que las transacciones de criptomonedas sean verdaderamente privadas es Confidential Transactions (Transacciones Confidenciales).
A menudo se considera crítico para el funcionamiento de una blockchain que el sistema sea transparente. Esto significa que cada nodo de la red debe poder almacenar una copia y verificar que ninguna norma haya sido vulnerada. En el caso de muchos libros mayores distribuidos (distributed ledgers), cualquiera puede cargar un explorador de bloques online que le permitirá hacer búsquedas a través de bloques, transacciones y direcciones.
Desde el punto de vista de la privacidad, no se trata de una situación ideal. En un sistema como Bitcoin, cualquier transacción puede ser vinculada a aquella que la precede. Las monedas no son fungibles desde un punto de vista técnico, lo que significa que pueden ser relacionadas con transacciones específicas. Nadie puede impedir que envíes bitcoin, pero tu transacción podrá ser rechazada si las monedas involucradas en la misma han pasado por una «blacklisted address» (una dirección en una lista negra) previamente.
En el peor de los escenarios, la falta de fungibilidad podría impactar de un modo profundo en los mismos cimientos del sistema. Las monedas «limpias» podrían desarrollar una prima sobre su valor, mientras que las viejas, por culpa de su historial, resultarían menos valiosas.
¿Qué son las Transacciones Confidenciales?
Las Confidential Transactions (CT) fueron abordadas por primera vez en 2013 por Adam Back, CEO de Blockstream; y posteriormente Gregory Maxwell -desarrollador de Bitcoin- ampliaría su análisis. Maxwell destacaría los problemas mencionados en la sección anterior (es decir, fungibilidad y un débil «pseudonimato»), y propondría una solución. Las cantidades enviadas podían blindarse frente al resto de la red, para que solo las partes involucradas en la transacción pudieran conocer dicho dato.
En circunstancias normales (con transacciones visibles de forma pública), resulta sencillo para un nodo verificar que la cantidad recibida no excede la cantidad enviada. Si Alice desea enviar a Bob 0.3 BTC, tomará un output que no haya sido gastado; pongamos por caso 1 BTC) y lo dividirá en dos partes: 0.3 que enviará a Bob, y 0.69 que se enviará de vuelta a sí misma; la diferencia que falta corresponde a la deducción de la comisión de minado).
Para los otros nodos esto es simple álgebra: 1 es mayor que 0.3 + 0.69, las firmas son todas correctas; y los inputs de Alice no han sido gastados todavía en ningún otro sitio, por lo que la transacción debe ser válida. Cuando las cantidades se ofuscan, sin embargo, las cosas dejan de ser tan triviales. ¿Cómo puedes siquiera evaluar si una cantidad desconocida iguala o excede la suma de otras dos cantidades desconocidas?
Visión General de la Criptografía en las Transacciones Confidenciales
Para ocultar datos, se requiere encriptación. Sin embargo, los métodos tradicionales son comparables a guardar documentos en una caja fuerte: una vez encerrados dentro, resultan inutilizables hasta que ésta se elimina. Lo que necesitamos para que las Confidential Transactions funcionen es una caja fuerte digital que no revele su contenido, pero cuyas propiedades puedan ser verificadas por una persona ajena.
La respuesta a esta cuestión radica en la encriptación homomórfica, específicamente, en un esquema denominado «Pedersen commitment». Este tipo de encriptación permite a una persona externa ejecutar operaciones con datos cifrados (los cuales no puede ver) para una serie de propósitos.
Ejemplo
Un hash ordinario puede ser utilizado para hacer un commit de datos que deseas revelar posteriormente. Imagina que quieres anunciar una competición en redes sociales, en la que cualquiera que adivine tu exchange favorito ganará un premio de 0.01 BTC. Los participantes podrían mostrarse escépticos ante el hecho de que tengas la posibilidad de ver las respuestas después de que la competición haya concluido, y puedas escoger un exchange que no haya sido mencionado.
Lo que podrías hacer es proporcionar a tus seguidores un hash; una cadena de números y caracteres aparentemente aleatorios que se asignan a una entrada específica. Tu pasas tu intercambio a través de una función para obtener un cierto resultado. Ilustraremos con el algoritmo SHA256: f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191
Mirando esto, no tienes idea de cuál fue la entrada. Tampoco puedes revertir la función para obtenerla. Sin embargo, si sabes que la entrada fue «Binance«, puedes verificar fácilmente que tu hash coincida con el que se menciona arriba. De esta manera, tus seguidores tienen la seguridad de que no cambiarás tu respuesta al cierre de la competencia; ya que esto produciría un resultado totalmente diferente.
Sin embargo, de manera realista, esto no es muy seguro. Si bien tus seguidores no pueden realizar ingeniería inversa al algoritmo, pueden crear una lista de posibles intercambios, haciendo hashing a cada uno hasta que obtengan una coincidencia. Podemos reducir la probabilidad de esto agregando algunos datos aleatorios llamados factores de cegamiento a los datos que vamos a hashear.
Solución
Si ingresamos «Binance es mi exchange favorito, me encanta más que cualquier otro exchange 2#43Wr»; se vuelve mucho más difícil de adivinar para un oponente (y por 0.01 BTC, ciertamente es poco probable que alguien lo intente). Un Pedersen commitment nos permite agregar los aportes detrás de los commitment. Como ilustra Maxwell: C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2). Donde BF es el factor de cegamiento y D son los datos
Hay algunos pasos más a partir de aquí que involucran criptografía de curva elíptica y pruebas de rango; pero la idea básica es que un usuario tiene un pedersen commitment para su dirección. Al enviar fondos, se crean dos commitment adicionales; uno para la dirección de cambio que se devolverá al usuario y otro para la dirección de destino.
Nadie sabe cuánto se envía, pero pueden verificar que los commitment de cambio y destino (el lado izquierdo de la ecuación de Maxwell) se sumen a la dirección de origen (el lado derecho de la ecuación). Si esto se evalúa correctamente, la transacción del usuario es válida, ya que se puede demostrar que las entradas son iguales a las salidas.
¿De Qué son Capaces las Transacciones Confidenciales?
Si las transacciones confidenciales se implementaran en Bitcoin, disfrutaríamos de un sistema mucho más privado. Tanto las entradas como las salidas se enmascararían de la red más amplia; y las entradas en el ledger se ofuscarían, pero los nodos aún podrían verificar su autenticidad. Con este aumento masivo de la privacidad, los bitcoins pueden volverse efectivamente fungibles; ya que el análisis de la cadena ya no revela la historia de una unidad determinada.
En cuanto a si las transacciones confidenciales se integrarán en el protocolo, no parece probable en este momento. Con esta funcionalidad adicional, las transacciones son mucho más grandes que las estándar: dado el espacio de bloque limitado, esto sólo aumentaría la demanda. También requeriría que la mayoría de los participantes acuerden cambiar el código, una tarea que tradicionalmente ha resultado ser difícil.
En Conclusión
Las transacciones confidenciales han visto algunas iteraciones en otras criptomonedas y cadenas laterales de Bitcoin. Por ejemplo, Monero los usa en combinación con construcciones llamadas firmas de anillo para lograr el anonimato y la fungibilidad. Liquid sidechain los implementa para una mayor privacidad, y MimbleWimble los extiende a los mismos extremos.
Por los beneficios que aportan, las Transacciones confidenciales vienen con la compensación de una huella más grande. Las criptomonedas a menudo luchan con la escalabilidad y el rendimiento en la capa base; y los tamaños de transacción más grandes no son atractivos para todos. Dicho esto, los defensores de la privacidad creen que es esencial ocultar los montos de las transacciones y que los participantes realmente permitan que la criptomoneda sirva como dinero fungible.