Explorando los lenguajes de programación ZK

Principiante12/24/2023, 3:04:47 PM
Este artículo presenta el alcance de aplicación de diferentes lenguajes de programación ZK, junto con sus respectivas ventajas y desventajas.

Las Pruebas de Conocimiento Cero (ZKP) son una herramienta criptográfica poderosa que puede validar la precisión de cálculos mientras protege la privacidad de los datos de entrada. Los Lenguajes Específicos de Dominio (DSLs) juegan un papel crucial como parte de esta infraestructura clave, simplificando el desarrollo y proceso de verificación de circuitos ZKP. Actúan como un puente importante entre conceptos abstractos y la representación precisa del circuito requerida por los sistemas de prueba.

Uno de los desafíos clave a los que se enfrentan los sistemas de prueba es traducir conceptos abstractos de alto nivel en circuitos prácticos. Sin embargo, la aparición de los DSL ha abordado este problema al facilitar la estructuración de estos conceptos abstractos de una manera más concreta e implementable, cumpliendo así con este desafío.

En la última década, hemos sido testigos de un aumento significativo en la cantidad y diversidad de DSLs. Esta vitalidad en el campo es evidente en el desarrollo de varios lenguajes de circuitos, incluyendo Noir, Leo y Zinc. Ya sea que necesite una opción versátil como Circom o una solución personalizada para una plataforma específica como Cairo, puede elegir entre numerosos lenguajes y marcos para escribir circuitos ZKP.

En este artículo, exploraremos los principales idiomas de programación ZK utilizados activamente por los desarrolladores y analizaremos las mejores características de cada idioma.

Cairo por StarkWare

Cairo es el lenguaje central para programas de computación general que admiten pruebas STARK. Ha desempeñado un papel clave en el éxito de StarkNet y StarkEx, impulsando la escalabilidad de aplicaciones en la mainnet de Ethereum. Es importante destacar que Cairo ha sido fundamental para admitir una variedad de aplicaciones, incluyendo dYdX, Sorare e Immutable X. El nombre "Cairo" se deriva de la abreviatura de "CPU Algebraic Intermediate Representation". En el ámbito de las pruebas de conocimiento cero, funciona de manera similar a un lenguaje ensamblador, lo que permite a los desarrolladores familiarizados con lenguajes de programación de bajo nivel como C, C++ o Solidity comenzar más fácilmente.

Inspirado en Rust, Cairo permite a los desarrolladores crear contratos inteligentes Starknet con un enfoque en seguridad y desarrollo amigable. Cairo cuenta con una sintaxis poderosa que simplifica la creación de circuitos ZK, lo que permite a los usuarios realizar diversas tareas dentro de los programas de Cairo. Además, una de las ventajas significativas de Cairo es su escalabilidad, lo que permite la integración flexible de nuevas características y funcionalidades.

En los sistemas ZK, la eficiencia y la escalabilidad son factores cruciales, y Cairo cumple con estos requisitos al enfatizar ambos. El lenguaje integra estrategias de optimización, incluida la reducción de restricciones y la eliminación de bucles, para aliviar la carga computacional típicamente asociada con los circuitos ZK. La optimización en el diseño del circuito se traduce en una generación y verificación de pruebas más rápidas, lo que lo convierte en una opción ideal para aplicaciones que requieren un alto rendimiento y una latencia mínima.

La expansión y el desarrollo de El Cairo han sido notables, presenciando un aumento extraordinario en el número de desarrolladores a tiempo completo en los últimos dos años. Este aumento destaca la adaptabilidad de El Cairo, ya que su uso no se limita a blockchain, sino que es significativo en cualquier contexto que requiera verificación computacional. Por lo tanto, podemos anticipar un mayor crecimiento significativo en los desarrolladores que adoptan El Cairo.

El 28 de septiembre de 2023, Starknet lanzó una importante actualización a su lenguaje de programación con Cairo v2.3.0. Esta versión marca un avance significativo en la modularización de contratos al introducir nuevas características, opciones de almacenamiento y gestión de eventos, mejorando el potencial de los contratos inteligentes. La integración de estos componentes ofrece una forma flexible de ampliar las funcionalidades del contrato, permitiendo que módulos de terceros mejoren la funcionalidad de los contratos.

