Introducción

A menudo se considera fundamental para el funcionamiento de una cadena de bloques que el sistema sea transparente. Esto significa que cada nodo de la red puede almacenar una copia y verificar que no se infrinja ninguna regla. Para muchos libros de contabilidad distribuidos, cualquiera puede cargar un explorador de bloques en línea que le permita buscar bloques, transacciones y direcciones.

En el frente de la privacidad, esto no es lo ideal. En un sistema como Bitcoin, cada transacción se puede vincular a una anterior. Las monedas no son técnicamente fungibles, lo que significa que cada una puede vincularse a transacciones específicas. Nadie puede impedirle que envíe bitcoins, pero pueden negarse a aceptar su transacción si esas monedas han pasado previamente por una dirección incluida en la lista negra.

En el peor de los casos, la falta de fungibilidad podría afectar profundamente los cimientos mismos del sistema. Las monedas limpias pueden obtener una prima, mientras que las más antiguas serían menos valiosas dada su historia.

A menudo se exagera la privacidad en Bitcoin. No sólo se pueden rastrear las monedas, sino también los usuarios. Disfrutan del seudónimo (las direcciones públicas son visibles en lugar de los nombres), pero esto no está exento de defectos. Las técnicas de análisis sofisticadas pueden, cada vez con mayor precisión, agrupar direcciones en un intento de desanonimizar las entidades de la red.

Una actualización propuesta para que las transacciones sean verdaderamente privadas son las Transacciones Confidenciales.


¿Qué son las transacciones confidenciales?

Las transacciones confidenciales (CT) fueron discutidas por primera vez por el CEO de Blockstream, Adam Back, en 2013 y luego fueron ampliadas por el desarrollador de Bitcoin, Gregory Maxwell. Maxwell describió los problemas mencionados en la primera sección (fungibilidad y seudonimato débil) y propuso una solución. Las cantidades transferidas podrían protegerse de la red más amplia para que sólo las partes que realizaban la transacción supieran cuánto se había enviado.


Normal transactions vs Confidential transactions


En circunstancias normales (con transacciones visibles públicamente), es fácil para un nodo verificar que la cantidad recibida no excede la cantidad enviada. Si Alice quiere enviar 0,3 BTC a Bob, toma una salida no gastada (llamémosla 1 BTC) y la divide en dos partes: 0,3 para enviar a Bob y 0,69 para devolverle a ella (y el resto se pierde como una tarifa minera).

Esto es álgebra simple para otros nodos: 1 excede 0,3 + 0,69, todas las firmas son correctas y las entradas de Alice aún no se han gastado en otra parte, por lo que la transacción debe ser válida. Sin embargo, cuando se ciegan las cantidades, las cosas no son tan triviales. ¿Cómo se puede siquiera empezar a evaluar si una cantidad desconocida es igual o superior a la suma de otras dos cantidades desconocidas?


Una descripción general de la criptografía involucrada

Para ocultar datos, se requiere cifrado. Sin embargo, los métodos tradicionales son similares a guardar documentos en una caja fuerte: una vez encerrada dentro, queda inutilizable hasta que se retira. Lo que necesitamos para que las Transacciones Confidenciales funcionen es una caja fuerte digital cuyo contenido no sea revelado, pero cuyas propiedades puedan ser verificadas por un tercero.

La respuesta está específicamente en el cifrado homomórfico, en un esquema llamado compromiso de Pedersen. Este tipo de cifrado permite a un tercero realizar operaciones con datos cifrados (que no pueden ver) para diversos fines.

Se puede utilizar un hash normal para confirmar los datos que desea revelar más adelante. Supongamos que desea anunciar un concurso en las redes sociales, donde quien adivine su intercambio favorito ganará un premio de 0,01 BTC. Los participantes pueden ser escépticos porque podrían simplemente mirar las respuestas después del cierre de la competencia y elegir un intercambio que no se haya 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. Pasa su intercambio a través de una función para obtener un determinado resultado. Lo ilustraremos con el algoritmo SHA256:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


Al mirar esto, no tienes idea de cuál fue la entrada. Tampoco puedes invertir la función para obtenerla. Sin embargo, si sabe que la entrada fue "Binance", puede verificar fácilmente que su hash coincida con el mencionado anteriormente. De esta manera, tus seguidores tienen cierta seguridad de que no cambiarás tu respuesta al final de la competencia; hacerlo produciría un resultado totalmente diferente.

Sin embargo, siendo realistas, esto no es muy seguro. Si bien sus seguidores no pueden aplicar ingeniería inversa al algoritmo, pueden crear una lista de posibles intercambios, analizando cada uno de ellos hasta obtener una coincidencia. Podemos reducir la probabilidad de que esto suceda agregando algunos datos aleatorios llamados factor de cegamiento a los datos que vamos a analizar.

Si ingresamos "Binance es mi intercambio favorito, lo amo más que cualquier otro intercambio 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 compromiso de Pedersen nos permite agregar los insumos detrás de los compromisos. Como ilustra Maxwell:


confidential transaction equation


C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)

Donde BF es el factor cegado 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 tenga un compromiso de Pedersen para su dirección. Al enviar fondos, se crean dos compromisos 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 comprobar que los compromisos de cambio y destino (el lado izquierdo de la ecuación de Maxwell) suman la dirección de origen (el lado derecho de la ecuación). Si esto se evalúa correctamente, entonces la transacción del usuario es válida, ya que se puede demostrar que las entradas son iguales a las salidas.


¿Qué pueden lograr las transacciones confidenciales?

Si se implementaran transacciones confidenciales en Bitcoin, disfrutaríamos de un sistema mucho más privado. Tanto las entradas como las salidas estarían enmascaradas de la red más amplia, y las entradas en el libro mayor estarían ofuscadas, 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 solo aumentaría la demanda. También requeriría que la mayoría de los participantes aceptaran cambiar el código, una tarea que tradicionalmente ha resultado difícil.


Pensamientos finales

Las transacciones confidenciales han experimentado 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 anonimato y fungibilidad. La cadena lateral Liquid los implementa para una mayor privacidad y MimbleWimble los extiende con los mismos fines.

Por los beneficios que aportan, las transacciones confidenciales conllevan la contrapartida de una mayor huella. Las criptomonedas a menudo luchan con la escalabilidad y el rendimiento en la capa base, y las transacciones de mayor tamaño no atraen a todos. Dicho esto, los defensores de la privacidad creen que es esencial ocultar los montos de las transacciones y a los participantes para permitir realmente que las criptomonedas sirvan como dinero fungible.