Especialización y generalización, ¿cuál es el futuro de la ZK? Intentaré responder a esta pregunta con un diagrama:
Como se muestra en el diagrama, ¿es posible que en el futuro converjamos a un punto óptimo mágico en el sistema de coordenadas de compensación?
No, el futuro de la computación verificable fuera de la cadena es una curva continua que difumina los límites entre la ZK especializada y la general. Permítanme explicar la evolución histórica de estos términos y cómo convergerán en el futuro.
Hace dos años, la infraestructura ZK «especializada» significaba marcos de circuitos de bajo nivel como circom, Halo2 y arkworks. Las aplicaciones ZK creadas con estos marcos eran básicamente circuitos ZK escritos a mano. Eran rápidos y rentables para tareas específicas, pero normalmente difíciles de desarrollar y mantener. Son similares a varios chips de circuitos integrados especializados (obleas físicas de silicio) de la industria actual de circuitos integrados, como los chips NAND y los chips controladores.
Sin embargo, en los dos últimos años, la infraestructura especializada ZK se ha ido «generalizando».
Ahora tenemos marcos ZKML, ZK coprocessor y ZKSQL que ofrecen SDK fáciles de usar y altamente programables para construir diferentes categorías de aplicaciones ZK sin escribir una sola línea de código de circuito ZK. Por ejemplo, el coprocesador ZK permite a los contratos inteligentes acceder de forma fiable a los estados históricos, eventos y transacciones de la cadena de bloques y ejecutar cálculos arbitrarios sobre estos datos. ZKML permite a los contratos inteligentes utilizar resultados de inferencia de IA de forma fiable para manejar una amplia gama de modelos de aprendizaje automático.
Estos marcos evolucionados mejoran significativamente la programabilidad en sus dominios de destino al tiempo que mantienen un alto rendimiento y un bajo coste gracias a finas capas de abstracción (SDK/API) que se aproximan a los circuitos bare-metal.
Son similares a las GPU, TPU y FPGA del mercado de circuitos integrados: especialistas en dominios programables.
ZKVM también ha avanzado mucho en los últimos dos años. En particular, todas las ZKVM de uso general se basan en marcos ZK especializados de bajo nivel. La idea es que se puedan escribir aplicaciones ZK en lenguajes de alto nivel (incluso más fáciles de usar que SDK/API), que se compilan en una combinación de circuitos especializados y conjuntos de instrucciones (RISC-V o similar a WASM). Son como los chips CPU en la industria de los circuitos integrados.
ZKVM es una capa de abstracción por encima de los frameworks ZK de bajo nivel, al igual que los coprocesadores ZK.
Como dijo una vez un sabio, una capa de abstracción puede resolver todos los problemas informáticos, pero al mismo tiempo crea otro problema. La clave está en las compensaciones. Fundamentalmente, para ZKVM, intercambiamos rendimiento y generalidad.
Hace dos años, el rendimiento «bare-metal» de ZKVM era realmente pobre. Sin embargo, en solo dos años, el rendimiento de ZKVM ha mejorado significativamente.
¿Por qué?
Porque estos ZKVM de «propósito general» se han vuelto más «especializados». Una razón clave para la mejora del rendimiento es la «precompilación». Estas precompilaciones son circuitos ZK especializados capaces de computar programas comunes de alto nivel, como SHA2 y diversas verificaciones de firmas, mucho más rápido que descomponiéndolos en fragmentos de circuitos de instrucciones.
Así pues, la tendencia es ahora bastante clara.
La infraestructura ZK especializada se está generalizando, mientras que las ZKVM generales se están especializando.
Las optimizaciones de ambas soluciones en los últimos años han logrado un punto de equilibrio mejor que antes: avanzar en un punto sin sacrificar otro. Por eso ambas partes sienten que «definitivamente somos el futuro».
Sin embargo, la sabiduría informática nos dice que, en algún momento, nos encontraremos con el «muro óptimo de Pareto» (línea verde discontinua), donde no podemos mejorar un rendimiento sin sacrificar otro.
Por tanto, surge la pregunta del millón:
¿Sustituirá por completo una tecnología a otra en el momento oportuno?
Tomando prestadas algunas ideas de la industria de los circuitos integrados: el mercado de las CPU es de 126.000 millones de dólares, mientras que toda la industria de los circuitos integrados (incluidos todos los «especializados») es de 515.000 millones de dólares. Estoy seguro de que, desde una perspectiva microeconómica, la historia se repetirá aquí y no se sustituirán entre sí.
Dicho esto, hoy nadie diría: «Eh, estoy usando un ordenador totalmente accionado por una CPU de propósito general», o «Eh, esto es un robot de lujo accionado por circuitos integrados especializados».
Sí, en efecto, debemos considerar esta cuestión desde una perspectiva macro, y en el futuro habrá una curva de compensación que permita a los desarrolladores elegir con flexibilidad en función de sus necesidades.
En el futuro, la infraestructura ZK especializada y la ZKVM general podrán trabajar juntas. Esto puede realizarse de múltiples formas. El método más sencillo ya se puede conseguir ahora. Por ejemplo, se puede utilizar un coprocesador ZK para generar algunos resultados de cálculo en el historial de transacciones del blockchain, pero la lógica de negocio de cálculo en estos datos es muy compleja y no se puede expresar simplemente en el SDK/API.
Lo que se puede hacer es obtener pruebas ZK de alto rendimiento y bajo coste de los datos y los resultados intermedios de los cálculos, y luego agregarlos a una máquina virtual de propósito general mediante pruebas recursivas.
Aunque este tipo de debate me parece interesante, sé que todos estamos construyendo este futuro informático asíncrono impulsado por la computación verificable fuera de la cadena para blockchain. A medida que surjan casos de uso para la adopción masiva por parte de los usuarios en los próximos años, creo que este debate llegará finalmente a una conclusión.