Aqui está uma introdução simples e fácil de entender às provas de conhecimento zero:
Imagine que estás na escola primária. O professor é o verificador e tu, como aluno, és o provador. Como podes provar que entendes a fórmula para resolver equações quadráticas? É aí que entra um exame de matemática.
O professor irá dar-lhe aleatoriamente 10 questões relacionadas, e se você compreender verdadeiramente o conceito, será capaz de resolver todas elas. Durante este processo, não precisa recitar nem escrever o conteúdo específico da fórmula, mas o professor pode facilmente verificar o seu nível de conhecimento.
Na verdade, este é o método usado por Tartaglia e Cardano (sim, esse é o nome) para competir sobre quem descobriu a solução para a equação cúbica. Ambos não queriam revelar o conteúdo de suas fórmulas um ao outro, mas através da resolução de problemas, podiam facilmente verificar e determinar se dominavam esse conhecimento sem divulgar os detalhes.
Qual é o objetivo das provas de conhecimento zero? O objetivo é poupar energia computacional e reduzir o espaço na cadeia de blocos em todo o processo. Além disso, pode proporcionar proteção da privacidade, alinhando-se com as características de ausência de confiança na blockchain e os princípios da criptografia.
No campo da blockchain, o termo “zk” utilizado ou mencionado geralmente não se refere a provas de conhecimento zero reais, mas frequentemente se refere a provas de validade. Devido à confusão terminológica, certas partes deste texto continuarão a utilizar esses termos “mal utilizados”.
No cenário atual da blockchain, zk pode ser considerado como a solução de vanguarda e ótima para escalabilidade da blockchain (não o verdadeiro zk, mas sim a Prova de Validade), e tecnologia de privacidade (o verdadeiro zk) que é utilizada em projetos como Tornado.cash, ZCash, zkSync, zk.money, Filecoin e Mina.
As soluções técnicas atuais estão principalmente divididas em duas categorias: SNARK e STARK. Em STARK, o “S” significa escalável, o que significa que as declarações comprovadas têm estruturas repetitivas, enquanto o SNARK suporta circuitos arbitrários que são pré-processados para obter provas concisas. Entre eles, a implementação prática de SNARKs tomou a posição de liderança, enquanto os STARKs são principalmente adotados em grande escala nos produtos lançados pela StarkWare. A seguir, é feita uma comparação entre eles.
Do ponto de vista do Meme, STARK é melhor do que SNARK (😊, Star Wars, Star Trek).
Se SNARK é o futuro do Ethereum 2.0, então STARK será o futuro do Ethereum 3.0. Sério, as vantagens do STARK são:
No entanto, as provas geradas pelo STARK são significativamente grandes em tamanho. Devido a certas limitações, como as impostas pelo WASM, podem ser necessárias operações adicionais durante a construção (aqui, estamos a referir-nos ao SNARK). Recentemente, Mir forneceu uma implementação prática de um STARK baseado em AIR usando Starky, que faz parte do Plonky2 (a relação entre Plonky2 e Starky é bastante complexa...). Na minha opinião pessoal, embora o tamanho possa ser otimizado usando várias técnicas, é difícil comprimir ainda mais a complexidade temporal do algoritmo em si.
Estas tecnologias de prova de conhecimento zero podem ser combinadas de forma razoável para construir aplicações mais poderosas. Por exemplo, o Polygon Hermez usa SNARK para verificar a correção de STARK, reduzindo assim a taxa de gás ao publicar a prova.
No geral, SNARK e STARK são ambas excelentes tecnologias de prova de conhecimento zero, cada uma com suas próprias forças, e a sua combinação razoável tem ainda mais potencial.
As aplicações mencionadas anteriormente Tornado.cash e zk.money são semelhantes, pois apenas suportam operações de transferência usando provas de conhecimento zero. Elas não suportam computação de uso geral. Em comparação, essas aplicações têm apenas a funcionalidade do Bitcoin, muito menos do que o Ethereum completo, quanto mais para construir um ecossistema (Os contratos inteligentes no Bitcoin ainda não estabeleceram um ecossistema próspero).
zkVM é uma máquina virtual que garante propriedades seguras, verificáveis e confiáveis usando provas de conhecimento zero. Em termos simples, ela recebe um estado antigo e um programa como entrada e retorna um novo estado. Ele capacita todas as aplicações com o superpoder das provas de conhecimento zero.
A apresentação da Miden na ETH Amsterdam resumiu eficazmente o que é o zkVM com um único slide.
Vantagens do zkVM:
Desvantagens do zkVM:
Atualmente, existem três tipos principais de zkVM, com seus conjuntos de instruções respectivos entre parênteses: Mainstream (WASM, RISC-V), EVM (bytecode EVM), ZK-Optimized (um novo conjunto de instruções otimizado para provas de conhecimento zero, como Cairo e zkSync). A seguir está um gráfico de comparação desses tipos com base na apresentação da Miden na ETH Amsterdam.
Muitas coisas feitas no ecossistema de desenvolvimento de prova de conhecimento zero são principalmente sobre capacitar os desenvolvedores a usar a biblioteca Circom (e snarkyjs, por exemplo) ou outras linguagens recém-criadas (como Leo ou Cairo, que têm suas limitações únicas) para o desenvolvimento de zk DApps gerais. No entanto, isso não é tão direto e fácil de aprender como usar o Solidity no Ethereum.
Para além disso, existem muitos projetos como zkSync, Scroll, ou vários sob o guarda-chuva da Polygon que estão a experimentar soluções zkEVM ou outras soluções zkVM.
A EVM é a máquina virtual do Ethereum, que também pode ser entendida como um conjunto de ambientes de execução para executar contratos inteligentes.
Ao longo dos anos, várias blockchains públicas têm tentado continuamente tornar-se compatíveis com a EVM, integrando-se assim no ecossistema de desenvolvimento da Ethereum. Este conceito levou à derivação de termos como compatibilidade com a EVM, equivalência com a EVM e outras definições.
Vamos interpretar mais a fundo o zkEVM. Por definição, o zkEVM é uma máquina virtual compatível com EVM e também amigável às provas de conhecimento zero, garantindo a completa correção de programas, operações e entrada/saída.
Para alcançar a computação universal, existem dois desafios principais no desenvolvimento de zkEVM:
Diferentes contratos requerem a geração de diferentes circuitos, e esses circuitos são bastante ‘complexos’.
Este aspeto depende principalmente de várias otimizações. Por exemplo, Aleo (embora não seja do tipo ZK direto... apenas um exemplo de otimização) utiliza clusters distribuídos para computações de prova concorrentes, ou várias otimizações de hardware para aceleração.
zkEVM requer não apenas uma reconstrução do EVM, mas também uma reconstrução de toda a transição de estado do Ethereum usando a tecnologia de prova de conhecimento zero.
O design original do EVM não antecipou o desenvolvimento do zkEVM, levando a dificuldades significativas. Isso resultou em duas abordagens distintas, como ilustrado no diagrama.
Ou, para distinguir de acordo com a arquitetura de uma Máquina Virtual (VM), como no diagrama abaixo (um enorme agradecimento à Scroll Tech pela imagem original resumida!). Opcode refere-se a Opcode EVM. A seção StarkWare usa Warp para converter contratos Solidity em contratos Cairo, ou pode escrever contratos diretamente em Cairo e ainda obter uma boa experiência de desenvolvimento e um conjunto completo de ferramentas.
No nível do desenvolvedor e do usuário, essas soluções são basicamente indistinguíveis, na minha opinião. No entanto, em termos de infraestrutura, quanto mais à direita a solução estiver, melhor será a compatibilidade com a EVM. Pode integrar-se facilmente com infraestruturas como Geth, mas o progresso de desenvolvimento é geralmente mais lento.
A existência do zkEVM, na minha opinião, é inovar e corrigir o ecossistema Ethereum, contribuindo para a prosperidade do Ethereum e seu ecossistema. Por outro lado, a existência do zkVM pode não necessariamente fortalecer o Ethereum, mas proporciona uma maior imaginação.
Embora o Cairo VM da StarkNet possa não ser o zkVM perfeito que eu tinha imaginado, ele pode fazer mais do que o EVM ou zkEVM. Essas funcionalidades vão além do nível das extensões do EIP. No Cairo VM, modelos de aprendizado de máquina podem ser executados e até mesmo uma plataforma de modelos de aprendizado de máquina está sendo construída na StarkNet.
Comparado com o zkEVM, construir um zkVM é mais fácil (sem se preocupar com a dívida técnica do EVM), mais flexível (sem se preocupar com as atualizações do EVM) e mais fácil de otimizar (o otimizador de circuitos e provas é muito mais simples e mais barato do que construir o zkEVM).
No entanto, o zkVM tem uma pequena, mas potencialmente fatal, desvantagem. Se o zkVM não conseguir fornecer compatibilidade com a EVM ao nível da linguagem Solidity, será difícil para o zkVM estabelecer um ecossistema de desenvolvimento Web3 abrangente e maduro, semelhante ao da EVM.
zkVM pode ser uma tendência maior que pode permitir a otimização vertical do EVM e a expansão horizontal do ecossistema EVM, libertando-se das limitações do EVM.
Se pudesse haver um zkVM universal que permitisse contratos inteligentes de todas as linguagens de programação, não apenas Solidity, não apenas Cairo, mas Rust, C++, Go, funcionar de forma segura com prova de conhecimento zero, não seria ótimo? (Stellar tentou, mas falhou).
Como @kelvinfichtermencionado: Por que zkEVM se zkMIPS? Como@KyleSamanimencionou: EVM é um bug, não uma funcionalidade. Por que zkEVM se zkVM?
Winterfall, Distaff, Miden VM e outros zkVMs ainda não alcançaram um alto nível de facilidade de uso para desenvolvedores. Nervos tem um VM RISC-V, mas não utiliza a tecnologia de prova de conhecimento zero.
A solução ideal na situação atual é construir um WASM ou RISC-V zkVM, ainda melhor se puder suportar linguagens como Rust, Go, C++, e até Solidity (zkSync parece ser capaz de fazer contribuições significativas). Se existir um zkVM universal desse tipo, seria um golpe significativo para o zkEVM.
O número de desenvolvedores Web3 representa aproximadamente 0,07% de todos os desenvolvedores. Isto implica que o número de desenvolvedores Solidity é ainda menor do que 0,07%, e ainda menos desenvolvedores usariam Cairo para escrever contratos ou Leo para escrever circuitos. Como resultado, o zkVM perfeito visa atender a quase 100% dos desenvolvedores, já que qualquer desenvolvedor pode obter um ambiente de execução de conhecimento zero perfeito usando quase qualquer linguagem de programação.
Se um dia a Web3 e a Crypto dominarem o mundo, acredito que definitivamente não será o ecossistema EVM ocupando 100% de todos os desenvolvedores, mas sim todos os desenvolvedores fazendo a transição gradualmente para desenvolvedores de Web3 e Crypto. Aqui é onde reside o brilhantismo do zkVM universal.
Native zkEVM é o futuro da blockchain.
Universal zkVM é o futuro do Web3.
Aqui está uma introdução simples e fácil de entender às provas de conhecimento zero:
Imagine que estás na escola primária. O professor é o verificador e tu, como aluno, és o provador. Como podes provar que entendes a fórmula para resolver equações quadráticas? É aí que entra um exame de matemática.
O professor irá dar-lhe aleatoriamente 10 questões relacionadas, e se você compreender verdadeiramente o conceito, será capaz de resolver todas elas. Durante este processo, não precisa recitar nem escrever o conteúdo específico da fórmula, mas o professor pode facilmente verificar o seu nível de conhecimento.
Na verdade, este é o método usado por Tartaglia e Cardano (sim, esse é o nome) para competir sobre quem descobriu a solução para a equação cúbica. Ambos não queriam revelar o conteúdo de suas fórmulas um ao outro, mas através da resolução de problemas, podiam facilmente verificar e determinar se dominavam esse conhecimento sem divulgar os detalhes.
Qual é o objetivo das provas de conhecimento zero? O objetivo é poupar energia computacional e reduzir o espaço na cadeia de blocos em todo o processo. Além disso, pode proporcionar proteção da privacidade, alinhando-se com as características de ausência de confiança na blockchain e os princípios da criptografia.
No campo da blockchain, o termo “zk” utilizado ou mencionado geralmente não se refere a provas de conhecimento zero reais, mas frequentemente se refere a provas de validade. Devido à confusão terminológica, certas partes deste texto continuarão a utilizar esses termos “mal utilizados”.
No cenário atual da blockchain, zk pode ser considerado como a solução de vanguarda e ótima para escalabilidade da blockchain (não o verdadeiro zk, mas sim a Prova de Validade), e tecnologia de privacidade (o verdadeiro zk) que é utilizada em projetos como Tornado.cash, ZCash, zkSync, zk.money, Filecoin e Mina.
As soluções técnicas atuais estão principalmente divididas em duas categorias: SNARK e STARK. Em STARK, o “S” significa escalável, o que significa que as declarações comprovadas têm estruturas repetitivas, enquanto o SNARK suporta circuitos arbitrários que são pré-processados para obter provas concisas. Entre eles, a implementação prática de SNARKs tomou a posição de liderança, enquanto os STARKs são principalmente adotados em grande escala nos produtos lançados pela StarkWare. A seguir, é feita uma comparação entre eles.
Do ponto de vista do Meme, STARK é melhor do que SNARK (😊, Star Wars, Star Trek).
Se SNARK é o futuro do Ethereum 2.0, então STARK será o futuro do Ethereum 3.0. Sério, as vantagens do STARK são:
No entanto, as provas geradas pelo STARK são significativamente grandes em tamanho. Devido a certas limitações, como as impostas pelo WASM, podem ser necessárias operações adicionais durante a construção (aqui, estamos a referir-nos ao SNARK). Recentemente, Mir forneceu uma implementação prática de um STARK baseado em AIR usando Starky, que faz parte do Plonky2 (a relação entre Plonky2 e Starky é bastante complexa...). Na minha opinião pessoal, embora o tamanho possa ser otimizado usando várias técnicas, é difícil comprimir ainda mais a complexidade temporal do algoritmo em si.
Estas tecnologias de prova de conhecimento zero podem ser combinadas de forma razoável para construir aplicações mais poderosas. Por exemplo, o Polygon Hermez usa SNARK para verificar a correção de STARK, reduzindo assim a taxa de gás ao publicar a prova.
No geral, SNARK e STARK são ambas excelentes tecnologias de prova de conhecimento zero, cada uma com suas próprias forças, e a sua combinação razoável tem ainda mais potencial.
As aplicações mencionadas anteriormente Tornado.cash e zk.money são semelhantes, pois apenas suportam operações de transferência usando provas de conhecimento zero. Elas não suportam computação de uso geral. Em comparação, essas aplicações têm apenas a funcionalidade do Bitcoin, muito menos do que o Ethereum completo, quanto mais para construir um ecossistema (Os contratos inteligentes no Bitcoin ainda não estabeleceram um ecossistema próspero).
zkVM é uma máquina virtual que garante propriedades seguras, verificáveis e confiáveis usando provas de conhecimento zero. Em termos simples, ela recebe um estado antigo e um programa como entrada e retorna um novo estado. Ele capacita todas as aplicações com o superpoder das provas de conhecimento zero.
A apresentação da Miden na ETH Amsterdam resumiu eficazmente o que é o zkVM com um único slide.
Vantagens do zkVM:
Desvantagens do zkVM:
Atualmente, existem três tipos principais de zkVM, com seus conjuntos de instruções respectivos entre parênteses: Mainstream (WASM, RISC-V), EVM (bytecode EVM), ZK-Optimized (um novo conjunto de instruções otimizado para provas de conhecimento zero, como Cairo e zkSync). A seguir está um gráfico de comparação desses tipos com base na apresentação da Miden na ETH Amsterdam.
Muitas coisas feitas no ecossistema de desenvolvimento de prova de conhecimento zero são principalmente sobre capacitar os desenvolvedores a usar a biblioteca Circom (e snarkyjs, por exemplo) ou outras linguagens recém-criadas (como Leo ou Cairo, que têm suas limitações únicas) para o desenvolvimento de zk DApps gerais. No entanto, isso não é tão direto e fácil de aprender como usar o Solidity no Ethereum.
Para além disso, existem muitos projetos como zkSync, Scroll, ou vários sob o guarda-chuva da Polygon que estão a experimentar soluções zkEVM ou outras soluções zkVM.
A EVM é a máquina virtual do Ethereum, que também pode ser entendida como um conjunto de ambientes de execução para executar contratos inteligentes.
Ao longo dos anos, várias blockchains públicas têm tentado continuamente tornar-se compatíveis com a EVM, integrando-se assim no ecossistema de desenvolvimento da Ethereum. Este conceito levou à derivação de termos como compatibilidade com a EVM, equivalência com a EVM e outras definições.
Vamos interpretar mais a fundo o zkEVM. Por definição, o zkEVM é uma máquina virtual compatível com EVM e também amigável às provas de conhecimento zero, garantindo a completa correção de programas, operações e entrada/saída.
Para alcançar a computação universal, existem dois desafios principais no desenvolvimento de zkEVM:
Diferentes contratos requerem a geração de diferentes circuitos, e esses circuitos são bastante ‘complexos’.
Este aspeto depende principalmente de várias otimizações. Por exemplo, Aleo (embora não seja do tipo ZK direto... apenas um exemplo de otimização) utiliza clusters distribuídos para computações de prova concorrentes, ou várias otimizações de hardware para aceleração.
zkEVM requer não apenas uma reconstrução do EVM, mas também uma reconstrução de toda a transição de estado do Ethereum usando a tecnologia de prova de conhecimento zero.
O design original do EVM não antecipou o desenvolvimento do zkEVM, levando a dificuldades significativas. Isso resultou em duas abordagens distintas, como ilustrado no diagrama.
Ou, para distinguir de acordo com a arquitetura de uma Máquina Virtual (VM), como no diagrama abaixo (um enorme agradecimento à Scroll Tech pela imagem original resumida!). Opcode refere-se a Opcode EVM. A seção StarkWare usa Warp para converter contratos Solidity em contratos Cairo, ou pode escrever contratos diretamente em Cairo e ainda obter uma boa experiência de desenvolvimento e um conjunto completo de ferramentas.
No nível do desenvolvedor e do usuário, essas soluções são basicamente indistinguíveis, na minha opinião. No entanto, em termos de infraestrutura, quanto mais à direita a solução estiver, melhor será a compatibilidade com a EVM. Pode integrar-se facilmente com infraestruturas como Geth, mas o progresso de desenvolvimento é geralmente mais lento.
A existência do zkEVM, na minha opinião, é inovar e corrigir o ecossistema Ethereum, contribuindo para a prosperidade do Ethereum e seu ecossistema. Por outro lado, a existência do zkVM pode não necessariamente fortalecer o Ethereum, mas proporciona uma maior imaginação.
Embora o Cairo VM da StarkNet possa não ser o zkVM perfeito que eu tinha imaginado, ele pode fazer mais do que o EVM ou zkEVM. Essas funcionalidades vão além do nível das extensões do EIP. No Cairo VM, modelos de aprendizado de máquina podem ser executados e até mesmo uma plataforma de modelos de aprendizado de máquina está sendo construída na StarkNet.
Comparado com o zkEVM, construir um zkVM é mais fácil (sem se preocupar com a dívida técnica do EVM), mais flexível (sem se preocupar com as atualizações do EVM) e mais fácil de otimizar (o otimizador de circuitos e provas é muito mais simples e mais barato do que construir o zkEVM).
No entanto, o zkVM tem uma pequena, mas potencialmente fatal, desvantagem. Se o zkVM não conseguir fornecer compatibilidade com a EVM ao nível da linguagem Solidity, será difícil para o zkVM estabelecer um ecossistema de desenvolvimento Web3 abrangente e maduro, semelhante ao da EVM.
zkVM pode ser uma tendência maior que pode permitir a otimização vertical do EVM e a expansão horizontal do ecossistema EVM, libertando-se das limitações do EVM.
Se pudesse haver um zkVM universal que permitisse contratos inteligentes de todas as linguagens de programação, não apenas Solidity, não apenas Cairo, mas Rust, C++, Go, funcionar de forma segura com prova de conhecimento zero, não seria ótimo? (Stellar tentou, mas falhou).
Como @kelvinfichtermencionado: Por que zkEVM se zkMIPS? Como@KyleSamanimencionou: EVM é um bug, não uma funcionalidade. Por que zkEVM se zkVM?
Winterfall, Distaff, Miden VM e outros zkVMs ainda não alcançaram um alto nível de facilidade de uso para desenvolvedores. Nervos tem um VM RISC-V, mas não utiliza a tecnologia de prova de conhecimento zero.
A solução ideal na situação atual é construir um WASM ou RISC-V zkVM, ainda melhor se puder suportar linguagens como Rust, Go, C++, e até Solidity (zkSync parece ser capaz de fazer contribuições significativas). Se existir um zkVM universal desse tipo, seria um golpe significativo para o zkEVM.
O número de desenvolvedores Web3 representa aproximadamente 0,07% de todos os desenvolvedores. Isto implica que o número de desenvolvedores Solidity é ainda menor do que 0,07%, e ainda menos desenvolvedores usariam Cairo para escrever contratos ou Leo para escrever circuitos. Como resultado, o zkVM perfeito visa atender a quase 100% dos desenvolvedores, já que qualquer desenvolvedor pode obter um ambiente de execução de conhecimento zero perfeito usando quase qualquer linguagem de programação.
Se um dia a Web3 e a Crypto dominarem o mundo, acredito que definitivamente não será o ecossistema EVM ocupando 100% de todos os desenvolvedores, mas sim todos os desenvolvedores fazendo a transição gradualmente para desenvolvedores de Web3 e Crypto. Aqui é onde reside o brilhantismo do zkVM universal.
Native zkEVM é o futuro da blockchain.
Universal zkVM é o futuro do Web3.