Explorando Linguagens de Programação ZK

Principiante12/24/2023, 3:04:47 PM
Este artigo introduz o âmbito de aplicação de diferentes linguagens de programação ZK, juntamente com as suas vantagens e desvantagens respetivas.

As Provas de Conhecimento Zero (ZKP) são uma ferramenta criptográfica poderosa que pode validar a precisão das computações enquanto protege a privacidade dos dados de entrada. As Linguagens Específicas de Domínio (DSLs) desempenham um papel crucial como parte desta infraestrutura chave, simplificando o desenvolvimento e o processo de verificação dos circuitos ZKP. Elas atuam como uma ponte importante entre conceitos abstratos e a representação precisa do circuito requerida pelos sistemas de prova.

Um dos principais desafios enfrentados pelos sistemas de prova é traduzir conceitos abstratos de alto nível em circuitos práticos. No entanto, o surgimento de DSLs abordou esse problema ao facilitar a estruturação desses conceitos abstratos de uma maneira mais concreta e implementável, atendendo assim a esse desafio.

Na última década, testemunhámos um aumento significativo na quantidade e diversidade de DSLs. Esta vitalidade no campo é evidente no desenvolvimento de várias linguagens de circuito, incluindo Noir, Leo e Zinc. Quer necessite de uma opção versátil como Circom ou de uma solução personalizada para uma plataforma específica como Cairo, pode escolher entre inúmeras linguagens e estruturas para escrever circuitos ZKP.

Neste artigo, vamos explorar as principais linguagens de programação ZK utilizadas ativamente pelos desenvolvedores e analisar as melhores funcionalidades de cada linguagem.

Cairo by StarkWare

Cairo é a linguagem principal para programas de computação geral que suportam provas STARK. Tem desempenhado um papel fundamental no sucesso do StarkNet e StarkEx, impulsionando a escalabilidade de aplicações na mainnet Ethereum. Notavelmente, Cairo tem sido fundamental para suportar uma variedade de aplicações, incluindo dYdX, Sorare e Immutable X. O nome "Cairo" é derivado da abreviatura de "Representação Intermediária Algébrica de CPU". No âmbito das provas de conhecimento zero, funciona de forma semelhante a uma linguagem de montagem, permitindo que os desenvolvedores familiarizados com linguagens de programação de baixo nível como C, C++ ou Solidity comecem mais facilmente.

Inspirado pelo Rust, o Cairo capacita os desenvolvedores a criar contratos inteligentes Starknet com foco em segurança e desenvolvimento amigável ao utilizador. O Cairo possui uma sintaxe poderosa que simplifica a criação de circuitos ZK, permitindo aos utilizadores realizar várias tarefas dentro dos programas Cairo. Além disso, uma das vantagens significativas do Cairo é a sua escalabilidade, permitindo a integração flexível de novas funcionalidades e características.

Em sistemas ZK, a eficiência e escalabilidade são fatores cruciais, e o Cairo atende a esses requisitos ao enfatizar ambos. A linguagem integra estratégias de otimização, incluindo a redução de restrições e a eliminação de loops, para aliviar a carga computacional tipicamente associada aos circuitos ZK. A otimização no design do circuito resulta em uma geração e verificação de prova mais rápidas, tornando-o uma escolha ideal para aplicações que requerem alto rendimento e latência mínima.

A expansão e desenvolvimento do Cairo têm sido notáveis, testemunhando um aumento extraordinário no número de desenvolvedores em tempo integral nos últimos dois anos. Este aumento destaca a adaptabilidade do Cairo, pois o seu uso não se limita à blockchain, mas é significativo em qualquer contexto que exija verificação computacional. Portanto, podemos antecipar um crescimento significativo adicional de desenvolvedores que adotam o Cairo.

Em 28 de setembro de 2023, o Starknet lançou uma grande atualização para sua linguagem de programação com o Cairo v2.3.0. Esta versão marca um avanço significativo na modularização dos contratos, introduzindo novos recursos, opções de armazenamento e gestão de eventos, melhorando o potencial dos contratos inteligentes. A integração desses componentes oferece uma forma flexível de expandir as funcionalidades do contrato, permitindo que módulos de terceiros aprimorem a funcionalidade dos contratos.