Zinc por ZkSync

Zinc es un lenguaje de programación diseñado específicamente para crear contratos inteligentes y circuitos SNARK en la plataforma zkSync. Adopta la sintaxis de Rust, integra elementos de Solidity y ofrece funcionalidades únicas.

La singularidad de Zinc radica en su facilidad de uso. Puede escribir código seguro sin necesidad de adentrarse en todos los detalles complejos del Sistema de Restricciones de Primer Orden (R1CS). Zinc enfatiza la inmutabilidad, dotándola de características funcionales inherentes. Esto significa que prioriza los datos inmutables y la evaluación de funciones, reduciendo así los efectos secundarios y facilitando la escritura de un código de contrato inteligente más limpio y menos propenso a errores.

Además, Zinc incluye operaciones matemáticas seguras para evitar posibles desbordamientos, garantizando la seguridad de todas las operaciones. A pesar de algunas limitaciones, como la ausencia de bucles infinitos y recursión, Zinc simplifica el proceso de depuración a través del seguimiento de registros de consola. Estos registros facilitan el seguimiento y la resolución de problemas transaccionales en redes de prueba o en la red principal, mejorando así la experiencia de depuración.

Noir By Aztec

Noir, un DSL de código abierto desarrollado por Aztec y basado en Rust, tiene como objetivo simplificar la creación de circuitos ZK y programas ZK sin requerir un conocimiento criptográfico profundo. Se considera uno de los lenguajes más accesibles para escribir aplicaciones ZK compatibles con cualquier sistema de demostración. Noir se enfoca en seguridad, simplicidad y rendimiento, ofreciendo una sintaxis de alto nivel similar a Rust. Abstrae la seguridad criptográfica, simplificando el uso de primitivas criptográficas manteniendo un alto rendimiento.

Noir tiene ventajas significativas en la expansión del rango de aplicaciones que pueden aprovechar las capacidades de protección de la privacidad ofrecidas por ZKP, mejorando así la privacidad y la eficiencia de verificación. Se compila en una representación intermedia llamada Representación Intermedia de Circuito Abstracto (Acer), que luego se puede compilar en R1CS. La separación del sistema de prueba de backend del lenguaje en sí mismo permite a Noir admitir varios sistemas de prueba, incluidos Aztec Brettenberg, Turbo Plonk y futuras integraciones potenciales como Groth16 y Halo2.

El lenguaje incluye una biblioteca estándar con funcionalidades eficientes como SHA-256 (una función hash criptográfica que produce una salida de tamaño fijo) y verificaciones de Pedersen-Merkle (una técnica de verificación criptográfica que utiliza compromisos de Pedersen y árboles de Merkle para garantizar la integridad y consistencia de los datos). El diseño de Noir, similar a Rust, abarca características familiares para los desarrolladores de aplicaciones, como funciones, submódulos, tipos definidos por el usuario (structs), declaraciones condicionales, bucles y constantes globales. Además, se están realizando esfuerzos continuos para desarrollar genéricos y funciones de primera clase para mejorar aún más la expresividad de Noir.

Es importante tener en cuenta que Noir todavía está evolucionando, con posibles limitaciones y errores. Sin embargo, el equipo de desarrollo está comprometido con su mejora continua y optimización.

o1js por 0(1) Labs

o1js, anteriormente conocido como SnarkyJS, es una biblioteca de TypeScript desarrollada por 0(1) Labs para crear contratos inteligentes utilizando el lenguaje de programación SNARK. Aprovecha completamente tecnologías establecidas como Node.js y la compatibilidad con el navegador para garantizar un fácil acceso y comodidad para los desarrolladores.

o1js se integra perfectamente con bibliotecas y herramientas de JavaScript y TypeScript, brindando a los desarrolladores un ecosistema robusto y un amplio soporte comunitario. Esta integración simplifica el proceso de desarrollo y reduce la curva de aprendizaje asociada con la adopción de nuevos entornos de desarrollo. Además, admite completamente Visual Studio Code (VS Code), un editor de código ampliamente utilizado, lo que permite a los desarrolladores aprovechar al máximo funciones como el autocompletado de código, el resaltado de sintaxis y la depuración para mejorar la experiencia de desarrollo.

