zkLedger es una tecnología que busca demostrar que el compromiso entre velocidad, seguridad, privacidad y descentralización es posible, usando para ello criptografía y otras tecnologías creadas y asociadas a la cadena de bloque.
La privacidad en blockchain siempre es un campo en constante investigación, y una muestra clara de ello es la zkLedger, una tecnología que busca aprovechar lo mejor del mundo de las ZKP o Pruebas de Conocimiento Cero, para construir plataformas blockchain enfocadas en la seguridad y la privacidad.
Pero, ¿qué diferencia a las zkLedger del resto de tecnología blockchain que ya existen? ¿Cuáles son sus ventajas? ¿Cómo funciona?
zkLedger, una blockchain de alta velocidad, privacidad y seguridad
El desarrollo de zkLedger comenzó con un artículo presentado en el evento 15th USENIX Symposium on Networked Systems Design and Implementation (NSDI 2018) por Neha Narula (MIT Media Lab), Willy Vasquez (Universidad de Texas) y Madars Virza (MIT Media Lab). Durante el evento, Narula describió un zkLedger de la siguiente forma:
zkLedger, es el primer sistema diseñado para proteger la privacidad de los participantes del libro mayor y proporcionar una auditoría rápida y demostrablemente correcta en toda circunstancia, que está especialmente pensada para empresas, bancos y entes financieros.
La idea en este sentido es clara, crear un sistema que pueda ser fácilmente auditado, sin que ello merme en ningún momento la privacidad de las personas que usan dicho sistema.
Para lograr esto, zkLedger apoya su sistema de auditoría en un esquema de pruebas criptográficas que utiliza pruebas de conocimiento cero no interactivas de tipo Schnorr. Esta es una alternativa a las conocidas zk-SNARK y zk-STARK. La principal diferencia es que las ZKP del tipo Schnorr, no requieren una configuración confiable y solo dependen de supuestos criptográficos ampliamente utilizados. Además, estos supuestos criptográficos son más sencillos de programar y, por tanto, más fáciles de depurar e implementar.
Integridad es la clave de zkLedger
Por otro lado, zkLedger proporciona un sistema de integridad. Este sistema de integridad tiene su base en que el libro mayor, o libro mayor, no puede ocultar transacciones del auditor, y los participantes pueden usar mecanismos para producir y verificar transacciones rápidamente. Esta característica ofrece dos ventajas:
La capacidad de auditoría de la red garantiza que todo en el libro mayor sea visible para el auditor (o aquel que tenga este rol dentro del sistema), dejando al resto con acceso necesario para verificar que una transacción se realizó y nada más. Es decir, información como el “grafo o enlace de transacciones”, cantidades, direcciones o cualquier dato que ponga en riesgo la privacidad de las partes, está disponible de forma “abierta” al público.
Ofrece una velocidad de procesamiento muy alta, dado que las pruebas Schnorr son más cortas, fáciles de generar y procesar. Además, el uso de caché hace que el sistema de transacciones y auditoría sea rápido. Un buen ejemplo de ello, es que un proceso de auditoría sobre un zkLedger puede llevar a cabo cerca de 10 milisegundos para verificar 100 mil transacciones.
Auditorías, el fuerte de zkLedger
Lo anterior se ve potenciado debido a que; zkLedger cuenta desde sus bases y código con una serie de funcionalidades pensadas en hacer de auditabilidad una máxima de su diseño. Por ejemplo, zkLedger tiene funciones de auditoría nativas, que le permiten obtener fácilmente sumas, promedios móviles, varianza, desviación estándar y proporciones.
De esta manera, un auditor puede usar estas primitivas para medir el apalancamiento financiero, la liquidez de los activos, las exposiciones al riesgo de contraparte y la concentración del mercado, para el sistema en su conjunto o para los participantes individuales.
Tal como se ve, este tipo de tecnología resulta especialmente útil para empresas, bancos, servicios financieros que desean y requieren de este nivel de auditoría con el fin de cumplir con exigencias regulatorias, pero al mismo tiempo, quieren de la flexibilidad y potencia de la blockchain para sus operaciones.
Principales características de zkLedger
Entre las principales características de zkLedger podemos mencionar las siguiente:
Es una blockchain con amplias capacidades de privacidad y auditoría
zkLedger tiene, como ya comentamos, el objetivo de mantener un alto nivel de privacidad y auditoría en sus sistemas. Para lograr ambos objetivos, zkLedger basa su funcionamiento criptográfico en un nuevo tipo de pruebas ZKP del tipo Schnorr, para ser más precisos, en las Pruebas Generales de Schnorr y un sistema de compromisos Pedersen.
Los compromisos Pedersen, le permiten a zkLedger mantener la privacidad del sistema y al mismo tiempo aceptar el funcionamiento de un sistema auditor. Esto es posible porque los compromisos de Pedersen le permiten a zkLedger, crear estructuras a nivel de consenso de la red, que luego el auditor puede verificar y hacer su trabajo. El auditor en todo caso, solo podrá acceder a aquella información que necesita, y que está dentro del sistema de consenso de la red, negando acceso privilegiado a cualquier información no permitida. En un sentido, el esquema Pedersen solo ofrece información de trabajo al auditor.
La información ofrecida por el esquema Pedersen está protegida en todo caso por una ZKP del tipo Schnorr (Pruebas Generales de Schnorr). Así la información ofrecida es solo un resultado criptográfico que el auditor puede verificar en la red, sin que en realidad tenga acceso a los datos reales de nuestras operaciones.
Una blockchain de alta eficiencia
El uso de compromisos Pedersen (un complejo sistema matemático) y ZKP del tipo Schnorr, también nos habla de que zkLedger es una red creada para ser altamente eficiente. Schnorr es una tecnología diseñada con el principio de ser rápida de generar, rápida de verificar y que ocupe muy poco espacio de almacenamiento. En este caso, hacer uso de Schnorr en zkLedger garantiza que los nodos no deben ser extremadamente potentes para hacer su trabajo. Además, los requisitos de almacenamiento se ven drásticamente reducidos también.
Adicional a esto, el consenso de verificación de zkLedger implementa un sistema de roles bastante interesante para brindar transacciones muy rápidas. En primer lugar, los participantes no tienen que interactuar para construir las pruebas de la transacción, en su lugar, el gastador puede crear la transacción por sí solo. En este punto, si un actor malintencionado intenta codificar valores incorrectos en los compromisos de otros actores, estos fallaran ya que solo las partes que tienen la información correspondiente al gasto (el gastador que construyó la transacción, el cobrador que sabe cuánto tiene que pagar) pueden responder con certeza a la prueba criptográfica y la auditoría posterior de la red.
A este sistema se le conoce como token de auditoría y pruebas de coherencia de zkLedger, y puede ser verificado de forma pública, permitiendo seguridad en los pagos, y al mismo tiempo, que estos son muy rápidos. Además, para evitar la generación de monedas que no existen, zkLedger incluye una serie de reglas de consenso que evitan este comportamiento (al mismo estilo de lo que sucede en Monero (XMR)) creando una serie de pruebas de rangos que evitan este ataque.
Prueba de Balance, el algoritmo de consenso de zkLedger
Una de las principales características de zkLedger es su algoritmo de consenso conocido como Proof of Balance (PoBal) o Prueba de Balance. El Proof of Balance, tiene como objetivo dos cosas:
- Que zkLedger sea una red de alta velocidad.
- Que sea imposible ocultar balances o información de las cuentas.
En tal sentido, Proof of Balance cumple a cabalidad ambas necesidades usando para ello una serie de pruebas criptográficas diseñadas para tal fin. En primer lugar, una transacción en zkLedger es una entrada para cada “banco”, esa entrada tiene una serie de compromisos criptográficos únicos que los unen de forma inequívoca a dicha transacción. El objetivo de este primer sistema es garantizar que:
- Una transacción de transferencia no puede crear ni destruir activos.
- El “banco de gastos” debe dar su consentimiento para la transferencia.
En esta situación, zkLedger ha creado una serie de pruebas criptográficas para garantizar que el gastador puede manejar esos fondos y usarlos con libertad y autonomía. La primera de esas pruebas es la Prueba de Saldos. Esta prueba permite saber que el gastador realmente tiene en su poder activos para la operación. Seguidamente, sigue una segunda prueba que permite asegurar que el “banco” realmente tiene los activos para transferir. Esto es posible gracias a la Prueba de Activos, la idea de esta prueba de demostrar que realmente el usuario cuenta con los activos dentro del banco de gastos para realizar la transacción.
Diferencia con otros modelos
En una cadena de bloques normal (como en Bitcoin (BTC)) esto es posible por las UTXO y el árbol de transacciones que es creado por las transacciones anteriores hasta llegar a la base de monedas. Sin embargo, zkLedger no sigue este sistema, de hecho, zkLedger no hace público el árbol de transacciones en el momento, así que la Prueba de ningún Activos, se encarga de comprobar criptográficamente que el usuario tiene activos y que se puede realizar dichas transacciones sin problemas de doble gasto o generación de monedas inexistentes.
Finalmente, la Prueba de Coherencia se encarga de que los bancos no puedan agregar datos al libro mayor que impidan a otro banco, poder abrir sus compromisos para el Auditor. De esta forma, se protege al sistema para que todos puedan participar en el mismo en igualdad de condiciones.
Velocidad de transaccion
Proof of Balance (PoBal) es la clave de la alta velocidad de operación de zkLedger. En pruebas de laboratorio, zkLedger fue capaz de ofrecer un rendimiento muy superior a otras tecnologías blockchain conocidas. En una red de 12 servidores Xeon (4 Core) y 24 GB de RAM, zkLedger fue capaz de:
- Auditar 100 mil transacciones en 6 milisegundos, en modo online.
- Auditar 100 mil transacciones en 3500 milisegundos, en modo offline.
- Crear una entrada (transacción) en 8 milisegundos. Esto convertido a segundos son 125 transacciones por segundos, pero la configuración escala en modo lineal. Además, el sistema es paralelizable aumentando con ello la capacidad de procesamiento a medida que la red aumenta de tamaño.
Esto pone a zkLedger, a nivel de redes privadas de alta velocidad como el caso de HyperLedger, con la salvación de que su sistema es más abierto y público de cara a la verificación de información.
Casos de uso de zkLedger
Como comentamos en un principio, el principal caso de uso de zkLedger se centra en la oportunidad de ofrecer infraestructura blockchain a bancos, empresas y otros entes financieros. La utilidad de la tecnología en este ambiente es indudable y es donde más deslumbras sus capacidades de auditoría, velocidad y propiedades de privacidad.
Un buen caso de uso de la tecnología sería la creación de una CBDC o moneda digital del banco central, donde realmente se respetarían los principios de privacidad que el dinero y estos sistemas deben tener en todo momento.
Otro ambiente que puede sintetizar de este sistema es el de las empresas de seguro. En estos casos, zkLedger puede garantizar la idoneidad de la información compartida entre las empresas de seguros, los bancos y otros entes, todo a la vez que se mantiene la auditabilidad del sistema en todos los sentidos, sin tener que revelar información sensible entre los actores involucrados, incluyendo los clientes y las condiciones en las que sus cláusulas de seguro fueron activadas.