Zinco pela ZkSync

Zinc é uma linguagem de programação especificamente projetada para criar contratos inteligentes e circuitos SNARK na plataforma zkSync. Adota a sintaxe Rust, integra elementos do Solidity e oferece funcionalidades únicas.

A singularidade do Zinc reside na sua facilidade de uso. Pode escrever código seguro sem necessidade de se aprofundar em todos os detalhes complexos do Sistema de Restrição de Primeira Ordem (R1CS). O Zinc enfatiza a imutabilidade, dotando-o de características funcionais inerentes. Isto significa que prioriza dados imutáveis e avaliação de funções, reduzindo assim efeitos colaterais e facilitando a escrita de um código de contrato inteligente mais limpo e com menos erros.

Além disso, o Zinc inclui operações matemáticas seguras para evitar possíveis transbordamentos, garantindo a segurança de todas as operações. Apesar de algumas limitações, como a ausência de loops infinitos e recursão, o Zinc simplifica o processo de depuração através do rastreamento de log no console. Esses logs tornam mais fácil rastrear e resolver problemas transacionais em redes de teste ou na rede principal, melhorando assim a experiência de depuração.

Noir By Aztec

Noir, uma DSL de código aberto desenvolvida pela Aztec e baseada em Rust, tem como objetivo simplificar a criação de circuitos ZK e programas ZK sem exigir um conhecimento criptográfico aprofundado. É considerada uma das linguagens mais acessíveis para escrever aplicações ZK compatíveis com qualquer sistema de prova. O Noir foca na segurança, simplicidade e desempenho, oferecendo uma sintaxe de alto nível semelhante ao Rust. Ele abstrai a segurança criptográfica, simplificando o uso de primitivas criptográficas mantendo um alto desempenho.

Noir tem vantagens significativas na expansão da gama de aplicações que podem alavancar as capacidades de proteção de privacidade oferecidas por ZKP, melhorando assim a privacidade e eficiência de verificação. Compila-se num representação intermédia chamada Representação de Circuito Abstrato Intermediário (Acer), que pode então ser compilada para R1CS. A separação do sistema de prova de backend da linguagem em si permite ao Noir suportar vários sistemas de prova, incluindo Aztec Brettenberg, Turbo Plonk, e potenciais integrações futuras como Groth16 e Halo2.

A linguagem inclui uma biblioteca padrão com funcionalidades eficientes como SHA-256 (uma função de hash criptográfica que produz uma saída de tamanho fixo) e verificações Pedersen-Merkle (uma técnica de verificação criptográfica que utiliza compromissos de Pedersen e árvores de Merkle para garantir a integridade e consistência dos dados). O design do Noir, semelhante ao Rust, abrange recursos familiares para os desenvolvedores de aplicativos, como funções, submódulos, tipos definidos pelo usuário (structs), declarações condicionais, loops e constantes globais. Além disso, estão em andamento esforços para desenvolver genéricos e funções de primeira classe para aprimorar ainda mais a expressividade do Noir.

É importante notar que o Noir ainda está em evolução, com potenciais limitações e bugs. No entanto, a equipe de desenvolvimento está comprometida com a sua melhoria contínua e otimização.

o1js pela 0(1) Labs

o1js, anteriormente conhecido como SnarkyJS, é uma biblioteca TypeScript desenvolvida pela 0(1) Labs para criar contratos inteligentes usando a linguagem de programação SNARK. Ele aproveita totalmente as tecnologias estabelecidas, como Node.js e a compatibilidade com o navegador, para garantir fácil acesso e conveniência para os desenvolvedores.

o1js integra-se perfeitamente com bibliotecas e ferramentas JavaScript e TypeScript, proporcionando aos desenvolvedores um ecossistema robusto e um amplo suporte da comunidade. Esta integração simplifica o processo de desenvolvimento e reduz a curva de aprendizagem associada à adoção de novos ambientes de desenvolvimento. Além disso, suporta plenamente o Visual Studio Code (VS Code), um editor de código amplamente utilizado, permitindo aos desenvolvedores tirar total proveito de funcionalidades como conclusão de código, realce de sintaxe e depuração para melhorar a experiência de desenvolvimento.