Básicamente, o1js es un marco ZK multifuncional que ofrece herramientas clave necesarias para crear pruebas ZK. Admite una amplia gama de programas ZK, que cubren una variedad de operaciones probables incorporadas como aritmética básica, hashing, firma, operaciones booleanas, comparaciones y más. Con el marco o1js, puedes construir zkApps en el Protocolo Mina, estos contratos inteligentes se ejecutan en el lado del cliente con entradas privadas.

Cabe destacar que a principios de septiembre de 2023, el equipo de 0(1) Labs anunció la transición de SnarkyJS a o1js, enfatizando su compromiso con la mejora del rendimiento. Es especialmente notable su logro en la reducción del tiempo de carga de la biblioteca en 3-4 veces, lo que se refiere al tiempo necesario para importar o1js, un proceso que podría bloquear el hilo principal. Para las aplicaciones web, el tiempo de carga es crucial para la sincronización de la ejecución de JavaScript y la renderización general de la página. Además, el equipo también actualizó el Mina zkApp CLI, mejorando la experiencia de construcción de la interfaz de usuario, y anunció mejoras adicionales en la API del Nodo de Archivo para mejorar su fiabilidad y claridad.

Leo por Aleo

La blockchain de Aleo se destaca en el campo de los contratos inteligentes con un fuerte énfasis en la protección de la privacidad. En su núcleo está el lenguaje de programación Leo, un lenguaje de tipado estático inspirado en Rust. Diseñado específicamente para desarrollar aplicaciones privadas, Leo apoya a los creadores que tienen como objetivo construir ecosistemas descentralizados seguros y confidenciales. Lo que realmente distingue a Leo es su papel pionero en la introducción de un kit de herramientas completo para aplicaciones universales de conocimiento cero. Este kit incluye un marco de pruebas, un registro de paquetes, un analizador de importaciones, un compilador remoto y un generador de teoremas.

El concepto de Leo proviene de un equipo de desarrollo liderado por Howard Wu, que concibe un sistema que capacita a los desarrolladores para construir aplicaciones descentralizadas con prioridad en la privacidad y la seguridad. Inspirándose en los principios de Rust, el diseño de Leo también incorpora elementos similares a JavaScript, facilitando una sensación de familiaridad y facilidad durante el proceso de desarrollo. Además, Leo tiene como objetivo acelerar y optimizar el desarrollo ofreciendo una plataforma de pruebas integrada, un registro de paquetes y un convertidor de importación. Esta integración permite a los desarrolladores centrarse en la lógica principal de sus aplicaciones sin quedar atrapados por problemas infraestructurales.

Una característica notable de Leo es su compilador, que transforma programas al formato de prueba R1CS de bajo nivel. La singularidad del compilador de Leo radica en su riguroso proceso de verificación formal. Esta verificación es crítica ya que pueden surgir vulnerabilidades en múltiples etapas, desde la programación inicial hasta la auditoría y compilación. Al realizar estrictas comprobaciones matemáticas para asegurar que el compilador se alinee con la intención del programador, Leo tiene como objetivo minimizar el riesgo de errores no detectados o posibles vulnerabilidades, especialmente en contextos L2, ZK-rollups, o programas privados en la plataforma Leo.

Circom de iden3

Circom, un lenguaje específico de dominio (DSL) meticulosamente elaborado para el desarrollo de circuitos ZK, es una creación colaborativa de Jordi Baylina y el equipo iden3. El compilador de Circom, escrito en Rust, funciona principalmente para compilar circuitos desarrollados utilizando el lenguaje Circom. Es importante destacar que Circom ha surgido como la opción preferida para aplicaciones sobresalientes de ZK en el mundo real, como Dark Forest y Tornado Cash. Su popularidad se atribuye a su impresionante rendimiento, que incluye tiempos rápidos de prueba en el navegador a través de pruebas WASM optimizadas, pruebas eficientes en el lado del servidor a través de rapidsnark y una verificación efectiva en la cadena.

