Blockchain (sustantivo): Una máquina de coordinación que permite a los participantes de todo el mundo colaborar a lo largo de un conjunto de reglas comúnmente acordadas sin la intervención de terceros.
Las computadoras están diseñadas para hacer tres cosas: almacenar datos, computar y comunicarse entre sí y con los humanos. Las blockchains añaden una cuarta dimensión: garantías adicionales de que estas tres cosas (almacenamiento, computación y comunicación) sucedan de manera acordada. Estas garantías permiten la cooperación entre extraños sin la necesidad de un tercero de confianza que la facilite (descentralizado).
Estas garantías adicionales pueden ser tanto económicas (teoría del juego de confianza e incentivos/desincentivos) como criptográficas (matemática de confianza), pero la mayoría de las aplicaciones utilizan una combinación de ambas, criptoeconómicas. Esto actúa como un fuerte contraste con el estado actual de sistemas en gran medida basados en la reputación.
Si bien Web3 se describe a menudo como "leer, escribir, poseer", creemos que una mejor noción para la tercera iteración de Internet es "leer, escribir, verificar", dado que el principal beneficio de las blockchains públicas es cálculo garantizadoy una verificación fácil de que estas garantías fueron cumplidas. La propiedad puede ser un subconjunto de la computación garantizada si construimos artefactos digitales que pueden ser comprados, vendidos y controlados. Sin embargo, muchos casos de uso de las blockchains se benefician de la computación garantizada pero no implican directamente la propiedad. Por ejemplo, si tu salud en un juego completamente en cadena es 77/100, ¿posees esa salud o simplemente es ejecutable en cadena de acuerdo con reglas comúnmente acordadas? Nosotros argumentaríamos lo último, peroChris Dixonpodría estar en desacuerdo.
Web3 = Leer, Escribir, Verificar
Las blockchains ofrecen mucho de qué emocionarse, pero el modelo descentralizado también agrega sobrecarga e ineficiencia a través de funciones adicionales como el mensajería P2P y el consenso. Además, la mayoría de las blockchains aún validan transiciones de estado correctas mediante reejecución, lo que significa que cada nodo en la red debe reejecutar transacciones para verificar la corrección de la transición de estado propuesta. Esto es derrochador y contrasta claramente con el modelo centralizado donde solo una entidad ejecuta. Si bien un sistema descentralizado siempre contiene algo de sobrecarga y replicación, el objetivo debería ser acercarse asintóticamente a un punto de referencia centralizado en términos de eficiencia.
Aunque la infraestructura subyacente ha mejorado significativamente en la última década, todavía queda mucho trabajo por hacer antes de que las blockchains puedan manejar una escala a nivel de Internet. Vemos compensaciones a lo largo de dos ejes principales - expresividad y dureza - y creemos que la modularidad permite una experimentación más rápida a lo largo de la frontera de compensación mientras ZK la expande:
La modularidad es el grado en que los componentes de un sistema pueden separarse y recombinarse. A través de bucles de retroalimentación más rápidos y barreras de entrada más bajas con menos capital requerido (tanto económico como humano), la modularidad permite experimentación más rápida y especialización. La cuestión de modular vs integrado no es binaria, sino más bien un espectro para experimentar y descubrir qué partes tiene sentido desacoplar y cuáles no.
Las Pruebas de Conocimiento Cero, o ZKPs, por otro lado, permiten a una parte (el probador) demostrar a otra parte (el verificador) que saben que algo es cierto, sin revelar ninguna información adicional más allá de su validez. Esto puede aumentar la escalabilidad y eficiencia al evitar la reejecución (pasando de un modelo de ejecución total a verificar, a un modelo de uno ejecuta, todos verifican), así como la expresividad al permitir la privacidad (con limitaciones). Las ZKPs también mejoran la dificultad de las garantías al reemplazar garantías criptoeconómicas más débiles por otras más fuertes, lo que se representa al empujar la frontera de compensación hacia afuera (haciendo referencia al gráfico anterior).
Creemos que tanto la modularidad como la 'ZKficación de todo' son tendencias que seguirán acelerándose. Si bien ambas proporcionan lentes interesantes a través de las cuales explorar el espacio individualmente, estamos particularmente interesados en la intersección de las dos. Las dos preguntas clave en las que estamos interesados son:
Sin embargo, antes de poder abordar esas preguntas, necesitamos una vista actualizada de cómo se ve la pila modular en 2024.
La imagen a menudo utilizada del stack modular con cuatro componentes (ejecución, publicación de datos, consenso, liquidación) es útil como un modelo mental simple, pero no sentimos que sea una representación adecuada en este momento, dada la evolución del espacio modular. Un desglose adicional conduce a nuevos componentes que anteriormente se pensaban como parte de una pieza más grande, al mismo tiempo que crea nuevas dependencias y la necesidad de una interoperabilidad segura entre los diferentes componentes (más sobre esto más adelante). Dado el ritmo al que avanza el espacio, puede ser difícil mantenerse actualizado sobre todas las innovaciones en diferentes niveles del stack.
Intentos anteriores de explorar la pila web3 incluyen los realizados por Kyle Samani(Multicoin) - originalmente publicado en2018 y actualizado en 2019. Cubre todo, desde el acceso a Internet descentralizado de última milla (como Helium) para la gestión de claves del usuario final. Si bien los principios detrás de esto podrían ser reciclados, algunas piezas, como la prueba y verificación, están completamente ausentes.
Con esto en mente, hemos intentado crear una representación actualizada de cómo se ve la pila modular en 2024, ampliando la pila modular existente de cuatro partes. Está dividido por componente en lugar de funcionalidad, lo que significa que la red P2P, por ejemplo, está incluida en el consenso en lugar de dividirla como un componente separado, principalmente porque es difícil construir un protocolo en torno a ella.
Ahora que tenemos una vista actualizada de la pila modular, podemos comenzar a analizar la pregunta real, es decir, qué partes de la pila ZK ya ha penetrado y qué problemas abiertos podrían resolverse introduciendo ZK (ya sea evitando la reejecución o características de privacidad). A continuación se muestra un resumen de nuestros hallazgos, antes de profundizar en cada componente por separado.
Los usuarios actuales de las cadenas de bloques necesitan navegar por múltiples cadenas, billeteras e interfaces, lo cual es engorroso y actúa como fricción para una adopción más amplia. La abstracción de operaciones de usuario es un término general para cualquier intento de abstraer esta complejidad y permitir a los usuarios interactuar con solo una interfaz (por ejemplo, una aplicación o billetera específica), con toda la complejidad ocurriendo en el backend. Algunos ejemplos de abstracciones a nivel de infraestructura incluyen:
Las transacciones deben ser ordenadas antes de ser agregadas a un bloque, lo que se puede hacer de muchas maneras: ordenándolas por rentabilidad para el proponente (transacciones más rentables primero), en el orden en que fueron enviadas (primero en entrar, primero en salir), dando prioridad a las transacciones de las mempools privadas, etc.
Otra pregunta es quién realiza los pedidos de las transacciones. En un mundo modular, múltiples partes diferentes pueden hacer esto, incluido el secuenciador de rollup (centralizado o descentralizado), la secuenciación L1 (basada en rollups) y una red de secuenciación compartida (red descentralizada de secuenciadores utilizada por múltiples rollups). Todos ellos tienen diferentes suposiciones de confianza y capacidades para escalar. En la práctica, la ordenación real de transacciones y su agrupación en un bloque también puede ser realizada fuera del protocolo por actores especializados (blockbuilders).
La capa de ejecución contiene la lógica de cómo se actualiza el estado y es donde se ejecutan los contratos inteligentes. Además de devolver una salida de la computación, zkVMs también permiten demostrar que las transiciones de estado se realizaron correctamente. Esto permite a otros participantes de la red verificar la ejecución correcta solo verificando la prueba, en lugar de tener que volver a ejecutar las transacciones.
Además de una verificación más rápida y eficiente, otro beneficio de la ejecución comprobable es permitir una computación más compleja, ya que no te encuentras con los problemas típicos de gas y recursos limitados en cadena con la computación fuera de cadena. Esto abre la puerta a aplicaciones completamente nuevas que son computacionalmente más intensas para ejecutar en blockchains y aprovechar la computación garantizada.
La consulta de datos, o la lectura de datos desde la cadena de bloques, es una parte esencial de la mayoría de las aplicaciones. Si bien gran parte de la discusión y los esfuerzos de los últimos años se han centrado en escalar las escrituras (ejecución), escalar las lecturas es aún más importante debido al desequilibrio entre las dos (especialmente en un entorno descentralizado). La relación entre lectura/escritura difiere entre las cadenas de bloques, pero un punto de datos es Estimación de Sigque más del 96% de todas las llamadas a los nodos en Solana eran llamadas de lectura (según 2 años de datos empíricos) - una proporción de lectura/escritura de 24:1.
El escalado de lecturas incluye tanto obtener más rendimiento (más lecturas por segundo) con clientes validadores dedicados (como Sig en Solana) como habilitar consultas más complejas (combinando lecturas con cálculos), por ejemplo con la ayuda de co-procesadores.
Otro ángulo es descentralizar los métodos de consulta de datos. Hoy en día, la mayoría de las solicitudes de consulta de datos en blockchains son facilitadas por terceros de confianza (basados en reputación), como nodos RPC (Infura) y indexadores (Dune). Ejemplos de opciones más descentralizadas incluyen El Gráfico y operadores a prueba de almacenamiento (que también son verificables). También existen varios intentos de crear una red RPC descentralizada, como Infura DIN o Red Lava(además del RPC descentralizado, Lava tiene como objetivo ofrecer más adelante servicios adicionales de acceso a datos).
Con cada vez más aplicaciones que incorporan ZKPs, la prueba y verificación se están convirtiendo rápidamente en una parte esencial del stack modular. Sin embargo, hoy en día, la infraestructura de pruebas sigue siendo en su mayoría permisiva y centralizada, con muchas aplicaciones dependiendo de un único probador.
Mientras que la solución centralizada es menos compleja, descentralizar la arquitectura de prueba y dividirla en un componente separado en la pila modular trae varios beneficios. Un beneficio clave se presenta en forma de garantías de vivacidad que son cruciales para aplicaciones que dependen de la generación frecuente de pruebas. Los usuarios también se benefician de una mayor resistencia a la censura y de tarifas más bajas impulsadas por la competencia y el reparto de la carga de trabajo entre múltiples probadores.
Creemos que las redes de demostradores de propósito general (muchas aplicaciones, muchos demostradores) son superiores a las redes de demostradores de una sola aplicación (una aplicación, muchos demostradores) debido a una mayor utilización del hardware existente y menos complejidad para los demostradores. Una mayor utilización también beneficia a los usuarios en términos de tarifas más bajas, ya que los demostradores no necesitan ser compensados por la redundancia a través de tarifas más altas (aún necesitan cubrir costos fijos).
Figment Capitalproporcionó una buena visión general del estado actual de la cadena de suministro de pruebas, que consta tanto de la generación de pruebas como de la agregación de pruebas (que en sí misma es generación de pruebas, pero simplemente tomando dos pruebas como entrada en lugar de la traza de ejecución).
Fuente: Capital de Figment
Fuente: Figment Capital
La publicación de datos (DP) garantiza que los datos estén disponibles y sean fácilmente recuperables durante un corto período (1-2 semanas). Esto es crucial tanto para la seguridad (los rollups optimistas requieren datos de entrada para verificar la ejecución correcta mediante la reejecución durante el período de desafío, 1-2 semanas) como para la vitalidad (incluso si un sistema utiliza pruebas de validez, es posible que se necesiten datos de transacciones subyacentes para demostrar la propiedad de activos para las salidas de emergencia, transacciones forzadas o para verificar que las entradas coincidan con las salidas). Los usuarios (como los puentes zk y los rollups) enfrentan un pago único, que cubre el costo de almacenar transacciones y estado durante un corto período hasta que se elimine. Las redes de publicación de datos no están diseñadas para el almacenamiento de datos a largo plazo (en su lugar, consulte la siguiente sección para posibles soluciones).
Celestia fue la primera capa de DP alternativa en lanzar su red principal (31 de octubre), pero pronto habrá muchas alternativas para elegir como Disponible, EigenDA, y Cerca de DAse espera que todos se lancen durante 2024. Además, EIP 4844 de Ethereummejorar la publicación de datos escalados en Ethereum (además de crear un mercado de tarifas separado para el almacenamiento de bloques) y preparar el escenario para la fragmentación completa de dank. DP también se está expandiendo a otros ecosistemas - un ejemplo es @nubit_org/riema-secures-angel-investment-for-launching-the-first-bitcoin-native-data-availability-layer-49ccf0487380">Nubit, que tiene como objetivo construir Native DP en Bitcoin.
Muchas soluciones de DP también ofrecen servicios más allá de la mera publicación de datos, incluida la seguridad compartida para rollups soberanos (como Celestia y Disponible) o una interoperabilidad más fluida entre rollups (como Avail'sNexus). También hay proyectos (DomiconyGravedad Cero) que ofrecen tanto la publicación de datos como el almacenamiento a largo plazo, lo cual es una propuesta convincente. Esto también es un ejemplo de volver a agrupar dos componentes en la pila modular, algo que probablemente veremos más en el futuro (experimentación tanto con una mayor desagregación como con una reagrupación).
Almacenar datos históricos es importante principalmente para fines de sincronización y para atender solicitudes de datos. Sin embargo, no es factible que cada nodo completo almacene todos los datos y la mayoría de los nodos completos eliminan datos antiguos para mantener los requisitos de hardware razonables. En su lugar, confiamos en partes especializadas (nodos de archivo e indexadores) para almacenar todos los datos históricos y ponerlos a disposición a solicitud de los usuarios.
También hay proveedores de almacenamiento descentralizado, como FilecoinoArweave, que ofrecen soluciones de almacenamiento descentralizado a largo plazo a un precio razonable. Si bien la mayoría de las blockchains no tienen un proceso formal de almacenamiento de archivos (simplemente confían en que alguien lo almacene), los protocolos de almacenamiento descentralizado son buenos candidatos para almacenar información histórica y agregar algo de redundancia (al menos X nodos almacenan los datos) a través de los incentivos incorporados en la red de almacenamiento.
Dado que las cadenas de bloques son sistemas P2P distribuidos, no hay un tercero de confianza que determine la verdad global. En cambio, los nodos de la red se ponen de acuerdo sobre cuál es la verdad actual (qué bloque es el correcto) a través de un mecanismo llamado consenso. Los métodos de consenso basados en PoS se pueden clasificar en BFT (donde el quórum bizantino tolerante a fallas de validadores decide el estado final) o basados en cadena (donde el estado final se decide retrospectivamente por la regla de elección de bifurcación). Si bien la mayoría de las implementaciones de consenso PoS existentes están basadas en BFT, Cardanoes un ejemplo de implementación de la cadena más larga. También hay un creciente interés en mecanismos de consenso basados en DAG como Narwhal-Bullshark que se implementa en algunas variaciones en Aleo, Aptos y Sui.
El consenso es una parte crucial de muchos componentes diferentes de la pila modular, incluido el secuenciador compartido, la prueba descentralizada y las redes de publicación de datos basadas en blockchain (no basadas en comités como EigenDA).
El asentamiento es similar al tribunal de justicia más alto, la fuente final de verdad donde se verifican la corrección de las transiciones de estado y se resuelven disputas. Una transacción se considera final en el momento en que es irreversible (o en el caso de la finalidad probabilística, en el punto en el que sería suficientemente difícil revertirla). El tiempo de finalización depende de la capa de asentamiento subyacente utilizada, que a su vez depende de la regla de finalidad específica utilizada y del tiempo de bloque.
La lentitud de la finalidad es particularmente un problema en la comunicación entre rollups, donde los rollups necesitan esperar la confirmación de Ethereum antes de poder aprobar una transacción (7 días para rollups optimistas, 12 minutos y tiempo de demostración para rollups de validez). Esto conduce a una mala experiencia del usuario. Hay múltiples esfuerzos para resolver este problema utilizando pre-confirmaciones con un cierto nivel de seguridad. Ejemplos incluyen soluciones específicas del ecosistema (Gate.ioPolygon AggLayerozkSync HyperBridge) y soluciones de propósito general como Capa de Finalidad Rápida de Nearque tiene como objetivo conectar múltiples ecosistemas rollup diferentes aprovechando la seguridad económica de EigenLayer. También existe la opción de puentes de rollup nativos aprovechando EigenLayerpara confirmaciones suaves para evitar esperar la plena finalidad.
La seguridad está relacionada con la solidez de las garantías y es una parte crucial de la propuesta de valor de las blockchains. Sin embargo, el arranque de la seguridad criptoeconómica es difícil, ya que aumenta las barreras de entrada y actúa como fricción para la innovación en aquellas aplicaciones que la necesitan (diversos middleware y L1 alternativos).
La idea de seguridad compartida es utilizar la seguridad económica existente de las redes PoS y someterla a un riesgo adicional de penalización (condiciones de castigo), en lugar de que cada componente intente arrancar el suyo propio. Ha habido algunos intentos anteriores de hacer lo mismo en redes PoW.minería combinada.)), pero los incentivos desalineados facilitaron que los mineros se confabularan y explotaran un protocolo (más difícil castigar el mal comportamiento a medida que el trabajo ocurre en el mundo físico, es decir, la minería utilizando potencia de cálculo). La seguridad PoS es más flexible para ser utilizada por otros protocolos, ya que tiene incentivos tanto positivos (rendimiento de staking) como negativos (slashing).
Los protocolos que se construyen en torno a la premisa de la seguridad compartida incluyen:
La interoperabilidad segura y eficiente sigue siendo un gran problema en un mundo multi-chain, ejemplificado por el $2.8bn perdidos en hacks de puentes. En sistemas modulares, la interoperabilidad se vuelve aún más importante. No solo estás comunicándote entre otras cadenas, sino que las blockchains modulares también requieren que diferentes componentes se comuniquen entre sí (como la capa de DA y de liquidación). Por lo tanto, ya no es factible simplemente ejecutar un nodo completo o verificar una única prueba de consenso como en las blockchains integradas. Esto agrega más piezas móviles a la ecuación.
La interoperabilidad incluye tanto el puente de tokens como el paso de mensajes más general a través de blockchains. Hay varias opciones diferentes que hacen diferentes compensaciones en cuanto a seguridad, latencia y costo. Optimizar los tres es muy difícil, lo que generalmente requiere sacrificar al menos uno. Además, diferentes estándares entre cadenas hacen que las implementaciones en nuevas cadenas sean más difíciles.
Aunque todavía carecemos de una definición clara de los diferentes tipos de clientes livianos (o nodos), esta publicación de Dino (co-fundador de Fluent & Modular Media) da una buena introducción. La mayoría de los clientes ligeros hoy solo verifican el consenso, pero idealmente tendríamos clientes ligeros que puedan verificar la ejecución y DA también para reducir las suposiciones de confianza. Esto permitiría acercarse a la seguridad de un nodo completo, sin los altos requisitos de hardware.
Suponiendo que podemos alcanzar un estado en el que la generación de ZKPs se vuelva muy rápida (casi a la velocidad de la luz) e increíblemente barata (casi gratuita), ¿cómo sería el escenario final? En otras palabras, ¿cuándo habrá ZK comido el stack modular?
En términos generales, creemos que dos cosas serían ciertas en este estado del mundo:
Una tercera condición estaría relacionada con la privacidad (o gestión del flujo de información), pero es más complicado. ZKPs se pueden utilizar para algunas aplicaciones de privacidad con demostración en el lado del cliente, que es lo que plataformas como Aleo, Aztec o Polygon Miden están construyendo, pero lograr privacidad a gran escala para todos los casos de uso potenciales depende también del progreso de MPC y FHE, un tema potencial para una futura publicación en el blog.
¿Y si estamos equivocados y el futuro no es ni modular ni ZK’fied? Algunos riesgos potenciales para nuestra tesis incluyen:
Tanto los usuarios como los desarrolladores sufren por el creciente número de cadenas. Los usuarios necesitan gestionar fondos en varias cadenas (y potencialmente en varias carteras). Los desarrolladores de aplicaciones, por otro lado, tienen menos estabilidad y previsibilidad dada la evolución del espacio, lo que dificulta decidir en qué cadena construir. También necesitan pensar en la fragmentación del estado y la liquidez. Esto es especialmente cierto ahora, ya que todavía estamos experimentando en la frontera de qué componentes tienen sentido para desacoplar y cuáles se volverán a acoplar. Creemos que la abstracción de la operación del usuario, así como soluciones de interoperabilidad seguras y eficientes, son partes cruciales para resolver este problema.
No hay manera de evitar el hecho de que la generación de pruebas lleva demasiado tiempo y el costo tanto de la prueba como de la verificación sigue siendo demasiado alto hoy en día. Soluciones competidoras como los entornos de ejecución confiables/TEEs (privacidad) o soluciones de seguridad optimistas/criptoeconómicas (costo) todavía tienen más sentido para muchas aplicaciones hoy en día.
Se está realizando mucho trabajo en cuanto a la optimización de software y la aceleración de hardware para ZKPs. La agregación de pruebas ayudará a reducir aún más los costos de verificación al distribuir el costo entre múltiples partes diferentes (menor costo/usuario). También existe la posibilidad de adaptar la capa base para que esté más optimizada para la verificación de ZKPs. Un desafío en cuanto a la aceleración de hardware para ZKPs es el rápido desarrollo de sistemas de prueba. Esto hace que sea difícil crear hardware especializado (ASIC) ya que corren el riesgo de volverse obsoletos rápidamente si/cuando los estándares de los sistemas subyacentes de prueba evolucionan.
Ingonyama ha intentado crear algunos puntos de referencia para el rendimiento del probador a través de una métrica comparable llamada puntuación ZK. Se basa en el costo de la ejecución de la computación (OPEX) y sigue MMOPS/WATT, donde MMOPS significa operaciones de multiplicación modular por segundo. Para obtener más información sobre el tema, recomendamos blogs de @Cysic/BJQcpVbXn?ref=blog.succinct.xyz">Cysic and@ingonyama/revisiting-paradigms-hardware-acceleration-for-zero-knowledge-proofs-5dffacdc24b4">Ingonyama, as well as this talk by Wei Dai.
Las pruebas de conocimiento nulo solo se pueden utilizar para lograr privacidad para el estado personal, no para el estado compartido donde varias partes necesitan calcular en datos encriptados (como un Uniswap privado). FHE y MPC también son necesarios para una privacidad total, pero es necesario mejorar muchas órdenes de magnitud en cuanto a coste y rendimiento antes de que sean opciones viables para un uso a mayor escala. Dicho esto, las pruebas de conocimiento nulo siguen siendo útiles para ciertos casos de uso que no requieren un estado compartido privado, como soluciones de identidad o pagos. No todos los problemas necesitan ser resueltos con la misma herramienta.
Entonces, ¿dónde nos deja esto? Si bien estamos progresando cada día, queda mucho trabajo por hacer. Los problemas más apremiantes por resolver son cómo el valor y la información pueden fluir de manera segura entre diferentes componentes modulares sin sacrificar velocidad o costo, así como abstraerlo todo del consumidor final para que no tengan que preocuparse por la conexión entre diferentes cadenas, cambiar billeteras, etc.
Si bien actualmente estamos en gran medida en la fase experimental, las cosas deberían estabilizarse con el tiempo a medida que descubrimos dónde en el espectro se encuentran los compromisos óptimos para cada caso de uso. A su vez, esto dará lugar a que los estándares (informales o formales) emerjan y brinden más estabilidad a los constructores sobre estas cadenas.
Hoy en día todavía hay muchos casos de uso que recurren a la seguridad criptoeconómica por defecto debido al costo y complejidad de generar ZKPs, y algunos que requieren una combinación de los dos. Sin embargo, esta participación debería disminuir con el tiempo a medida que diseñamos sistemas de demostración más eficientes y hardware especializado para reducir el costo y la latencia de la demostración y verificación. Con cada reducción exponencial en costo y velocidad, se desbloquean nuevos casos de uso.
Si bien este artículo se centró específicamente en ZKPs, también estamos cada vez más interesados en cómo las soluciones criptográficas modernas (ZKPs, MPC, FHE y TEE) terminarán jugando juntas, algo que ya estamos viendo.
¡Gracias por leer!
Blockchain (sustantivo): Una máquina de coordinación que permite a los participantes de todo el mundo colaborar a lo largo de un conjunto de reglas comúnmente acordadas sin la intervención de terceros.
Las computadoras están diseñadas para hacer tres cosas: almacenar datos, computar y comunicarse entre sí y con los humanos. Las blockchains añaden una cuarta dimensión: garantías adicionales de que estas tres cosas (almacenamiento, computación y comunicación) sucedan de manera acordada. Estas garantías permiten la cooperación entre extraños sin la necesidad de un tercero de confianza que la facilite (descentralizado).
Estas garantías adicionales pueden ser tanto económicas (teoría del juego de confianza e incentivos/desincentivos) como criptográficas (matemática de confianza), pero la mayoría de las aplicaciones utilizan una combinación de ambas, criptoeconómicas. Esto actúa como un fuerte contraste con el estado actual de sistemas en gran medida basados en la reputación.
Si bien Web3 se describe a menudo como "leer, escribir, poseer", creemos que una mejor noción para la tercera iteración de Internet es "leer, escribir, verificar", dado que el principal beneficio de las blockchains públicas es cálculo garantizadoy una verificación fácil de que estas garantías fueron cumplidas. La propiedad puede ser un subconjunto de la computación garantizada si construimos artefactos digitales que pueden ser comprados, vendidos y controlados. Sin embargo, muchos casos de uso de las blockchains se benefician de la computación garantizada pero no implican directamente la propiedad. Por ejemplo, si tu salud en un juego completamente en cadena es 77/100, ¿posees esa salud o simplemente es ejecutable en cadena de acuerdo con reglas comúnmente acordadas? Nosotros argumentaríamos lo último, peroChris Dixonpodría estar en desacuerdo.
Web3 = Leer, Escribir, Verificar
Las blockchains ofrecen mucho de qué emocionarse, pero el modelo descentralizado también agrega sobrecarga e ineficiencia a través de funciones adicionales como el mensajería P2P y el consenso. Además, la mayoría de las blockchains aún validan transiciones de estado correctas mediante reejecución, lo que significa que cada nodo en la red debe reejecutar transacciones para verificar la corrección de la transición de estado propuesta. Esto es derrochador y contrasta claramente con el modelo centralizado donde solo una entidad ejecuta. Si bien un sistema descentralizado siempre contiene algo de sobrecarga y replicación, el objetivo debería ser acercarse asintóticamente a un punto de referencia centralizado en términos de eficiencia.
Aunque la infraestructura subyacente ha mejorado significativamente en la última década, todavía queda mucho trabajo por hacer antes de que las blockchains puedan manejar una escala a nivel de Internet. Vemos compensaciones a lo largo de dos ejes principales - expresividad y dureza - y creemos que la modularidad permite una experimentación más rápida a lo largo de la frontera de compensación mientras ZK la expande:
La modularidad es el grado en que los componentes de un sistema pueden separarse y recombinarse. A través de bucles de retroalimentación más rápidos y barreras de entrada más bajas con menos capital requerido (tanto económico como humano), la modularidad permite experimentación más rápida y especialización. La cuestión de modular vs integrado no es binaria, sino más bien un espectro para experimentar y descubrir qué partes tiene sentido desacoplar y cuáles no.
Las Pruebas de Conocimiento Cero, o ZKPs, por otro lado, permiten a una parte (el probador) demostrar a otra parte (el verificador) que saben que algo es cierto, sin revelar ninguna información adicional más allá de su validez. Esto puede aumentar la escalabilidad y eficiencia al evitar la reejecución (pasando de un modelo de ejecución total a verificar, a un modelo de uno ejecuta, todos verifican), así como la expresividad al permitir la privacidad (con limitaciones). Las ZKPs también mejoran la dificultad de las garantías al reemplazar garantías criptoeconómicas más débiles por otras más fuertes, lo que se representa al empujar la frontera de compensación hacia afuera (haciendo referencia al gráfico anterior).
Creemos que tanto la modularidad como la 'ZKficación de todo' son tendencias que seguirán acelerándose. Si bien ambas proporcionan lentes interesantes a través de las cuales explorar el espacio individualmente, estamos particularmente interesados en la intersección de las dos. Las dos preguntas clave en las que estamos interesados son:
Sin embargo, antes de poder abordar esas preguntas, necesitamos una vista actualizada de cómo se ve la pila modular en 2024.
La imagen a menudo utilizada del stack modular con cuatro componentes (ejecución, publicación de datos, consenso, liquidación) es útil como un modelo mental simple, pero no sentimos que sea una representación adecuada en este momento, dada la evolución del espacio modular. Un desglose adicional conduce a nuevos componentes que anteriormente se pensaban como parte de una pieza más grande, al mismo tiempo que crea nuevas dependencias y la necesidad de una interoperabilidad segura entre los diferentes componentes (más sobre esto más adelante). Dado el ritmo al que avanza el espacio, puede ser difícil mantenerse actualizado sobre todas las innovaciones en diferentes niveles del stack.
Intentos anteriores de explorar la pila web3 incluyen los realizados por Kyle Samani(Multicoin) - originalmente publicado en2018 y actualizado en 2019. Cubre todo, desde el acceso a Internet descentralizado de última milla (como Helium) para la gestión de claves del usuario final. Si bien los principios detrás de esto podrían ser reciclados, algunas piezas, como la prueba y verificación, están completamente ausentes.
Con esto en mente, hemos intentado crear una representación actualizada de cómo se ve la pila modular en 2024, ampliando la pila modular existente de cuatro partes. Está dividido por componente en lugar de funcionalidad, lo que significa que la red P2P, por ejemplo, está incluida en el consenso en lugar de dividirla como un componente separado, principalmente porque es difícil construir un protocolo en torno a ella.
Ahora que tenemos una vista actualizada de la pila modular, podemos comenzar a analizar la pregunta real, es decir, qué partes de la pila ZK ya ha penetrado y qué problemas abiertos podrían resolverse introduciendo ZK (ya sea evitando la reejecución o características de privacidad). A continuación se muestra un resumen de nuestros hallazgos, antes de profundizar en cada componente por separado.
Los usuarios actuales de las cadenas de bloques necesitan navegar por múltiples cadenas, billeteras e interfaces, lo cual es engorroso y actúa como fricción para una adopción más amplia. La abstracción de operaciones de usuario es un término general para cualquier intento de abstraer esta complejidad y permitir a los usuarios interactuar con solo una interfaz (por ejemplo, una aplicación o billetera específica), con toda la complejidad ocurriendo en el backend. Algunos ejemplos de abstracciones a nivel de infraestructura incluyen:
Las transacciones deben ser ordenadas antes de ser agregadas a un bloque, lo que se puede hacer de muchas maneras: ordenándolas por rentabilidad para el proponente (transacciones más rentables primero), en el orden en que fueron enviadas (primero en entrar, primero en salir), dando prioridad a las transacciones de las mempools privadas, etc.
Otra pregunta es quién realiza los pedidos de las transacciones. En un mundo modular, múltiples partes diferentes pueden hacer esto, incluido el secuenciador de rollup (centralizado o descentralizado), la secuenciación L1 (basada en rollups) y una red de secuenciación compartida (red descentralizada de secuenciadores utilizada por múltiples rollups). Todos ellos tienen diferentes suposiciones de confianza y capacidades para escalar. En la práctica, la ordenación real de transacciones y su agrupación en un bloque también puede ser realizada fuera del protocolo por actores especializados (blockbuilders).
La capa de ejecución contiene la lógica de cómo se actualiza el estado y es donde se ejecutan los contratos inteligentes. Además de devolver una salida de la computación, zkVMs también permiten demostrar que las transiciones de estado se realizaron correctamente. Esto permite a otros participantes de la red verificar la ejecución correcta solo verificando la prueba, en lugar de tener que volver a ejecutar las transacciones.
Además de una verificación más rápida y eficiente, otro beneficio de la ejecución comprobable es permitir una computación más compleja, ya que no te encuentras con los problemas típicos de gas y recursos limitados en cadena con la computación fuera de cadena. Esto abre la puerta a aplicaciones completamente nuevas que son computacionalmente más intensas para ejecutar en blockchains y aprovechar la computación garantizada.
La consulta de datos, o la lectura de datos desde la cadena de bloques, es una parte esencial de la mayoría de las aplicaciones. Si bien gran parte de la discusión y los esfuerzos de los últimos años se han centrado en escalar las escrituras (ejecución), escalar las lecturas es aún más importante debido al desequilibrio entre las dos (especialmente en un entorno descentralizado). La relación entre lectura/escritura difiere entre las cadenas de bloques, pero un punto de datos es Estimación de Sigque más del 96% de todas las llamadas a los nodos en Solana eran llamadas de lectura (según 2 años de datos empíricos) - una proporción de lectura/escritura de 24:1.
El escalado de lecturas incluye tanto obtener más rendimiento (más lecturas por segundo) con clientes validadores dedicados (como Sig en Solana) como habilitar consultas más complejas (combinando lecturas con cálculos), por ejemplo con la ayuda de co-procesadores.
Otro ángulo es descentralizar los métodos de consulta de datos. Hoy en día, la mayoría de las solicitudes de consulta de datos en blockchains son facilitadas por terceros de confianza (basados en reputación), como nodos RPC (Infura) y indexadores (Dune). Ejemplos de opciones más descentralizadas incluyen El Gráfico y operadores a prueba de almacenamiento (que también son verificables). También existen varios intentos de crear una red RPC descentralizada, como Infura DIN o Red Lava(además del RPC descentralizado, Lava tiene como objetivo ofrecer más adelante servicios adicionales de acceso a datos).
Con cada vez más aplicaciones que incorporan ZKPs, la prueba y verificación se están convirtiendo rápidamente en una parte esencial del stack modular. Sin embargo, hoy en día, la infraestructura de pruebas sigue siendo en su mayoría permisiva y centralizada, con muchas aplicaciones dependiendo de un único probador.
Mientras que la solución centralizada es menos compleja, descentralizar la arquitectura de prueba y dividirla en un componente separado en la pila modular trae varios beneficios. Un beneficio clave se presenta en forma de garantías de vivacidad que son cruciales para aplicaciones que dependen de la generación frecuente de pruebas. Los usuarios también se benefician de una mayor resistencia a la censura y de tarifas más bajas impulsadas por la competencia y el reparto de la carga de trabajo entre múltiples probadores.
Creemos que las redes de demostradores de propósito general (muchas aplicaciones, muchos demostradores) son superiores a las redes de demostradores de una sola aplicación (una aplicación, muchos demostradores) debido a una mayor utilización del hardware existente y menos complejidad para los demostradores. Una mayor utilización también beneficia a los usuarios en términos de tarifas más bajas, ya que los demostradores no necesitan ser compensados por la redundancia a través de tarifas más altas (aún necesitan cubrir costos fijos).
Figment Capitalproporcionó una buena visión general del estado actual de la cadena de suministro de pruebas, que consta tanto de la generación de pruebas como de la agregación de pruebas (que en sí misma es generación de pruebas, pero simplemente tomando dos pruebas como entrada en lugar de la traza de ejecución).
Fuente: Capital de Figment
Fuente: Figment Capital
La publicación de datos (DP) garantiza que los datos estén disponibles y sean fácilmente recuperables durante un corto período (1-2 semanas). Esto es crucial tanto para la seguridad (los rollups optimistas requieren datos de entrada para verificar la ejecución correcta mediante la reejecución durante el período de desafío, 1-2 semanas) como para la vitalidad (incluso si un sistema utiliza pruebas de validez, es posible que se necesiten datos de transacciones subyacentes para demostrar la propiedad de activos para las salidas de emergencia, transacciones forzadas o para verificar que las entradas coincidan con las salidas). Los usuarios (como los puentes zk y los rollups) enfrentan un pago único, que cubre el costo de almacenar transacciones y estado durante un corto período hasta que se elimine. Las redes de publicación de datos no están diseñadas para el almacenamiento de datos a largo plazo (en su lugar, consulte la siguiente sección para posibles soluciones).
Celestia fue la primera capa de DP alternativa en lanzar su red principal (31 de octubre), pero pronto habrá muchas alternativas para elegir como Disponible, EigenDA, y Cerca de DAse espera que todos se lancen durante 2024. Además, EIP 4844 de Ethereummejorar la publicación de datos escalados en Ethereum (además de crear un mercado de tarifas separado para el almacenamiento de bloques) y preparar el escenario para la fragmentación completa de dank. DP también se está expandiendo a otros ecosistemas - un ejemplo es @nubit_org/riema-secures-angel-investment-for-launching-the-first-bitcoin-native-data-availability-layer-49ccf0487380">Nubit, que tiene como objetivo construir Native DP en Bitcoin.
Muchas soluciones de DP también ofrecen servicios más allá de la mera publicación de datos, incluida la seguridad compartida para rollups soberanos (como Celestia y Disponible) o una interoperabilidad más fluida entre rollups (como Avail'sNexus). También hay proyectos (DomiconyGravedad Cero) que ofrecen tanto la publicación de datos como el almacenamiento a largo plazo, lo cual es una propuesta convincente. Esto también es un ejemplo de volver a agrupar dos componentes en la pila modular, algo que probablemente veremos más en el futuro (experimentación tanto con una mayor desagregación como con una reagrupación).
Almacenar datos históricos es importante principalmente para fines de sincronización y para atender solicitudes de datos. Sin embargo, no es factible que cada nodo completo almacene todos los datos y la mayoría de los nodos completos eliminan datos antiguos para mantener los requisitos de hardware razonables. En su lugar, confiamos en partes especializadas (nodos de archivo e indexadores) para almacenar todos los datos históricos y ponerlos a disposición a solicitud de los usuarios.
También hay proveedores de almacenamiento descentralizado, como FilecoinoArweave, que ofrecen soluciones de almacenamiento descentralizado a largo plazo a un precio razonable. Si bien la mayoría de las blockchains no tienen un proceso formal de almacenamiento de archivos (simplemente confían en que alguien lo almacene), los protocolos de almacenamiento descentralizado son buenos candidatos para almacenar información histórica y agregar algo de redundancia (al menos X nodos almacenan los datos) a través de los incentivos incorporados en la red de almacenamiento.
Dado que las cadenas de bloques son sistemas P2P distribuidos, no hay un tercero de confianza que determine la verdad global. En cambio, los nodos de la red se ponen de acuerdo sobre cuál es la verdad actual (qué bloque es el correcto) a través de un mecanismo llamado consenso. Los métodos de consenso basados en PoS se pueden clasificar en BFT (donde el quórum bizantino tolerante a fallas de validadores decide el estado final) o basados en cadena (donde el estado final se decide retrospectivamente por la regla de elección de bifurcación). Si bien la mayoría de las implementaciones de consenso PoS existentes están basadas en BFT, Cardanoes un ejemplo de implementación de la cadena más larga. También hay un creciente interés en mecanismos de consenso basados en DAG como Narwhal-Bullshark que se implementa en algunas variaciones en Aleo, Aptos y Sui.
El consenso es una parte crucial de muchos componentes diferentes de la pila modular, incluido el secuenciador compartido, la prueba descentralizada y las redes de publicación de datos basadas en blockchain (no basadas en comités como EigenDA).
El asentamiento es similar al tribunal de justicia más alto, la fuente final de verdad donde se verifican la corrección de las transiciones de estado y se resuelven disputas. Una transacción se considera final en el momento en que es irreversible (o en el caso de la finalidad probabilística, en el punto en el que sería suficientemente difícil revertirla). El tiempo de finalización depende de la capa de asentamiento subyacente utilizada, que a su vez depende de la regla de finalidad específica utilizada y del tiempo de bloque.
La lentitud de la finalidad es particularmente un problema en la comunicación entre rollups, donde los rollups necesitan esperar la confirmación de Ethereum antes de poder aprobar una transacción (7 días para rollups optimistas, 12 minutos y tiempo de demostración para rollups de validez). Esto conduce a una mala experiencia del usuario. Hay múltiples esfuerzos para resolver este problema utilizando pre-confirmaciones con un cierto nivel de seguridad. Ejemplos incluyen soluciones específicas del ecosistema (Gate.ioPolygon AggLayerozkSync HyperBridge) y soluciones de propósito general como Capa de Finalidad Rápida de Nearque tiene como objetivo conectar múltiples ecosistemas rollup diferentes aprovechando la seguridad económica de EigenLayer. También existe la opción de puentes de rollup nativos aprovechando EigenLayerpara confirmaciones suaves para evitar esperar la plena finalidad.
La seguridad está relacionada con la solidez de las garantías y es una parte crucial de la propuesta de valor de las blockchains. Sin embargo, el arranque de la seguridad criptoeconómica es difícil, ya que aumenta las barreras de entrada y actúa como fricción para la innovación en aquellas aplicaciones que la necesitan (diversos middleware y L1 alternativos).
La idea de seguridad compartida es utilizar la seguridad económica existente de las redes PoS y someterla a un riesgo adicional de penalización (condiciones de castigo), en lugar de que cada componente intente arrancar el suyo propio. Ha habido algunos intentos anteriores de hacer lo mismo en redes PoW.minería combinada.)), pero los incentivos desalineados facilitaron que los mineros se confabularan y explotaran un protocolo (más difícil castigar el mal comportamiento a medida que el trabajo ocurre en el mundo físico, es decir, la minería utilizando potencia de cálculo). La seguridad PoS es más flexible para ser utilizada por otros protocolos, ya que tiene incentivos tanto positivos (rendimiento de staking) como negativos (slashing).
Los protocolos que se construyen en torno a la premisa de la seguridad compartida incluyen:
La interoperabilidad segura y eficiente sigue siendo un gran problema en un mundo multi-chain, ejemplificado por el $2.8bn perdidos en hacks de puentes. En sistemas modulares, la interoperabilidad se vuelve aún más importante. No solo estás comunicándote entre otras cadenas, sino que las blockchains modulares también requieren que diferentes componentes se comuniquen entre sí (como la capa de DA y de liquidación). Por lo tanto, ya no es factible simplemente ejecutar un nodo completo o verificar una única prueba de consenso como en las blockchains integradas. Esto agrega más piezas móviles a la ecuación.
La interoperabilidad incluye tanto el puente de tokens como el paso de mensajes más general a través de blockchains. Hay varias opciones diferentes que hacen diferentes compensaciones en cuanto a seguridad, latencia y costo. Optimizar los tres es muy difícil, lo que generalmente requiere sacrificar al menos uno. Además, diferentes estándares entre cadenas hacen que las implementaciones en nuevas cadenas sean más difíciles.
Aunque todavía carecemos de una definición clara de los diferentes tipos de clientes livianos (o nodos), esta publicación de Dino (co-fundador de Fluent & Modular Media) da una buena introducción. La mayoría de los clientes ligeros hoy solo verifican el consenso, pero idealmente tendríamos clientes ligeros que puedan verificar la ejecución y DA también para reducir las suposiciones de confianza. Esto permitiría acercarse a la seguridad de un nodo completo, sin los altos requisitos de hardware.
Suponiendo que podemos alcanzar un estado en el que la generación de ZKPs se vuelva muy rápida (casi a la velocidad de la luz) e increíblemente barata (casi gratuita), ¿cómo sería el escenario final? En otras palabras, ¿cuándo habrá ZK comido el stack modular?
En términos generales, creemos que dos cosas serían ciertas en este estado del mundo:
Una tercera condición estaría relacionada con la privacidad (o gestión del flujo de información), pero es más complicado. ZKPs se pueden utilizar para algunas aplicaciones de privacidad con demostración en el lado del cliente, que es lo que plataformas como Aleo, Aztec o Polygon Miden están construyendo, pero lograr privacidad a gran escala para todos los casos de uso potenciales depende también del progreso de MPC y FHE, un tema potencial para una futura publicación en el blog.
¿Y si estamos equivocados y el futuro no es ni modular ni ZK’fied? Algunos riesgos potenciales para nuestra tesis incluyen:
Tanto los usuarios como los desarrolladores sufren por el creciente número de cadenas. Los usuarios necesitan gestionar fondos en varias cadenas (y potencialmente en varias carteras). Los desarrolladores de aplicaciones, por otro lado, tienen menos estabilidad y previsibilidad dada la evolución del espacio, lo que dificulta decidir en qué cadena construir. También necesitan pensar en la fragmentación del estado y la liquidez. Esto es especialmente cierto ahora, ya que todavía estamos experimentando en la frontera de qué componentes tienen sentido para desacoplar y cuáles se volverán a acoplar. Creemos que la abstracción de la operación del usuario, así como soluciones de interoperabilidad seguras y eficientes, son partes cruciales para resolver este problema.
No hay manera de evitar el hecho de que la generación de pruebas lleva demasiado tiempo y el costo tanto de la prueba como de la verificación sigue siendo demasiado alto hoy en día. Soluciones competidoras como los entornos de ejecución confiables/TEEs (privacidad) o soluciones de seguridad optimistas/criptoeconómicas (costo) todavía tienen más sentido para muchas aplicaciones hoy en día.
Se está realizando mucho trabajo en cuanto a la optimización de software y la aceleración de hardware para ZKPs. La agregación de pruebas ayudará a reducir aún más los costos de verificación al distribuir el costo entre múltiples partes diferentes (menor costo/usuario). También existe la posibilidad de adaptar la capa base para que esté más optimizada para la verificación de ZKPs. Un desafío en cuanto a la aceleración de hardware para ZKPs es el rápido desarrollo de sistemas de prueba. Esto hace que sea difícil crear hardware especializado (ASIC) ya que corren el riesgo de volverse obsoletos rápidamente si/cuando los estándares de los sistemas subyacentes de prueba evolucionan.
Ingonyama ha intentado crear algunos puntos de referencia para el rendimiento del probador a través de una métrica comparable llamada puntuación ZK. Se basa en el costo de la ejecución de la computación (OPEX) y sigue MMOPS/WATT, donde MMOPS significa operaciones de multiplicación modular por segundo. Para obtener más información sobre el tema, recomendamos blogs de @Cysic/BJQcpVbXn?ref=blog.succinct.xyz">Cysic and@ingonyama/revisiting-paradigms-hardware-acceleration-for-zero-knowledge-proofs-5dffacdc24b4">Ingonyama, as well as this talk by Wei Dai.
Las pruebas de conocimiento nulo solo se pueden utilizar para lograr privacidad para el estado personal, no para el estado compartido donde varias partes necesitan calcular en datos encriptados (como un Uniswap privado). FHE y MPC también son necesarios para una privacidad total, pero es necesario mejorar muchas órdenes de magnitud en cuanto a coste y rendimiento antes de que sean opciones viables para un uso a mayor escala. Dicho esto, las pruebas de conocimiento nulo siguen siendo útiles para ciertos casos de uso que no requieren un estado compartido privado, como soluciones de identidad o pagos. No todos los problemas necesitan ser resueltos con la misma herramienta.
Entonces, ¿dónde nos deja esto? Si bien estamos progresando cada día, queda mucho trabajo por hacer. Los problemas más apremiantes por resolver son cómo el valor y la información pueden fluir de manera segura entre diferentes componentes modulares sin sacrificar velocidad o costo, así como abstraerlo todo del consumidor final para que no tengan que preocuparse por la conexión entre diferentes cadenas, cambiar billeteras, etc.
Si bien actualmente estamos en gran medida en la fase experimental, las cosas deberían estabilizarse con el tiempo a medida que descubrimos dónde en el espectro se encuentran los compromisos óptimos para cada caso de uso. A su vez, esto dará lugar a que los estándares (informales o formales) emerjan y brinden más estabilidad a los constructores sobre estas cadenas.
Hoy en día todavía hay muchos casos de uso que recurren a la seguridad criptoeconómica por defecto debido al costo y complejidad de generar ZKPs, y algunos que requieren una combinación de los dos. Sin embargo, esta participación debería disminuir con el tiempo a medida que diseñamos sistemas de demostración más eficientes y hardware especializado para reducir el costo y la latencia de la demostración y verificación. Con cada reducción exponencial en costo y velocidad, se desbloquean nuevos casos de uso.
Si bien este artículo se centró específicamente en ZKPs, también estamos cada vez más interesados en cómo las soluciones criptográficas modernas (ZKPs, MPC, FHE y TEE) terminarán jugando juntas, algo que ya estamos viendo.
¡Gracias por leer!