Essencialmente, o1js é um framework ZK multifuncional que oferece ferramentas chave necessárias para criar provas ZK. Suporta uma ampla gama de programas ZK, abrangendo uma variedade de operações prováveis incorporadas, como aritmética básica, hashing, assinatura, operações booleanas, comparações e muito mais. Com o framework o1js, você pode construir zkApps no Protocolo Mina, esses contratos inteligentes são executados no lado do cliente com entradas privadas.

É de salientar que, no início de setembro de 2023, a equipa da 0(1) Labs anunciou a transição de SnarkyJS para o1js, enfatizando o compromisso de melhorar o desempenho. De salientar é especialmente a sua conquista na redução do tempo de carregamento da biblioteca em 3-4 vezes, o que se refere ao tempo necessário para importar o o1js, um processo que poderia bloquear a linha principal. Para aplicações web, o tempo de carregamento é crucial para o timing da execução do JavaScript e a renderização global da página. Além disso, a equipa também atualizou o Mina zkApp CLI, melhorando a experiência de construção da interface do utilizador, e anunciou mais melhorias para o Archive Node API para melhorar a sua fiabilidade e clareza.

Leo by Aleo

A blockchain Aleo destaca-se no campo dos contratos inteligentes com um forte ênfase na proteção da privacidade. No seu cerne está a linguagem de programação Leo, uma linguagem tipada estaticamente inspirada em Rust. Projetada especificamente para o desenvolvimento de aplicações privadas, o Leo apoia os criadores que visam construir ecossistemas descentralizados seguros e confidenciais. O que realmente distingue o Leo é o seu papel pioneiro na introdução de um conjunto abrangente de ferramentas para aplicações universais de conhecimento zero. Este conjunto de ferramentas inclui um framework de testes, registo de pacotes, analisador de importação, compilador remoto e gerador de teoremas.

O conceito de Leo tem origem numa equipa de desenvolvimento liderada por Howard Wu, vislumbrando um sistema que capacita os programadores a construir aplicações descentralizadas com prioridade na privacidade e segurança. Inspirando-se nos princípios do Rust, o design do Leo também incorpora elementos semelhantes ao JavaScript, facilitando uma sensação de familiaridade e facilidade durante o processo de desenvolvimento. Além disso, o Leo tem como objetivo acelerar e otimizar o desenvolvimento, oferecendo uma plataforma integrada de testes, registo de pacotes e conversor de importação. Esta integração permite que os programadores se concentrem na lógica principal das suas aplicações sem serem sobrecarregados por questões infraestruturais.

Uma característica notável do Leo é o seu compilador, que transforma programas no formato de prova R1CS de baixo nível. A singularidade do compilador do Leo reside no seu rigoroso processo de verificação formal. Esta verificação é crítica, uma vez que vulnerabilidades podem surgir em várias fases, desde a programação inicial à auditoria e compilação. Ao realizar verificações matemáticas rigorosas para garantir que o compilador esteja alinhado com a intenção do programador, o Leo tem como objetivo minimizar o risco de erros não detetados ou vulnerabilidades potenciais, particularmente em contextos L2, ZK-rollups ou programas privados na plataforma Leo.

Circom por iden3

Circom, uma Linguagem Específica de Domínio (DSL) meticulosamente elaborada para o desenvolvimento de circuitos ZK, é uma criação colaborativa de Jordi Baylina e da equipe iden3. O compilador Circom, escrito em Rust, funciona principalmente para compilar circuitos desenvolvidos usando a linguagem Circom. Notavelmente, Circom emergiu como a escolha preferida para aplicações ZK excepcionais no mundo real, como Dark Forest e Tornado Cash. Sua popularidade é atribuída ao seu desempenho impressionante, que inclui tempos rápidos de prova no navegador por meio de provas WASM otimizadas, provas eficientes no servidor via rapidsnark e verificação eficaz on-chain.