Sin embargo, es importante reconocer que la funcionalidad de Circom se centra principalmente en el desarrollo de circuitos ZK, lo que puede hacerlo menos adecuado para tareas computacionales más amplias. Los desarrolladores que buscan capacidades más versátiles para satisfacer una gama más amplia de necesidades de desarrollo podrían encontrar que las habilidades de Circom son algo limitadas. En tales casos, los desarrolladores podrían necesitar integrar otros lenguajes de programación o marcos para cumplir con requisitos de desarrollo más completos.


Fuente de la imagen: Circom

La compatibilidad de Circom se centra principalmente en sistemas de Prueba de Conocimiento Cero (ZKP) ampliamente utilizados como snarkjs y libsnark. Esta compatibilidad garantiza una integración perfecta con estos sistemas comúnmente utilizados, pero también significa que los circuitos de Circom heredan características y limitaciones específicas asociadas con estas dependencias. Los desarrolladores que prefieran o necesiten sistemas ZKP alternativos podrían enfrentar desafíos de compatibilidad o necesitar invertir un esfuerzo adicional para adaptar e integrar los circuitos generados por Circom en sus sistemas preferidos.

Acechar por Lurk Lab

Lurk es un dialecto de Lisp de ámbito estático influenciado por Scheme y Common Lisp, con una característica única: permite la prueba directa de la corrección de la ejecución del programa usando zk-SNARKs, lo que posibilita una verificación compacta y eficiente. Los usos principales de Lurk incluyen:

Cómputo Verificable: Lurk permite la prueba de corrección de sus expresiones bajo condiciones de conocimiento cero, mejorando la confianza en los resultados de la computación.

Zero Knowledge: Los usuarios pueden demostrar conocimiento sin revelar información específica más allá de las entradas públicas, protegiendo así la privacidad.

Datos direccionables por contenido: Cada programa de Lurk está equipado con un identificador de contenido único (CID), lo que lo hace compatible con IPFS e IPLD.

Turing Completeness: Gate soporta la creación y la prueba de afirmaciones computacionales arbitrarias.

Funciones de orden superior: Las funciones de acecho pueden aceptar y devolver otras funciones, facilitando una programación funcional expresiva.

Cálculos con datos privados: Lurk permite manejar datos privados asegurando una salida comprobablemente correcta sin filtraciones de privacidad.

En la construcción de circuitos de propósito general, Lurk utiliza ampliamente el asignador de memoria "cons" de Lisp, que combina expresiones y genera referencias a través de hashing. La clave está en demostrar que dos expresiones se refieren a la misma referencia. Esta verificación permite a Lurk realizar cálculos dentro de los circuitos snark.

La funcionalidad de Lurk es rica, incluyendo soporte para recursividad infinita, bucles, flujo de control condicional y múltiples sistemas de prueba backend como Groth16, SnarkPack+ y Nova. Esta versatilidad abre puertas a diversas aplicaciones, incluyendo cálculos verificables, manejo de datos privados y ejecución de programas completos de Turing dentro de circuitos snark.

Conclusión

A medida que la diversidad de aplicaciones ZK crece, las perspectivas para los DSL en el dominio ZK son amplias. La clave del éxito de un DSL radica en establecer una comunidad próspera y una biblioteca rica para enriquecer las experiencias de los desarrolladores. Aquellos DSL que priorizan la compatibilidad con bibliotecas existentes pueden aprovechar completamente el conocimiento y los recursos de una comunidad de desarrolladores más amplia. Este enfoque ayuda a una integración más fluida, acelera el desarrollo y ofrece una mayor flexibilidad en la implementación de aplicaciones ZK. Tales esfuerzos colaborativos son cruciales para fomentar un ecosistema más sólido en torno a los DSL, ofreciendo beneficios tangibles a los desarrolladores y potenciando aún más la adopción y eficacia de la tecnología ZK.

Descargo de responsabilidad:

  1. Este artículo es una reimpresión de [panewslab]. Todos los derechos de autor pertenecen al autor original [ScalingX]. Si hay objeciones a esta reimpresión, por favor contacta al equipo de Gate Learn y ellos lo resolverán rápidamente.
  2. Responsabilidad de descargo de responsabilidad: Las opiniones y puntos de vista expresados en este artículo son únicamente los del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.

Explorando los lenguajes de programación ZK

