Escrito por: zkSync

Compilado por: Shenchao TechFlow

TLDR

Atualização: A Era zkSync está em transição para o novo sistema à prova de Boojum sem a necessidade de regeneração.

Desempenho: Boojum demonstra o melhor desempenho de atestado da categoria, complementando o sequenciador zkSync Era, que já pode lidar com mais de 100 TPS.

Descentralização: os provadores Boojum requerem apenas 16 GB de RAM, permitindo futura descentralização dos provadores em grande escala.

A missão da zkSync é promover a liberdade pessoal para todos - tornando a autopropriedade digital universalmente acessível através da construção de uma rede blockchain sem confiança, segura, sem permissão, acessível, fácil de usar, resiliente e infinitamente escalável.

Na prossecução desta missão, a versão alfa da Era zkSync foi disponibilizada ao público há pouco mais de três meses, e a resposta tem sido incrível. Destaques da rede:

O valor total bloqueado da TVL é de US$ 577 milhões (Fonte: L2Beat);

23.750.000 transações nos últimos 30 dias – o maior número de qualquer L2 (fonte: L2Beat);

9.735 contratos inteligentes verificados em código-fonte.

Em março de 2023, o zkSync Era baseado em SNARK foi lançado, aproveitando a estrutura de circuito testada em batalha que oferece suporte ao zkSync Lite na rede principal há quase três anos. No entanto, sabíamos que esta não seria a versão final do sistema de prova da Era zkSync e, portanto, projetamos o sistema para nos permitir fazer alterações fundamentais nele sem regeneração. Isso significa que podemos implantar atualizações criptográficas significativas sem interromper desenvolvedores e usuários.

Nos bastidores, trabalhamos há muito tempo em uma atualização criptográfica. Hoje temos o prazer de anunciar a primeira atualização: a Era zkSync está em transição para um novo sistema à prova STARK chamado “Boojum”.

Conheça Boojum

Boojum é uma biblioteca aritmética e de restrições que desenvolvemos com base em Rust, que usamos para implementar zkSync Era e ZK Stack, uma versão atualizada do circuito ZK.

O que é Boojum:

Recursos do Boojum:

Aritmética PLONK: No contexto dos protocolos de conhecimento zero, a aritmética é o processo de conversão de cálculos gerais em forma matemática. Assim como o sistema de prova atual, o sistema de atualização ainda usa aritmética no estilo PLONK. Com esta abordagem, os circuitos ZK são mais simples de escrever do que algumas alternativas, tornando o sistema mais fácil de desenvolver, auditar, manter e atualizar.

Esquema de compromisso poderoso: No coração do Boojum está o esquema de compromisso FRI, um componente chave que nos permite comprometer-nos com polinômios limitados e subsequentemente provar de forma eficiente que a abertura reivindicada (polinomial) é de fato um polinômio de baixo grau.

Eficiência do sistema: Embora a geração de testemunhas às vezes seja esquecida quando as pessoas falam sobre o desempenho do provador, nas versões atuais do sistema de provas chegamos ao ponto em que os provadores de GPU otimizados são tão eficientes que o tempo de geração de testemunhas é quase o mesmo que o tempo de geração de provas. . Com o Boojum, fornecemos paralelização automática (se o gráfico de dependência permitir) da geração de testemunhas, mantendo a simplicidade de definição de funções de geração de testemunhas.

Fácil de estender: A abstração básica do sistema de restrições é muito concisa, mas permite aos usuários adicionar tipos de portas personalizados de várias maneiras, como adicionar alguns polinômios especializados a eles ou reutilizar as chamadas "colunas genéricas". A interface de extensão fornece a capacidade de gerar automaticamente provadores, verificadores e verificadores recursivos depois que os usuários definem uma geometria simples para seu circuito. Isso permite um processo de desenvolvimento muito eficiente; se o usuário alterar a estrutura do circuito e selecionar um tipo diferente de porta para usar, ele poderá simplesmente chamar a interface novamente e ela irá regenerar as chaves e garantir que eles usem o provador e o verificador corretos.