No entanto, é importante reconhecer que a funcionalidade do Circom está focada principalmente no desenvolvimento de circuitos ZK, o que pode torná-lo menos adequado para tarefas computacionais mais amplas. Os programadores que procuram capacidades mais versáteis para satisfazer uma gama mais ampla de necessidades de desenvolvimento podem achar as capacidades do Circom algo limitadas. Nesses casos, os desenvolvedores podem precisar integrar outras linguagens de programação ou estruturas para atender a requisitos de desenvolvimento mais abrangentes.


Fonte da imagem: Circom

A compatibilidade do Circom foca principalmente em sistemas de Prova de Conhecimento Zero (ZKP) amplamente utilizados, como snarkjs e libsnark. Esta compatibilidade garante integração perfeita com esses sistemas comumente usados, mas também significa que os circuitos Circom herdam características específicas e limitações associadas a essas dependências. Desenvolvedores que preferem ou precisam de sistemas ZKP alternativos podem enfrentar desafios de compatibilidade ou precisar investir esforço adicional para adaptar e integrar circuitos gerados pelo Circom em seus sistemas preferidos.

Lurk by Lurk Lab

Lurk é um dialeto Lisp de escopo estático influenciado por Scheme e Common Lisp, com um recurso único: permite a prova direta da correção da execução do programa usando zk-SNARKs, possibilitando verificação compacta e eficiente. Os principais usos de Lurk incluem:

Computação verificável: O Lurk permite a prova da exatidão de suas expressões sob condições de conhecimento zero, aumentando a confiança nos resultados da computação.

Conhecimento Zero: Os usuários podem provar conhecimento sem revelar informações específicas além das entradas públicas, protegendo assim a privacidade.

Dados Endereçáveis por Conteúdo: Cada programa Lurk está equipado com um identificador de conteúdo único (CID), tornando-o compatível com IPFS e IPLD.

Turing Completeness: Lurk suporta a criação e prova de declarações computacionais arbitrárias.

Funções de Ordem Superior: As funções lurk podem aceitar e devolver outras funções, facilitando a programação funcional expressiva.

Cálculos com Dados Privados: Lurk permite lidar com dados privados garantindo saída comprovadamente correta sem vazamentos de privacidade.

Ao construir circuitos de uso geral, Lurk utiliza extensivamente o alocador de memória “cons” do Lisp, que combina expressões e gera referências através de hash. A chave está em provar que duas expressões realmente hash para a mesma referência. Esta verificação permite que Lurk realize cálculos dentro de circuitos snark.

A funcionalidade do Lurk é rica, incluindo suporte para recursão infinita, loops, fluxo de controle condicional e múltiplos sistemas de prova de backend como Groth16, SnarkPack+ e Nova. Esta versatilidade abre portas para várias aplicações, incluindo cálculos verificáveis, manipulação de dados privados e execução de programas completos de Turing dentro de circuitos snark.

Conclusão

À medida que a diversidade de aplicações ZK cresce, as perspectivas para DSLs no domínio ZK são amplas. A chave para o sucesso de uma DSL está em estabelecer uma comunidade próspera e uma biblioteca rica para enriquecer as experiências dos desenvolvedores. Aquelas DSLs que priorizam a compatibilidade com bibliotecas existentes podem aproveitar plenamente o conhecimento e os recursos de uma comunidade de desenvolvedores mais ampla. Esta abordagem ajuda na integração mais suave, acelera o desenvolvimento e oferece maior flexibilidade na implementação de aplicações ZK. Esforços colaborativos como estes são cruciais para nutrir um ecossistema mais robusto em torno das DSLs, oferecendo benefícios tangíveis aos desenvolvedores e impulsionando ainda mais a adoção e eficácia da tecnologia ZK.

Aviso Legal:

  1. Este artigo é reimpresso de [Gatepanewslab]. Todos os direitos de autor pertencem ao autor original [ScalingX]. Se houver objeções a esta reimpressão, entre em contato com a equipe Gate Learn e eles lidarão com isso prontamente.
  2. Aviso de Responsabilidade: As opiniões expressas neste artigo são exclusivamente do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe do Gate Learn. A menos que mencionado, copiar, distribuir ou plagiar os artigos traduzidos é proibido.