Principiante12/24/2023, 3:04:47 PM
Este artículo presenta el alcance de aplicación de diferentes lenguajes de programación ZK, junto con sus respectivas ventajas y desventajas.

Las Pruebas de Conocimiento Cero (ZKP) son una herramienta criptográfica poderosa que puede validar la precisión de cálculos mientras protege la privacidad de los datos de entrada. Los Lenguajes Específicos de Dominio (DSLs) juegan un papel crucial como parte de esta infraestructura clave, simplificando el desarrollo y proceso de verificación de circuitos ZKP. Actúan como un puente importante entre conceptos abstractos y la representación precisa del circuito requerida por los sistemas de prueba.

Uno de los desafíos clave a los que se enfrentan los sistemas de prueba es traducir conceptos abstractos de alto nivel en circuitos prácticos. Sin embargo, la aparición de los DSL ha abordado este problema al facilitar la estructuración de estos conceptos abstractos de una manera más concreta e implementable, cumpliendo así con este desafío.

En la última década, hemos sido testigos de un aumento significativo en la cantidad y diversidad de DSLs. Esta vitalidad en el campo es evidente en el desarrollo de varios lenguajes de circuitos, incluyendo Noir, Leo y Zinc. Ya sea que necesite una opción versátil como Circom o una solución personalizada para una plataforma específica como Cairo, puede elegir entre numerosos lenguajes y marcos para escribir circuitos ZKP.

En este artículo, exploraremos los principales idiomas de programación ZK utilizados activamente por los desarrolladores y analizaremos las mejores características de cada idioma.

Cairo por StarkWare

Cairo es el lenguaje central para programas de computación general que admiten pruebas STARK. Ha desempeñado un papel clave en el éxito de StarkNet y StarkEx, impulsando la escalabilidad de aplicaciones en la mainnet de Ethereum. Es importante destacar que Cairo ha sido fundamental para admitir una variedad de aplicaciones, incluyendo dYdX, Sorare e Immutable X. El nombre "Cairo" se deriva de la abreviatura de "CPU Algebraic Intermediate Representation". En el ámbito de las pruebas de conocimiento cero, funciona de manera similar a un lenguaje ensamblador, lo que permite a los desarrolladores familiarizados con lenguajes de programación de bajo nivel como C, C++ o Solidity comenzar más fácilmente.

Inspirado en Rust, Cairo permite a los desarrolladores crear contratos inteligentes Starknet con un enfoque en seguridad y desarrollo amigable. Cairo cuenta con una sintaxis poderosa que simplifica la creación de circuitos ZK, lo que permite a los usuarios realizar diversas tareas dentro de los programas de Cairo. Además, una de las ventajas significativas de Cairo es su escalabilidad, lo que permite la integración flexible de nuevas características y funcionalidades.

En los sistemas ZK, la eficiencia y la escalabilidad son factores cruciales, y Cairo cumple con estos requisitos al enfatizar ambos. El lenguaje integra estrategias de optimización, incluida la reducción de restricciones y la eliminación de bucles, para aliviar la carga computacional típicamente asociada con los circuitos ZK. La optimización en el diseño del circuito se traduce en una generación y verificación de pruebas más rápidas, lo que lo convierte en una opción ideal para aplicaciones que requieren un alto rendimiento y una latencia mínima.

La expansión y el desarrollo de El Cairo han sido notables, presenciando un aumento extraordinario en el número de desarrolladores a tiempo completo en los últimos dos años. Este aumento destaca la adaptabilidad de El Cairo, ya que su uso no se limita a blockchain, sino que es significativo en cualquier contexto que requiera verificación computacional. Por lo tanto, podemos anticipar un mayor crecimiento significativo en los desarrolladores que adoptan El Cairo.

El 28 de septiembre de 2023, Starknet lanzó una importante actualización a su lenguaje de programación con Cairo v2.3.0. Esta versión marca un avance significativo en la modularización de contratos al introducir nuevas características, opciones de almacenamiento y gestión de eventos, mejorando el potencial de los contratos inteligentes. La integración de estos componentes ofrece una forma flexible de ampliar las funcionalidades del contrato, permitiendo que módulos de terceros mejoren la funcionalidad de los contratos.

