Nem todas as comparações são odiosas…
O autor agradece a Suzi Kim e Unsplash pela imagem.
Introdução
O problema da escalabilidade em blockchains, especialmente na Ethereum, trouxe à tona dois atores que se tornaram onipresentes no ecossistema: SNARKs e STARKs. Eles podem ser encontrados em quase todos os projetos de blockchain, pois de uma forma ou de outra, muitas delas dependem de algum tipo de sistema de prova. Para quem é novo no campo e busca se atualizar sobre os conceitos, pode sentir um grande estresse rapidamente, pois o campo não para de crescer.
A ideia deste post é, de alguma forma, encerrar a série de artigos que dediquei aos SNARKs, fornecendo uma comparação entre os conceitos que intitulam este artigo e apresentar um panorama geral que permitirá, espero, facilitar a aproximação ao campo.
Conceitos Principais
É fácil encontrar informações sobre esses conceitos. Na verdade, todos são bem-vindos para conferir os artigos anteriores que escrevi nos últimos meses sobre como construir SNARKs. No entanto, sempre é uma boa ideia revisar os conceitos, pelo menos os principais.
SNARKs e STARKs
Já introduzimos os conceitos de SNARK em um artigo anterior, mas sempre é bom revisá-los.
ZK-SNARKs, que significa "Zero-Knowledge Succinct Non-Interactive Argument of Knowledge", são um protocolo criptográfico projetado para gerar provas de conhecimento zero, com o objetivo de verificar a autenticidade de uma informação sem revelar os dados reais.
O acrônimo reflete seus principais atributos, que são:
- Zero-Knowledge (Conhecimento Zero): Significa que o verificador não obtém conhecimento sobre a declaração, exceto se ela é verdadeira ou falsa.
- Succinct (Sucinto): As provas de ZK-SNARKs são compactas o suficiente para serem verificadas rapidamente.
- Non-Interactive (Não interativo): Diferente de sistemas anteriores de prova de conhecimento zero que necessitavam de múltiplas trocas de mensagens, os SNARKs são não interativos.
- Argument (Argumento): Um SNARK é uma declaração "computacionalmente sólida" que atende a critérios rigorosos, tornando muito difícil criar provas fraudulentas.
- Knowledge (Conhecimento): Provas baseadas em SNARK não podem ser geradas sem acesso aos dados subjacentes ou à testemunha, garantindo a confidencialidade.
Um protocolo ZK-SNARK normalmente envolve dois participantes principais:
- o provador (prover), que é a parte fazendo uma afirmação, e
- o verificador (verifier), que é responsável por verificar a validade da afirmação do provador.
A informação mencionada na afirmação é frequentemente chamada de "testemunha" (witness). Para comprovar a verdade da afirmação sem expor esta informação sensível, Alice usa o mecanismo ZK-SNARK para produzir uma prova que convença Bob da precisão da afirmação.
Um exemplo prático dos ZK-SNARKs pode ser visto na verificação de identidade. Por exemplo, uma pessoa poderia afirmar sua cidadania europeia sem revelar detalhes pessoais, como o número do passaporte.
Por outro lado, ZK-STARK, que significa "Zero-Knowledge Scalable Transparent Argument of Knowledge" (Argumento de Conhecimento Transparente e Escalável de Conhecimento Zero), tem o mesmo objetivo dos ZK-SNARKs, de validar a autenticidade de uma declaração sem revelar detalhes sobre ela.
Com poucas distinções, os STARKs têm muitas das mesmas características que os SNARKs. Provas STARK são criadas usando informações confidenciais, que permanecem ocultas do verificador. Da mesma forma, os STARKs podem ser usados para verificar a precisão de transações mantendo os insumos da transação não divulgados.
Então, qual é a principal diferença entre os dois conceitos? A principal distinção dos ZK-STARKs é sua característica escalável e transparente:
- O ZK-STARK é chamado de transparente porque opera sem a necessidade de uma configuração confiável envolvendo uma String de Referência Comum (CRS). Em vez disso, os protocolos STARK usam aleatoriedade verificável publicamente para estabelecer interações entre fornecedores de prova e verificadores.
- A escalabilidade dos ZK-STARKs é notável, pois a complexidade de provar e verificar escala quase linearmente em relação à complexidade computacional envolvida. Em contraste, os ZK-SNARKs demonstram uma escala linear de prova e complexidade de verificação em relação ao cálculo subjacente.
Na prática, isso significa que os ZK-SNARKs demandam mais tempo para a geração e verificação de provas ao lidar com tarefas computacionais extensas. Portanto, os ZK-STARKs são mais adequados para aplicações que lidam com grandes volumes de transações.
Compromissos Polinomiais
Ao se aprofundar em algoritmos de conhecimento-zero, como SNARKs e STARKs, encontramos um conceito criptográfico fundamental: compromissos polinomiais.
Um compromisso (commitment) é um valor público que fica vinculado à mensagem original de duas maneiras críticas, que são computacionalmente vinculativas e ocultas:
- O autor (committer), responsável por criar o compromisso, vincula-o à mensagem garantindo que a mensagem permaneça oculta.
- O autor deve, eventualmente, revelar este compromisso e transmitir a mensagem ao verificador, permitindo que o verificador confirme a correspondência entre o compromisso e a mensagem.
No contexto de compromissos polinomiais, isso pode ser visto como um compromisso com um polinômio específico, denominado P. O autor do compromisso tem a capacidade de demonstrar que o valor do polinômio em um ponto específico, z, satisfaz a equação P(z) = a, sem divulgar o polinômio P real. Existem vários esquemas para a implementação de compromissos polinomiais, entre os quais destacamos o KZG (baseado em emparelhamentos e curvas elípticas) e o FRI (baseado em funções hash).
Em termos gerais, pode-se afirmar que o esquema KZG se destaca em sucintidão devido às suas características únicas. Tanto o tamanho da prova quanto o tempo de verificação mantêm uma complexidade constante de O(1). Isso implica que, à medida que o tamanho do circuito aumenta, não há aumento correspondente no tamanho da prova.
Por outro lado, no contexto do FRI, o tamanho da prova está intimamente ligado à escala do circuito. Conforme a escala do circuito cresce, o tamanho da prova também aumenta. Para ser preciso, ambos, o tempo de prova e de verificação, seguem uma complexidade O(log^2(d)), onde 'd' representa o tamanho do circuito.
No entanto, ao considerar aspectos de segurança, o esquema KZG mostra uma certa fragilidade em comparação ao FRI. Essa fraqueza surge da necessidade de uma configuração confiável de terceiros no esquema KZG, que pode introduzir vulnerabilidades potenciais.
SNARKs: prós e contras
Existem três principais vantagens ao utilizar ZK-SNARKs: alto rendimento, tamanhos compactos de prova de validade e segurança aprimorada.
Os ZK-SNARKs aumentam significativamente o rendimento ao reduzir as cargas computacionais na camada base da Ethereum. Os Rollups, potencializados por ZK-SNARKs, podem elevar as transações por segundo (TPS) aos milhares. Além disso, os ZK-SNARKs geralmente são muito menores em tamanho do que os dados de transação que validam. Esta redução alivia o congestionamento nas blockchains fundamentais, levando a taxas de gás mais acessíveis e transações mais rápidas.
O pequeno tamanho das provas SNARK simplifica sua verificação na cadeia principal. Na Ethereum, isso se traduz em taxas de gás reduzidas para validar transações fora da cadeia, reduzindo os custos de rollup para os usuários finais.
Os rollups ZK são reconhecidos por sua segurança aprimorada, principalmente devido à implantação de mecanismos de segurança criptográficos de ponta inerentes aos ZK-SNARKs.
As provas ZK-SNARK aderem a um framework computacionalmente sólido, tornando extremamente desafiador enganar os verificadores e se envolver em atividades maliciosas. Além disso, a não interatividade dos ZK-SNARKs garante que as provas possam ser verificadas sem confiança por qualquer parte, reforçando ainda mais seu perfil de segurança.
Por outro lado, pode-se destacar outros três principais inconvenientes associados ao uso de ZK-SNARKs: a necessidade de uma configuração confiável, vulnerabilidade a ataques de computação quântica e dependência de hardware especializado.
A implementação do protocolo ZK-SNARK exige a criação de uma String de Referência Comum Universal (CRS), também referida como parâmetros públicos. Esses parâmetros públicos facilitam a comunicação segura entre provadores e verificadores. No entanto, se atores mal-intencionados tiverem acesso aos parâmetros públicos, eles poderão fabricar falsas provas de validação. Alguns projetos tentam abordar esse problema usando computação multipartidária (MPC), envolvendo várias pessoas na geração dos parâmetros públicos. No entanto, essa abordagem exige que os usuários confiem na integridade das partes envolvidas. Isso representa um desafio, pois a tecnologia blockchain visa reduzir a dependência de autoridades confiáveis.
O ZK-SNARK depende da Criptografia de Curva Elíptica (ECC) para criptografar as informações usadas na produção de provas de validação. Embora a ECC atualmente ofereça um nível razoável de segurança, avanços na computação quântica representam uma ameaça potencial ao seu modelo de segurança.
Gerar provas de validação com os ZK-SNARKs é um processo computacionalmente intensivo, exigindo que os provadores invistam em hardware especializado. Dada a acessibilidade limitada dessas máquinas, surgem preocupações sobre a centralização do processo de prova ZK-SNARK, pois apenas alguns poucos podem pagar por esse hardware.
STARKs: prós e contras
Identificam-se quatro principais vantagens associadas ao uso de ZK-STARKs: a ausência de necessidade de uma configuração confiável, escalabilidade, capacidade de alcançar o máximo de rendimento e robustas garantias de segurança.
Os ZK-STARKs operam sem a necessidade de uma configuração confiável, confiando, em vez disso, em aleatoriedade pública. Essa redução na dependência de suposições de confiança aprimora a segurança dos protocolos baseados em STARK e reduz a necessidade de os usuários confiarem em entidades externas.
Os STARKs exibem notáveis vantagens de escalabilidade quando comparados aos SNARKs. Notavelmente, os ZK-STARKs permitem uma computação e verificação mais rápidas em escala, mesmo quando a complexidade das computações subjacentes cresce exponencialmente.
Semelhante aos SNARKs, os STARKs contribuem para a escalabilidade de blockchains facilitando a computação segura e verificável fora da cadeia. Quando uma única prova STARK é enviada para a cadeia de camada 1 (L1), ela pode verificar a integridade de milhares de transações realizadas fora da cadeia principal. Consequentemente, vários projetos de rollups ZK de destaque empregam ZK-STARKs para garantir a confiabilidade das computações fora da cadeia.
Os ZK-STARKs empregam hashes resistentes a colisões para criptografia, em contraste com os esquemas de curva elíptica usados nos ZK-SNARKs. Essa escolha de criptografia é considerada resiliente contra potenciais ataques de computação quântica, aprimorando a segurança dos ZK-STARKs quando comparada às curvas elípticas usadas nos SNARKs.
Quanto às desvantagens, destaca-se basicamente duas: tamanhos de prova maiores e menor adoção.
Apesar de sua vantagem em fornecer provas mais rápidas, os STARKs têm a desvantagem de produzir tamanhos de prova maiores quando comparados às provas baseadas em SNARKs. Esse aumento de tamanho resulta em taxas de gás mais altas para verificar provas STARK na Ethereum, tornando-as mais caras de usar.
Os SNARKs foram a aplicação prática pioneira da tecnologia de conhecimento zero em sistemas de blockchain, dando-lhes uma maior participação no mercado. A maioria das soluções de rollups ZK utiliza os ZK-SNARKs, e o ecossistema e ferramentas para provas ZK baseadas em SNARKs são mais extensos.
Embora os ZK-STARKs também tenham o apoio de entidades influentes como a Ethereum Foundation, eles não alcançaram o mesmo nível de adoção. Como resultado, os desenvolvedores podem encontrar menos recursos, suporte e ferramentas para construir projetos ZK com os STARKs.
Conclusão
A evolução das provas de conhecimento zero, especificamente ZK-SNARKs e ZK-STARKs, marcou um marco significativo nas tecnologias de preservação de privacidade e escalabilidade. Como demonstrado pela crescente adoção de rollups ZK, é evidente que essas técnicas criptográficas estão destinadas a desempenhar um papel fundamental no avanço da escalabilidade de plataformas blockchain como a Ethereum.
Os ZK-SNARKs, conhecidos por sua eficiência e compactação, oferecem uma impressionante combinação de segurança criptográfica e eficiência computacional. Sua capacidade de provar sucintamente a validade das transações sem revelar dados sensíveis já os tornou uma escolha preferida para várias aplicações, principalmente no campo de DeFi.
Por outro lado, os ZK-STARKs, com sua transparência e resistência quântica, oferecem uma alternativa convincente. Embora possam exigir mais recursos computacionais em comparação com os ZK-SNARKs, seu potencial para abordar as preocupações de segurança de longo prazo da tecnologia blockchain não pode ser negligenciado. ZK-STARKs prometem uma base robusta para privacidade e escalabilidade, mesmo diante dos avanços da computação quântica.
No problema da escalabilidade, é claro que tanto os ZK-SNARKs quanto os ZK-STARKs irão desempenhar um papel proeminente. A escolha entre eles dependerá de casos de uso específicos, compensações e requisitos de segurança em evolução. Além disso, o surgimento de SNARKs recursivos adiciona ainda mais ao conjunto de ferramentas de soluções de escalabilidade, oferecendo novos caminhos para pesquisa e desenvolvimento.
Artigo original publicado por Ramsès Fernàndez-València. Traduzido por Paulinho Giovannini.
Top comments (0)