Explorando Linguagens de Programação ZK

Principiante12/24/2023, 3:04:47 PM
Este artigo introduz o âmbito de aplicação de diferentes linguagens de programação ZK, juntamente com as suas vantagens e desvantagens respetivas.

As Provas de Conhecimento Zero (ZKP) são uma ferramenta criptográfica poderosa que pode validar a precisão das computações enquanto protege a privacidade dos dados de entrada. As Linguagens Específicas de Domínio (DSLs) desempenham um papel crucial como parte desta infraestrutura chave, simplificando o desenvolvimento e o processo de verificação dos circuitos ZKP. Elas atuam como uma ponte importante entre conceitos abstratos e a representação precisa do circuito requerida pelos sistemas de prova.

Um dos principais desafios enfrentados pelos sistemas de prova é traduzir conceitos abstratos de alto nível em circuitos práticos. No entanto, o surgimento de DSLs abordou esse problema ao facilitar a estruturação desses conceitos abstratos de uma maneira mais concreta e implementável, atendendo assim a esse desafio.

Na última década, testemunhámos um aumento significativo na quantidade e diversidade de DSLs. Esta vitalidade no campo é evidente no desenvolvimento de várias linguagens de circuito, incluindo Noir, Leo e Zinc. Quer necessite de uma opção versátil como Circom ou de uma solução personalizada para uma plataforma específica como Cairo, pode escolher entre inúmeras linguagens e estruturas para escrever circuitos ZKP.

Neste artigo, vamos explorar as principais linguagens de programação ZK utilizadas ativamente pelos desenvolvedores e analisar as melhores funcionalidades de cada linguagem.

Cairo by StarkWare

Cairo é a linguagem principal para programas de computação geral que suportam provas STARK. Tem desempenhado um papel fundamental no sucesso do StarkNet e StarkEx, impulsionando a escalabilidade de aplicações na mainnet Ethereum. Notavelmente, Cairo tem sido fundamental para suportar uma variedade de aplicações, incluindo dYdX, Sorare e Immutable X. O nome "Cairo" é derivado da abreviatura de "Representação Intermediária Algébrica de CPU". No âmbito das provas de conhecimento zero, funciona de forma semelhante a uma linguagem de montagem, permitindo que os desenvolvedores familiarizados com linguagens de programação de baixo nível como C, C++ ou Solidity comecem mais facilmente.

Inspirado pelo Rust, o Cairo capacita os desenvolvedores a criar contratos inteligentes Starknet com foco em segurança e desenvolvimento amigável ao utilizador. O Cairo possui uma sintaxe poderosa que simplifica a criação de circuitos ZK, permitindo aos utilizadores realizar várias tarefas dentro dos programas Cairo. Além disso, uma das vantagens significativas do Cairo é a sua escalabilidade, permitindo a integração flexível de novas funcionalidades e características.

Em sistemas ZK, a eficiência e escalabilidade são fatores cruciais, e o Cairo atende a esses requisitos ao enfatizar ambos. A linguagem integra estratégias de otimização, incluindo a redução de restrições e a eliminação de loops, para aliviar a carga computacional tipicamente associada aos circuitos ZK. A otimização no design do circuito resulta em uma geração e verificação de prova mais rápidas, tornando-o uma escolha ideal para aplicações que requerem alto rendimento e latência mínima.

A expansão e desenvolvimento do Cairo têm sido notáveis, testemunhando um aumento extraordinário no número de desenvolvedores em tempo integral nos últimos dois anos. Este aumento destaca a adaptabilidade do Cairo, pois o seu uso não se limita à blockchain, mas é significativo em qualquer contexto que exija verificação computacional. Portanto, podemos antecipar um crescimento significativo adicional de desenvolvedores que adotam o Cairo.

Em 28 de setembro de 2023, o Starknet lançou uma grande atualização para sua linguagem de programação com o Cairo v2.3.0. Esta versão marca um avanço significativo na modularização dos contratos, introduzindo novos recursos, opções de armazenamento e gestão de eventos, melhorando o potencial dos contratos inteligentes. A integração desses componentes oferece uma forma flexível de expandir as funcionalidades do contrato, permitindo que módulos de terceiros aprimorem a funcionalidade dos contratos.