Zinc por ZkSync

Zinc es un lenguaje de programación diseñado específicamente para crear contratos inteligentes y circuitos SNARK en la plataforma zkSync. Adopta la sintaxis de Rust, integra elementos de Solidity y ofrece funcionalidades únicas.

La singularidad de Zinc radica en su facilidad de uso. Puede escribir código seguro sin necesidad de adentrarse en todos los detalles complejos del Sistema de Restricciones de Primer Orden (R1CS). Zinc enfatiza la inmutabilidad, dotándola de características funcionales inherentes. Esto significa que prioriza los datos inmutables y la evaluación de funciones, reduciendo así los efectos secundarios y facilitando la escritura de un código de contrato inteligente más limpio y menos propenso a errores.

Además, Zinc incluye operaciones matemáticas seguras para evitar posibles desbordamientos, garantizando la seguridad de todas las operaciones. A pesar de algunas limitaciones, como la ausencia de bucles infinitos y recursión, Zinc simplifica el proceso de depuración a través del seguimiento de registros de consola. Estos registros facilitan el seguimiento y la resolución de problemas transaccionales en redes de prueba o en la red principal, mejorando así la experiencia de depuración.

Noir By Aztec

Noir, un DSL de código abierto desarrollado por Aztec y basado en Rust, tiene como objetivo simplificar la creación de circuitos ZK y programas ZK sin requerir un conocimiento criptográfico profundo. Se considera uno de los lenguajes más accesibles para escribir aplicaciones ZK compatibles con cualquier sistema de demostración. Noir se enfoca en seguridad, simplicidad y rendimiento, ofreciendo una sintaxis de alto nivel similar a Rust. Abstrae la seguridad criptográfica, simplificando el uso de primitivas criptográficas manteniendo un alto rendimiento.

Noir tiene ventajas significativas en la expansión del rango de aplicaciones que pueden aprovechar las capacidades de protección de la privacidad ofrecidas por ZKP, mejorando así la privacidad y la eficiencia de verificación. Se compila en una representación intermedia llamada Representación Intermedia de Circuito Abstracto (Acer), que luego se puede compilar en R1CS. La separación del sistema de prueba de backend del lenguaje en sí mismo permite a Noir admitir varios sistemas de prueba, incluidos Aztec Brettenberg, Turbo Plonk y futuras integraciones potenciales como Groth16 y Halo2.

El lenguaje incluye una biblioteca estándar con funcionalidades eficientes como SHA-256 (una función hash criptográfica que produce una salida de tamaño fijo) y verificaciones de Pedersen-Merkle (una técnica de verificación criptográfica que utiliza compromisos de Pedersen y árboles de Merkle para garantizar la integridad y consistencia de los datos). El diseño de Noir, similar a Rust, abarca características familiares para los desarrolladores de aplicaciones, como funciones, submódulos, tipos definidos por el usuario (structs), declaraciones condicionales, bucles y constantes globales. Además, se están realizando esfuerzos continuos para desarrollar genéricos y funciones de primera clase para mejorar aún más la expresividad de Noir.

Es importante tener en cuenta que Noir todavía está evolucionando, con posibles limitaciones y errores. Sin embargo, el equipo de desarrollo está comprometido con su mejora continua y optimización.

o1js por 0(1) Labs

o1js, anteriormente conocido como SnarkyJS, es una biblioteca de TypeScript desarrollada por 0(1) Labs para crear contratos inteligentes utilizando el lenguaje de programación SNARK. Aprovecha completamente tecnologías establecidas como Node.js y la compatibilidad con el navegador para garantizar un fácil acceso y comodidad para los desarrolladores.

o1js se integra perfectamente con bibliotecas y herramientas de JavaScript y TypeScript, brindando a los desarrolladores un ecosistema robusto y un amplio soporte comunitario. Esta integración simplifica el proceso de desarrollo y reduce la curva de aprendizaje asociada con la adopción de nuevos entornos de desarrollo. Además, admite completamente Visual Studio Code (VS Code), un editor de código ampliamente utilizado, lo que permite a los desarrolladores aprovechar al máximo funciones como el autocompletado de código, el resaltado de sintaxis y la depuración para mejorar la experiencia de desarrollo.