Pilha única: com o Boojum, todos os itens acima podem ser feitos usando apenas expressões Rust idiomáticas padrão, aproveitando o poder expressivo de seu sistema de tipos. As partes computacionalmente intensivas do provador de GPU são escritas em CUDA C++, mas fornecemos ligações Rust para composição.

Boojum usa campos principais de tamanho 2 ^ 64 - 2 ^ 32 + 1 por padrão (chamados de "campo Cachinhos Dourados") e fornece implementações de primitivas de ligação de campo correspondentes, como a função hash Poseidon2 e atualizações baseadas em tabelas de pesquisa. primitivas criptográficas padrão, como SHA256, Keccak256 e Blake2s.

É importante ressaltar que na etapa final, envolveremos a prova STARK com um SNARK baseado em emparelhamento não transparente e verificaremos este SNARK no Ethereum. Esta prova é muito menor e menos dispendiosa de verificar; esta etapa reduz o custo do sistema de prova e, portanto, da própria transação.

Por que escolher a Boojum?

Ao projetar o Boojum, houve dois fatores principais por trás da decisão: (1) desempenho comprovado de classe mundial e (2) requisitos reduzidos de hardware para descentralização.

Desempenho de classe mundial

O atual sistema baseado em SNARK, embora eficaz no momento, não se adapta às transações de alto volume e quase em tempo real no ZK Stack. O objetivo futuro do zkSync Era executado como Hyperchain é oferecer suporte a esses sistemas nos próximos anos. Nossa visão para esses sistemas é que as provas possam ser geradas e verificadas de maneira barata e rápida, permitindo rápida finalização e interoperabilidade entre hipercadeias.

O desempenho do sistema de prova afeta diretamente as taxas que os usuários pagam pelas suas transações, e esses custos precisam se aproximar de zero ao longo do tempo. A versão atual do sistema de prova é eficiente o suficiente para construir o zkEVM e processar milhões de transações em apenas alguns meses, mas com o Boojum podemos fazer ainda melhor!

Para medir o tempo de geração de provas da rede (bem como outras métricas importantes relacionadas ao desempenho), fizemos uma parceria com a Celer, cuja equipe tem ampla experiência em benchmarking e análise de múltiplos sistemas de provas. Na imagem abaixo você pode ver que o Boojum teve um bom desempenho na maioria dos sistemas analisados. Os resultados falam por si: nossa implementação demonstra desempenho de prova de classe mundial e, até onde sabemos, é o sistema de prova mais rápido atualmente em uso na produção.

Para uma comparação justa, o Celer executou esses benchmarks em um provador baseado em CPU, mas nosso sistema mainnet usa um provador baseado em GPU, que é mais rápido.

Mudar para um sistema de prova baseado em STARK representa uma melhoria significativa no desempenho e ajudará a garantir finalidade e suporte de baixa latência para níveis de atividade aumentados da Era zkSync e outros sistemas baseados em ZK Stack.

Reduza os requisitos de hardware descentralizado

Esses resultados de desempenho são especialmente impressionantes quando consideramos que esta não é a única métrica que estamos otimizando - queremos melhorar o desempenho do sistema e, ao mesmo tempo, reduzir os requisitos de hardware para executá-lo.

Os sistemas de prova comumente usados ​​atualmente, incluindo o nosso sistema existente, têm requisitos de hardware mais elevados. Nosso sistema de prova atual é executado em um conjunto de GPUs A100, cada uma com 80 GB de RAM. A necessidade de máquinas caras e poderosas representa um obstáculo significativo ao nosso objetivo: um futuro de geração de provas descentralizada e orientada pelo usuário. Para atingir esse objetivo, não basta tornar a geração de provas sem permissão; os usuários também não devem precisar de uma máquina cara com centenas de GB de RAM para participar.