Zinco pela ZkSync

Zinc é uma linguagem de programação especificamente projetada para criar contratos inteligentes e circuitos SNARK na plataforma zkSync. Adota a sintaxe Rust, integra elementos do Solidity e oferece funcionalidades únicas.

A singularidade do Zinc reside na sua facilidade de uso. Pode escrever código seguro sem necessidade de se aprofundar em todos os detalhes complexos do Sistema de Restrição de Primeira Ordem (R1CS). O Zinc enfatiza a imutabilidade, dotando-o de características funcionais inerentes. Isto significa que prioriza dados imutáveis e avaliação de funções, reduzindo assim efeitos colaterais e facilitando a escrita de um código de contrato inteligente mais limpo e com menos erros.

Além disso, o Zinc inclui operações matemáticas seguras para evitar possíveis transbordamentos, garantindo a segurança de todas as operações. Apesar de algumas limitações, como a ausência de loops infinitos e recursão, o Zinc simplifica o processo de depuração através do rastreamento de log no console. Esses logs tornam mais fácil rastrear e resolver problemas transacionais em redes de teste ou na rede principal, melhorando assim a experiência de depuração.

Noir By Aztec

Noir, uma DSL de código aberto desenvolvida pela Aztec e baseada em Rust, tem como objetivo simplificar a criação de circuitos ZK e programas ZK sem exigir um conhecimento criptográfico aprofundado. É considerada uma das linguagens mais acessíveis para escrever aplicações ZK compatíveis com qualquer sistema de prova. O Noir foca na segurança, simplicidade e desempenho, oferecendo uma sintaxe de alto nível semelhante ao Rust. Ele abstrai a segurança criptográfica, simplificando o uso de primitivas criptográficas mantendo um alto desempenho.

Noir tem vantagens significativas na expansão da gama de aplicações que podem alavancar as capacidades de proteção de privacidade oferecidas por ZKP, melhorando assim a privacidade e eficiência de verificação. Compila-se num representação intermédia chamada Representação de Circuito Abstrato Intermediário (Acer), que pode então ser compilada para R1CS. A separação do sistema de prova de backend da linguagem em si permite ao Noir suportar vários sistemas de prova, incluindo Aztec Brettenberg, Turbo Plonk, e potenciais integrações futuras como Groth16 e Halo2.

A linguagem inclui uma biblioteca padrão com funcionalidades eficientes como SHA-256 (uma função de hash criptográfica que produz uma saída de tamanho fixo) e verificações Pedersen-Merkle (uma técnica de verificação criptográfica que utiliza compromissos de Pedersen e árvores de Merkle para garantir a integridade e consistência dos dados). O design do Noir, semelhante ao Rust, abrange recursos familiares para os desenvolvedores de aplicativos, como funções, submódulos, tipos definidos pelo usuário (structs), declarações condicionais, loops e constantes globais. Além disso, estão em andamento esforços para desenvolver genéricos e funções de primeira classe para aprimorar ainda mais a expressividade do Noir.

É importante notar que o Noir ainda está em evolução, com potenciais limitações e bugs. No entanto, a equipe de desenvolvimento está comprometida com a sua melhoria contínua e otimização.

o1js pela 0(1) Labs

o1js, anteriormente conhecido como SnarkyJS, é uma biblioteca TypeScript desenvolvida pela 0(1) Labs para criar contratos inteligentes usando a linguagem de programação SNARK. Ele aproveita totalmente as tecnologias estabelecidas, como Node.js e a compatibilidade com o navegador, para garantir fácil acesso e conveniência para os desenvolvedores.

o1js integra-se perfeitamente com bibliotecas e ferramentas JavaScript e TypeScript, proporcionando aos desenvolvedores um ecossistema robusto e um amplo suporte da comunidade. Esta integração simplifica o processo de desenvolvimento e reduz a curva de aprendizagem associada à adoção de novos ambientes de desenvolvimento. Além disso, suporta plenamente o Visual Studio Code (VS Code), um editor de código amplamente utilizado, permitindo aos desenvolvedores tirar total proveito de funcionalidades como conclusão de código, realce de sintaxe e depuração para melhorar a experiência de desenvolvimento.