Básicamente, o1js es un marco ZK multifuncional que ofrece herramientas clave necesarias para crear pruebas ZK. Admite una amplia gama de programas ZK, que cubren una variedad de operaciones probables incorporadas como aritmética básica, hashing, firma, operaciones booleanas, comparaciones y más. Con el marco o1js, puedes construir zkApps en el Protocolo Mina, estos contratos inteligentes se ejecutan en el lado del cliente con entradas privadas.

Cabe destacar que a principios de septiembre de 2023, el equipo de 0(1) Labs anunció la transición de SnarkyJS a o1js, enfatizando su compromiso con la mejora del rendimiento. Es especialmente notable su logro en la reducción del tiempo de carga de la biblioteca en 3-4 veces, lo que se refiere al tiempo necesario para importar o1js, un proceso que podría bloquear el hilo principal. Para las aplicaciones web, el tiempo de carga es crucial para la sincronización de la ejecución de JavaScript y la renderización general de la página. Además, el equipo también actualizó el Mina zkApp CLI, mejorando la experiencia de construcción de la interfaz de usuario, y anunció mejoras adicionales en la API del Nodo de Archivo para mejorar su fiabilidad y claridad.

Leo por Aleo

La blockchain de Aleo se destaca en el campo de los contratos inteligentes con un fuerte énfasis en la protección de la privacidad. En su núcleo está el lenguaje de programación Leo, un lenguaje de tipado estático inspirado en Rust. Diseñado específicamente para desarrollar aplicaciones privadas, Leo apoya a los creadores que tienen como objetivo construir ecosistemas descentralizados seguros y confidenciales. Lo que realmente distingue a Leo es su papel pionero en la introducción de un kit de herramientas completo para aplicaciones universales de conocimiento cero. Este kit incluye un marco de pruebas, un registro de paquetes, un analizador de importaciones, un compilador remoto y un generador de teoremas.

El concepto de Leo proviene de un equipo de desarrollo liderado por Howard Wu, que concibe un sistema que capacita a los desarrolladores para construir aplicaciones descentralizadas con prioridad en la privacidad y la seguridad. Inspirándose en los principios de Rust, el diseño de Leo también incorpora elementos similares a JavaScript, facilitando una sensación de familiaridad y facilidad durante el proceso de desarrollo. Además, Leo tiene como objetivo acelerar y optimizar el desarrollo ofreciendo una plataforma de pruebas integrada, un registro de paquetes y un convertidor de importación. Esta integración permite a los desarrolladores centrarse en la lógica principal de sus aplicaciones sin quedar atrapados por problemas infraestructurales.

Una característica notable de Leo es su compilador, que transforma programas al formato de prueba R1CS de bajo nivel. La singularidad del compilador de Leo radica en su riguroso proceso de verificación formal. Esta verificación es crítica ya que pueden surgir vulnerabilidades en múltiples etapas, desde la programación inicial hasta la auditoría y compilación. Al realizar estrictas comprobaciones matemáticas para asegurar que el compilador se alinee con la intención del programador, Leo tiene como objetivo minimizar el riesgo de errores no detectados o posibles vulnerabilidades, especialmente en contextos L2, ZK-rollups, o programas privados en la plataforma Leo.

Circom de iden3

Circom, un lenguaje específico de dominio (DSL) meticulosamente elaborado para el desarrollo de circuitos ZK, es una creación colaborativa de Jordi Baylina y el equipo iden3. El compilador de Circom, escrito en Rust, funciona principalmente para compilar circuitos desarrollados utilizando el lenguaje Circom. Es importante destacar que Circom ha surgido como la opción preferida para aplicaciones sobresalientes de ZK en el mundo real, como Dark Forest y Tornado Cash. Su popularidad se atribuye a su impresionante rendimiento, que incluye tiempos rápidos de prueba en el navegador a través de pruebas WASM optimizadas, pruebas eficientes en el lado del servidor a través de rapidsnark y una verificación efectiva en la cadena.