Esta é outra área onde fizemos progressos extremamente impressionantes! Nosso provador de GPU para Boojum requer apenas 16 GB de RAM, e essa baixa barreira de entrada é um passo importante para o futuro que imaginamos. A prova baseada em CPU também está disponível com apenas 64 GB de RAM, queremos reduzir para 32 GB e aproveitar ao máximo os modernos processadores multi-core.

Finalmente, o sequenciador baseado em Rust zkSync Era já pode processar mais de 100 transações por segundo (TPS). A introdução de um novo sistema de provas não só melhora o desempenho, mas também reduz os requisitos de hardware, tornando-o um complemento ideal para o sequenciador. As melhorias de desempenho trazidas pelo Boojum significam que o sistema pode provar transações mais rapidamente, enquanto os requisitos reduzidos de hardware melhoram o acesso da rede a máquinas mais baratas para maior escalabilidade horizontal.

A jornada da rede principal de Boojum

A equipe passou meses desenvolvendo esta atualização e estamos entusiasmados por ter alcançado a fase de teste do sistema na rede principal. Também queríamos compartilhar algumas de nossas histórias até agora.

Atualizar a era zkSync

Primeiro, o design da Era zkSync nos permite atualizar todos os componentes ao longo do tempo, e o sistema de certificação não é exceção.

Semelhante ao Ethereum, usamos uma estrutura de dados em árvore Merkle para armazenar informações sobre o estado da rede. Dado que estamos provando uma afirmação sobre o estado do sistema, esta informação é necessária para provar o sistema. Para esta árvore Merkle (e a forma como o sistema de prova interage com ela), uma decisão chave de design é usar uma função hash não algébrica, especificamente Blake2s. Se estivéssemos otimizando apenas para facilitar a geração de provas, usaríamos uma função hash algébrica (por exemplo, Poseidon2), mas essa escolha acoplaria o estado observável aos parâmetros do sistema de provas - como a escolha de campos principais. Qualquer atualização do sistema de prova requer uma regeneração completa do estado.

A jornada Boojum, do design à revisão

Há cerca de um mês, começamos a desenvolver uma versão completa de ponta a ponta da implementação do nosso novo sistema de prova. Dada a complexidade desta mudança e a criticidade da correção do sistema, iniciamos uma série de auditorias internas e externas.

Na época, os circuitos zkEVM e a biblioteca aritmética Boojum ainda estavam em desenvolvimento ativo, mas trabalhamos com auditores de segurança externos para nos concentrarmos na identificação precoce de possíveis problemas com a solidez de nossos principais circuitos e componentes Boojum. Trabalhamos em estreita colaboração para fornecer a eles o código-fonte completo e acesso à documentação, e eles revisaram e testaram o circuito zkEVM e o gadget Boojum, usando métodos de teste automatizados e manuais.

Boojum: da revisão ao teste

Isso nos leva a hoje, ao próximo passo em nossa implementação em fases: Mainnet Shadow Mode! Temos o prazer de anunciar que agora estamos executando o novo sistema de provas em paralelo com o sistema de provas existente, embora o Boojum esteja atualmente apenas em versão beta. Começamos a gerar e validar “provas de sombra” para blocos da rede principal.

Essas provas de sombra não são necessárias para a versão mainnet da Era zkSync – isso ainda será conduzido pelo sistema de provas existente. Simplesmente validamos essas provas de sombra para testar e otimizar ainda mais o sistema, mas usando dados reais de produção da atividade do usuário do zkSync Era.

Boojum: Do teste à rede principal

Tal como acontece com tudo o que fazemos, a segurança está sempre em primeiro lugar. Só consideraremos uma migração quando estivermos completamente satisfeitos com os testes do novo sistema e compartilharemos mais detalhes nas próximas semanas e meses. Também planejamos realizar mais auditorias e avaliações de segurança para aproximar esta atualização da implantação completa e eliminar gradualmente o sistema de certificação atual.

Acreditamos que o Boojum é o próximo passo para que o zkEVM seja mais seguro, escalonável e eficiente.