Essencialmente, o1js é um framework ZK multifuncional que oferece ferramentas chave necessárias para criar provas ZK. Suporta uma ampla gama de programas ZK, abrangendo uma variedade de operações prováveis incorporadas, como aritmética básica, hashing, assinatura, operações booleanas, comparações e muito mais. Com o framework o1js, você pode construir zkApps no Protocolo Mina, esses contratos inteligentes são executados no lado do cliente com entradas privadas.

É de salientar que, no início de setembro de 2023, a equipa da 0(1) Labs anunciou a transição de SnarkyJS para o1js, enfatizando o compromisso de melhorar o desempenho. De salientar é especialmente a sua conquista na redução do tempo de carregamento da biblioteca em 3-4 vezes, o que se refere ao tempo necessário para importar o o1js, um processo que poderia bloquear a linha principal. Para aplicações web, o tempo de carregamento é crucial para o timing da execução do JavaScript e a renderização global da página. Além disso, a equipa também atualizou o Mina zkApp CLI, melhorando a experiência de construção da interface do utilizador, e anunciou mais melhorias para o Archive Node API para melhorar a sua fiabilidade e clareza.

Leo by Aleo

A blockchain Aleo destaca-se no campo dos contratos inteligentes com um forte ênfase na proteção da privacidade. No seu cerne está a linguagem de programação Leo, uma linguagem tipada estaticamente inspirada em Rust. Projetada especificamente para o desenvolvimento de aplicações privadas, o Leo apoia os criadores que visam construir ecossistemas descentralizados seguros e confidenciais. O que realmente distingue o Leo é o seu papel pioneiro na introdução de um conjunto abrangente de ferramentas para aplicações universais de conhecimento zero. Este conjunto de ferramentas inclui um framework de testes, registo de pacotes, analisador de importação, compilador remoto e gerador de teoremas.

O conceito de Leo tem origem numa equipa de desenvolvimento liderada por Howard Wu, vislumbrando um sistema que capacita os programadores a construir aplicações descentralizadas com prioridade na privacidade e segurança. Inspirando-se nos princípios do Rust, o design do Leo também incorpora elementos semelhantes ao JavaScript, facilitando uma sensação de familiaridade e facilidade durante o processo de desenvolvimento. Além disso, o Leo tem como objetivo acelerar e otimizar o desenvolvimento, oferecendo uma plataforma integrada de testes, registo de pacotes e conversor de importação. Esta integração permite que os programadores se concentrem na lógica principal das suas aplicações sem serem sobrecarregados por questões infraestruturais.

Uma característica notável do Leo é o seu compilador, que transforma programas no formato de prova R1CS de baixo nível. A singularidade do compilador do Leo reside no seu rigoroso processo de verificação formal. Esta verificação é crítica, uma vez que vulnerabilidades podem surgir em várias fases, desde a programação inicial à auditoria e compilação. Ao realizar verificações matemáticas rigorosas para garantir que o compilador esteja alinhado com a intenção do programador, o Leo tem como objetivo minimizar o risco de erros não detetados ou vulnerabilidades potenciais, particularmente em contextos L2, ZK-rollups ou programas privados na plataforma Leo.

Circom por iden3

Circom, uma Linguagem Específica de Domínio (DSL) meticulosamente elaborada para o desenvolvimento de circuitos ZK, é uma criação colaborativa de Jordi Baylina e da equipe iden3. O compilador Circom, escrito em Rust, funciona principalmente para compilar circuitos desenvolvidos usando a linguagem Circom. Notavelmente, Circom emergiu como a escolha preferida para aplicações ZK excepcionais no mundo real, como Dark Forest e Tornado Cash. Sua popularidade é atribuída ao seu desempenho impressionante, que inclui tempos rápidos de prova no navegador por meio de provas WASM otimizadas, provas eficientes no servidor via rapidsnark e verificação eficaz on-chain.