Sin embargo, es importante reconocer que la funcionalidad de Circom se centra principalmente en el desarrollo de circuitos ZK, lo que puede hacerlo menos adecuado para tareas computacionales más amplias. Los desarrolladores que buscan capacidades más versátiles para satisfacer una gama más amplia de necesidades de desarrollo podrían encontrar que las habilidades de Circom son algo limitadas. En tales casos, los desarrolladores podrían necesitar integrar otros lenguajes de programación o marcos para cumplir con requisitos de desarrollo más completos.


Fuente de la imagen: Circom

La compatibilidad de Circom se centra principalmente en sistemas de Prueba de Conocimiento Cero (ZKP) ampliamente utilizados como snarkjs y libsnark. Esta compatibilidad garantiza una integración perfecta con estos sistemas comúnmente utilizados, pero también significa que los circuitos de Circom heredan características y limitaciones específicas asociadas con estas dependencias. Los desarrolladores que prefieran o necesiten sistemas ZKP alternativos podrían enfrentar desafíos de compatibilidad o necesitar invertir un esfuerzo adicional para adaptar e integrar los circuitos generados por Circom en sus sistemas preferidos.

Acechar por Lurk Lab

Lurk es un dialecto de Lisp de ámbito estático influenciado por Scheme y Common Lisp, con una característica única: permite la prueba directa de la corrección de la ejecución del programa usando zk-SNARKs, lo que posibilita una verificación compacta y eficiente. Los usos principales de Lurk incluyen:

Cómputo Verificable: Lurk permite la prueba de corrección de sus expresiones bajo condiciones de conocimiento cero, mejorando la confianza en los resultados de la computación.

Zero Knowledge: Los usuarios pueden demostrar conocimiento sin revelar información específica más allá de las entradas públicas, protegiendo así la privacidad.

Datos direccionables por contenido: Cada programa de Lurk está equipado con un identificador de contenido único (CID), lo que lo hace compatible con IPFS e IPLD.

Turing Completeness: Gate soporta la creación y la prueba de afirmaciones computacionales arbitrarias.

Funciones de orden superior: Las funciones de acecho pueden aceptar y devolver otras funciones, facilitando una programación funcional expresiva.

Cálculos con datos privados: Lurk permite manejar datos privados asegurando una salida comprobablemente correcta sin filtraciones de privacidad.

En la construcción de circuitos de propósito general, Lurk utiliza ampliamente el asignador de memoria "cons" de Lisp, que combina expresiones y genera referencias a través de hashing. La clave está en demostrar que dos expresiones se refieren a la misma referencia. Esta verificación permite a Lurk realizar cálculos dentro de los circuitos snark.

La funcionalidad de Lurk es rica, incluyendo soporte para recursividad infinita, bucles, flujo de control condicional y múltiples sistemas de prueba backend como Groth16, SnarkPack+ y Nova. Esta versatilidad abre puertas a diversas aplicaciones, incluyendo cálculos verificables, manejo de datos privados y ejecución de programas completos de Turing dentro de circuitos snark.

Conclusión

A medida que la diversidad de aplicaciones ZK crece, las perspectivas para los DSL en el dominio ZK son amplias. La clave del éxito de un DSL radica en establecer una comunidad próspera y una biblioteca rica para enriquecer las experiencias de los desarrolladores. Aquellos DSL que priorizan la compatibilidad con bibliotecas existentes pueden aprovechar completamente el conocimiento y los recursos de una comunidad de desarrolladores más amplia. Este enfoque ayuda a una integración más fluida, acelera el desarrollo y ofrece una mayor flexibilidad en la implementación de aplicaciones ZK. Tales esfuerzos colaborativos son cruciales para fomentar un ecosistema más sólido en torno a los DSL, ofreciendo beneficios tangibles a los desarrolladores y potenciando aún más la adopción y eficacia de la tecnología ZK.

Descargo de responsabilidad:

  1. Este artículo es una reimpresión de [panewslab]. Todos los derechos de autor pertenecen al autor original [ScalingX]. Si hay objeciones a esta reimpresión, por favor contacta al equipo de Gate Learn y ellos lo resolverán rápidamente.
  2. Responsabilidad de descargo de responsabilidad: Las opiniones y puntos de vista expresados en este artículo son únicamente los del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.
Розпочати зараз
Зареєструйтеся та отримайте ваучер на
$100
!