A puertas de Byzantium, el hardfork que según el equipo de Ethereum sucederá en las próximas 24 horas, seguimos explicando sus implementaciones, esta vez en cuanto a la privacidad.
¿Qué son los zk-SNARKs?
Una de las actualizaciones más esperadas y comentadas por los usuarios de Ethereum es la próxima implementación de los zk-SNARKs, siglas para “Zero-Knowledge Succint Non-Interactive Argument of Knowledge”, una prueba de procesamiento de cero conocimiento que incrementa la privacidad de las transacciones en la red.
Como asegura Christian Reitwießner en el papel blanco de Zk-SNARKS, la Prueba de Cero Conocimiento (PCC) crea simulacros ligeros de ejecutar y que cumplen la tarea de verificar la información:
Las posibilidades de zk-SNARKs son impresionantes; puedes verificar la veracidad de respuestas computacionales sin tener que ejecutarlas, y ni siquiera saber qué se ejecutó, sólo que se ha hecho de manera correcta.
Christian Reitwießner
Desarrollador
Uno de los proyectos que mayormente ha implementado zk-SNARKs es Zcash, cuya principal atribución es la privacidad de las transacciones. Su equipo desarrollador se encuentra trabajando muy de cerca con el de Ethereum, como en CriptoNoticias reseñamos durante las pruebas realizadas en la testnet de Ethereum acerca de los Zk-SNARKS el pasado mes de septiembre, en las que participó Reitwießner.
Para entender el funcionamiento y el rol que zk-SNARKs cumplirá en las transacciones de Ethereum, se debe comprender el funcionamiento de un contrato inteligente primero.
Básicamente, un contrato inteligente es una transacción ejecutada automáticamente en cuanto se cumplen una serie de requisitos de la red Ethereum. Por ejemplo, Héctor dispone de 100 ETH depositados en un contrato inteligente pactado con Luis. Si Luis cumple con las condiciones del contrato, este se ejecutará automáticamente transfiriendo los 100 ETH a su dirección. Obviamente, el contrato verifica que Luis esté diciendo la verdad, y la contraparte del contrato también puede validarlo, aunque existen mecanismos como los oráculos que toman información verdadera del mundo real y la transmiten a contratos inteligentes.
Ahora, planteemos un escenario donde las tareas que tiene que realizar Luis para obtener los 100 ETH son confidenciales y privadas. Luis trabaja para una compañía cuyos procesos operativos no pueden ser revelados. Con el fin de de proteger esa información de ser observada por la competencia o por terceros, se implementa el protocolo zk-SNARKs, que se encarga de probar la veracidad del cumplimiento de esas tareas sin revelar en qué consisten, certificando la honestidad de Luis sin vulnerar su privacidad y dando confianza a Héctor para continuar con la transacción.
Para ejecutar los zk-SNARKs, la transacción debe cumplir con tres requisitos, que son:
Integridad: Héctor y Luis comparten el mismo protocolo verificado -la misma plataforma- y lo validan como una serie de parámetros honestos e íntegros.
Solvencia: si Héctor hace 150 pruebas aleatorias sobre las condiciones del contrato y la veracidad de la información suministrada por Luis, las probabilidades de que Luis engañe a Héctor serían menores al 0.5%.
Cero Conocimiento: Luis nunca reveló a Héctor cuáles fueron los pasos que siguió para cumplir el contrato, pero Héctor puede realizar suficientes pruebas para verificar que Luis no miente.
La cueva de Alibaba
La prueba zk-SNARKs se puede ejemplificar de la siguiente forma.
Supongamos que Alibaba fue descubierto por la policía robando un tesoro, y las mencionadas fuerzas de seguridad lo esperan a la salida de la cueva. Pero, repentinamente, uno de sus secuaces le asegura que descubrió una puerta secreta que lleva a una ruta de escape y que está ubicada fondo de la cueva, pero que esta tiene una clave secreta que sólo quien descubrió la puerta puede conocer, ninguna otra persona puede saber cuál es esta contraseña.
Llamaremos al secuaz de Alibaba con la letra (P) de prueba, y a Alibaba con la letra (V) de validación. Ambas partes establecen un contrato en el que V le pide a P una prueba sobre la existencia de la puerta y que P en verdad sabe su contraseña, sin incurrir en revelar esta clave de acceso.
Para que P pueda probar tener conocimiento de la contraseña, deberá partir desde el punto 0 por cualquier camino, A o B, abrir la puerta con la contraseña, cruzarla, y salir caminando por el otro camino de regreso al punto 0, donde lo espera V. V no sabe cuál camino tomó P para cruzar la puerta, pero sí sabrá que logró pasar a través de ella.
Para que V pueda asegurarse de que P no tomó el camino B, abrió la puerta y volvió a salir por el camino B, el experimento se realiza múltiples veces, donde V deberá anunciar por dónde quiere que P aparezca. Si P aparece en cada oportunidad por el camino correcto anunciado por V de regreso al punto 0, V sabrá que P conoce la contraseña.
Esta explicación luce gráficamente así:
La prueba de cero conocimiento cero fue implementada con éxito en Zcash y ahora viene a Ethereum para brindar mayor privacidad, un proceso que sin duda las empresas que desean desarrollar aplicaciones en esta plataforma valorarán muchísimo.
En la próxima parte de esta serie de artículos conoceremos de qué trata la bomba de dificultad y el contrato Casper.
Imagen Destacada: Zcash.