No entanto, é importante reconhecer que a funcionalidade do Circom está focada principalmente no desenvolvimento de circuitos ZK, o que pode torná-lo menos adequado para tarefas computacionais mais amplas. Os programadores que procuram capacidades mais versáteis para satisfazer uma gama mais ampla de necessidades de desenvolvimento podem achar as capacidades do Circom algo limitadas. Nesses casos, os desenvolvedores podem precisar integrar outras linguagens de programação ou estruturas para atender a requisitos de desenvolvimento mais abrangentes.


Fonte da imagem: Circom

A compatibilidade do Circom foca principalmente em sistemas de Prova de Conhecimento Zero (ZKP) amplamente utilizados, como snarkjs e libsnark. Esta compatibilidade garante integração perfeita com esses sistemas comumente usados, mas também significa que os circuitos Circom herdam características específicas e limitações associadas a essas dependências. Desenvolvedores que preferem ou precisam de sistemas ZKP alternativos podem enfrentar desafios de compatibilidade ou precisar investir esforço adicional para adaptar e integrar circuitos gerados pelo Circom em seus sistemas preferidos.

Lurk by Lurk Lab

Lurk é um dialeto Lisp de escopo estático influenciado por Scheme e Common Lisp, com um recurso único: permite a prova direta da correção da execução do programa usando zk-SNARKs, possibilitando verificação compacta e eficiente. Os principais usos de Lurk incluem:

Computação verificável: O Lurk permite a prova da exatidão de suas expressões sob condições de conhecimento zero, aumentando a confiança nos resultados da computação.

Conhecimento Zero: Os usuários podem provar conhecimento sem revelar informações específicas além das entradas públicas, protegendo assim a privacidade.

Dados Endereçáveis por Conteúdo: Cada programa Lurk está equipado com um identificador de conteúdo único (CID), tornando-o compatível com IPFS e IPLD.

Turing Completeness: Lurk suporta a criação e prova de declarações computacionais arbitrárias.

Funções de Ordem Superior: As funções lurk podem aceitar e devolver outras funções, facilitando a programação funcional expressiva.

Cálculos com Dados Privados: Lurk permite lidar com dados privados garantindo saída comprovadamente correta sem vazamentos de privacidade.

Ao construir circuitos de uso geral, Lurk utiliza extensivamente o alocador de memória “cons” do Lisp, que combina expressões e gera referências através de hash. A chave está em provar que duas expressões realmente hash para a mesma referência. Esta verificação permite que Lurk realize cálculos dentro de circuitos snark.

A funcionalidade do Lurk é rica, incluindo suporte para recursão infinita, loops, fluxo de controle condicional e múltiplos sistemas de prova de backend como Groth16, SnarkPack+ e Nova. Esta versatilidade abre portas para várias aplicações, incluindo cálculos verificáveis, manipulação de dados privados e execução de programas completos de Turing dentro de circuitos snark.

Conclusão

À medida que a diversidade de aplicações ZK cresce, as perspectivas para DSLs no domínio ZK são amplas. A chave para o sucesso de uma DSL está em estabelecer uma comunidade próspera e uma biblioteca rica para enriquecer as experiências dos desenvolvedores. Aquelas DSLs que priorizam a compatibilidade com bibliotecas existentes podem aproveitar plenamente o conhecimento e os recursos de uma comunidade de desenvolvedores mais ampla. Esta abordagem ajuda na integração mais suave, acelera o desenvolvimento e oferece maior flexibilidade na implementação de aplicações ZK. Esforços colaborativos como estes são cruciais para nutrir um ecossistema mais robusto em torno das DSLs, oferecendo benefícios tangíveis aos desenvolvedores e impulsionando ainda mais a adoção e eficácia da tecnologia ZK.

Aviso Legal:

  1. Este artigo é reimpresso de [Gatepanewslab]. Todos os direitos de autor pertencem ao autor original [ScalingX]. Se houver objeções a esta reimpressão, entre em contato com a equipe Gate Learn e eles lidarão com isso prontamente.
  2. Aviso de Responsabilidade: As opiniões expressas neste artigo são exclusivamente do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe do Gate Learn. A menos que mencionado, copiar, distribuir ou plagiar os artigos traduzidos é proibido.
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!