A rolagem vai conduzir a onda da camada 2? E os circuitos ZkeVM e a auditoria que precisa saber

IntermediárioDec 27, 2023
Este artigo fornece uma análise detalhada da arquitetura e tecnologia do Scroll, ajudando os leitores a compreender o estado atual da rede e as futuras direções de desenvolvimento do Scroll. Também explica os circuitos e auditorias do Scroll ZKevM.
A rolagem vai conduzir a onda da camada 2? E os circuitos ZkeVM e a auditoria que precisa saber

No dia 10 de outubro, às 14:00, a solução Ethereum Layer 2 mainnet Scroll gerou o seu primeiro bloco, marcando o lançamento bem-sucedido da rede principal da Scroll. A partir de 25 de outubro, mais de 7600 ETH foram integrados na rede Scroll através de pontes de cadeia cruzada, e 24 plataformas de negociação descentralizadas entraram em funcionamento na rede principal Scroll, com um total de TVL de aproximadamente 10 milhões de dólares.

A 17 de outubro, a Scroll anunciou oficialmente o lançamento da sua mainnet enquanto continuava a manter o seu compromisso com o código aberto e a descentralização. Na próxima fase, a Scroll irá concentrar-se na construção de uma rede de prova de participação descentralizada e classificadora. Neste artigo, forneceremos uma análise detalhada da arquitetura e tecnologia do Scroll para ajudar todos a compreender o estado atual da rede e a direção de desenvolvimento futuro do Scroll. Também explicaremos o circuito ZkeVM da Scroll e o conhecimento de auditoria para reforçar as medidas de segurança para projetos zk.

Quem é o Scroll, a força motriz da onda da Camada 2?

Scroll é uma solução de escalonamento Ethereum Layer 2 baseada na tecnologia de prova de conhecimento zero, destinada a melhorar o rendimento das transações e a velocidade da rede Ethereum. Em comparação com o Optimistic Rollup, o Scroll consegue escalabilidade através de provas de conhecimento zero e acelera a geração e verificação de provas de conhecimento zero através da aceleração de hardware. Está empenhada em alcançar a compatibilidade EVM no nível do bytecode. Isto significa que os programadores podem usar diretamente as ferramentas de desenvolvimento relacionadas com Solidity e Ethereum para construir contratos inteligentes e implementá-los no Scroll sem quaisquer modificações.

De acordo com o site oficial da Scroll, existem atualmente 10 membros principais na equipa Scroll, distribuídos pela Ásia, América e Europa. Os membros da equipa têm uma vasta experiência no desenvolvimento do ZKrollUp e operações industriais, com a maioria deles a licenciar-se em universidades de prestígio e a ter doutoramentos.

Atualmente, o ecossistema Scroll é muito rico, com projetos de infraestrutura, incluindo carteiras, ferramentas de desenvolvimento, instalações de segurança e muito mais. O objetivo é fornecer suporte abrangente a projetos ao longo de todo o ciclo de vida, desde o design, desenvolvimento, operação, até auditoria de segurança. Atualmente, existem mais de 180 projetos de ecossistemas na mainnet Scroll.

  1. O Wallet
    Scroll suporta atualmente quase todas as carteiras convencionais: Metamask, TrustWallet, MathWallet, TokenPocket, WalletConnect, Binance Chain Wallet, SafePal Wallet. Além disso, a carteira do ecossistema Scroll também inclui OKX Wallet, Versa Wallet, e assim por diante.

  2. A
    infraestrutura oficial entre cadeias cruzadas da Cross-Chain Bridge Scroll inclui Celer Network, Stargate, Orbiter Finance, Hop Protocol, LI.FI, Connext, etc. Além disso, também inclui o protocolo de liquidez de cadeia cruzada Synapse Protocol, Owlto Finance com foco em pontes de cadeia cruzada da camada 2, Ethereum Layer 1 e Layer 2 bridge de cadeia cruzada Pheasant Network, Symbiosis, Catalyst, etc.

  3. DeFi
    No ecossistema Scroll, existem vários projetos DeTI bem estabelecidos, incluindo o protocolo de empréstimo Aave, o agregador DEX multi-cadeia DODO, DEX SushisWap, o agregador DEX OpenOcean, o protocolo DeFi multi-cadeia iZumi Finance, o DEX Syncswap, o protocolo de rendimento Pendle Finance, o protocolo de empréstimo dForce e o agregador de negociação de alavancagem MUX Protocol. Há também projetos inovadores como o GMX que não foram amplamente adotados.

  4. Outros
    Em termos de NFT, jogos e aspectos sociais, outros projetos no ecossistema Scroll incluem NFTScan, plataforma de tarefas Web3 QuestN, TaskON, plataforma de assinatura de protocolo eletrónico EthSign, Galaxy Blitz, OmniKingDoms e outros jogos online de blockchain.

O que diferencia a tecnologia Scroll das outras?

1. Arquitetura geral

A arquitetura do Scroll consiste em três componentes:

Scroll Node: Gera blocos na rede Scroll com base nas transações do usuário, envia essas transações para a camada base Ethereum e lida com a passagem de mensagens entre Ethereum e Scroll.

Roller: O Roller é responsável por converter contratos inteligentes em circuitos ZKevM, e depois gera provas para provar a exatidão das transações. Existem vários Rollers na rede Scroll, que processam transações em paralelo e aceleram a geração de provas através do hardware. O Scroll alcança a compatibilidade no nível do bytecode com o EVM provando diretamente a exatidão do processamento de bytecode EVM.

Rollup e Contrato Bridge: Estes contratos fornecem disponibilidade de dados para transações Scroll e verificam as provas de validade geradas pelo ZkeVM. Pode-se dizer que o Scroll está ligado à camada base Ethereum através de contratos Rollup e Bridge. Através destes contratos, os utilizadores podem trocar mensagens arbitrárias entre Ethereum e Scroll, e transferir ativos ERC-20 em qualquer direção com a ajuda de contratos de gateway.


origem: https://scroll.mirror.xyz/nDAbJbSIJdQIWqp9kn8J0MVS4s6pYBwHmK7keidQs-k

Scroll é o principal contrato implantado na cadeia de blocos Ethereum:

Contrato de Proxy de Roteamento de Gateway (Garantir o mapeamento correto de tokens em operações de cadeia cruzada):0xF8B1378579659D8F7EE5F3C929C2F3E332E41FD6

Contrato de proxy de mensagem (Transmissão de mensagens entre L1 e L2):0x6774BCBD5CECEF1336B5300FB5186A12DDD8B367

Vale a pena notar que estes contratos podem ser modificados pelo administrador e proprietário do proxy. Além disso, o Scroll incorporou uma função de lista branca que permite o ajuste das taxas de gás para endereços específicos dentro do Scroll. Atualmente, o sequenciador Scroll opera de forma centralizada, o que permite a revisão de mensagens e transações na rede Scroll. Além disso, existe a possibilidade de ignorar qualquer mensagem na fila de mensagens e confirmar diretamente uma mensagem específica.

2. Role o fluxo de trabalho do ZkeVM

Depois de o Scroll gerar um bloco, passa por um coordenador e vários provadores (Rollers) para gerar provas agregadas. Estas provas são então submetidas ao contrato Ethereum Rollup para verificação. O processo detalhado é o seguinte:

1、O sequenciador recebe novas transações. A máquina virtual lê o bytecode associado a cada transação, gerando um rastreamento de execução e enviando-o ao coordenador. Simultaneamente, o sequenciador submete os dados da transação para o contrato Rollup.

2、Os rolos convertem os traços de execução recebidos do coordenador em circuitos ZKevM. Cada passo no rastreio de execução corresponde a um circuito ZKevM. Para funções que não são compatíveis com zk (como hash e Keccak), o Scroll constrói tabelas de pesquisa para mapear as entradas e saídas dessas funções no rastreamento de execução para a tabela de pesquisa. São utilizados circuitos adicionais para verificar a exatidão da tabela de pesquisa. Os rolos geram então provas para estes circuitos ZKevM.

3、Depois de gerar as provas, os Rollers enviam-nas de volta ao coordenador. A cada poucos quarteirões, o coordenador atribui aleatoriamente tarefas de agregação a um Roller. O Roller atribuído agrega provas para vários blocos numa única prova.

4、Por último, o coordenador submete a prova agregada ao contrato Rollup. O contrato Rollup utiliza esta prova para verificar a exatidão dos dados de estado e transação apresentados anteriormente, confirmando assim a exatidão do bloco.

Role Circuitos ZkeVM e Auditoria

1. Circuitos Principais

O zKevM consiste em vários circuitos, cada um encarregado de verificar um aspeto específico do EVM (Ethereum Virtual Machine). Estes circuitos são eventualmente combinados ou agregados para gerar prova de execução da transação. O diagrama abaixo ilustra a relação entre estes circuitos e as tabelas.

Existem subcircuitos mais pequenos, como o circuito ECDSA e sub-circuitos relacionados com opcode, que não interagem com outras tabelas e circuitos de uma forma que afeta a combinação do circuito. Estes subcircuitos são omitidos do diagrama para maior clareza.

Circuito EVM

A Máquina Virtual Ethereum (EVM) é uma máquina de estado que estabelece as regras para transições de estado válidas dentro do protocolo Ethereum. Ele executa instruções (opcodes) para alcançar essas transições e gera um rastreamento de execução. O objetivo do circuito EVM é criar um sistema de restrição que represente o rastreamento de execução e pode ser verificado usando um sistema de prova de conhecimento zero.

O design de alto nível do circuito EVM é um pouco semelhante ao design do próprio EVM, como go-ethereum. No go-ethereum, o intérprete itera através de todos os opcodes de instrução no rastreio de execução. Para cada instrução, o intérprete verifica as informações relevantes do contexto, como gás, pilha e memória, e envia o opcode para o JumpTable, que fornece instruções detalhadas para executar o opcode.

Da mesma forma, nos circuitos EVM, o Scroll constrói etapas de execução com base no rastreamento de execução e fornece provas para opcodes e contextos de execução. Para cada etapa de execução, é aplicado um conjunto de restrições para verificar a informação contextual. Para cada opcode, é aplicado um conjunto de restrições para verificar o seu comportamento. Dentro do rastreamento de execução, o mesmo opcode deve ter as mesmas restrições. O Scroll usa seletores para “abrir” todas as etapas com o mesmo opcode no rastreamento de execução e usa o sistema de prova de back-end para provar o seu comportamento.

Circuito Estadual

Durante a execução, todas as operações de leitura e gravação do EVM são registadas na rw_table e ordenadas pela variável rw_counter. O objetivo do circuito de estado é demonstrar a geração precisa da tabela rw_table.

Circuito MPT

A Merkle Patricia Tree (MPT) é uma estrutura de dados chave usada na camada de armazenamento Ethereum. Nos circuitos ZKEVM da Scroll, o MPT é modificado para ZKtrie, que é essencialmente um Merkle Patricia Trie binário esparso. Nos circuitos ZKEVM, o Scroll utiliza a tabela MPT para rastrear as transições de estado das operações MPT passo a passo. A tabela MPT tem o seguinte layout:

O objetivo do circuito MPT é verificar a precisão da tabela MPT mencionada acima. Garante que cada atualização registada na tabela MPT resulta numa alteração correta. Isto significa que, para cada atualização, o circuito MPT garante que só existe uma maneira possível de fazer alterações. Isso evita modificações acidentais ou não autorizadas e garante a integridade e precisão do MPT. Especificamente, quando o MPT sofre alterações devido a atualizações em contas ou armazenamento, o circuito MPT deve provar que essas atualizações são realizadas de acordo com as regras especificadas. Além disso, deve demonstrar que o hash raiz reflete com precisão os resultados de todas as alterações.

Circuito Keccak

A Scroll implementou a sua própria versão do Keccak256, seguindo a especificação NIST Keccak e a especificação da equipa Keccak.

E o circuito Keccak é usado para provar a exatidão da operação Keccak256. A implementação deste circuito é complexa, principalmente porque o próprio algoritmo keccak256 é zk-unfriendly.

Circuito Tx

O circuito Tx fornece restrições para validar a exatidão de uma transação. Verifica principalmente os seguintes aspetos da transação:

  1. A exatidão de callDataLength e CallDataGasCost cumulativo: Determine o portão personalizado e encontre a última linha de bytes de dados de chamada na tabela tx;

  2. A exatidão dos dados relacionados com TxSign e TxHash: Pesquise a tabela RLP e a tabela Keccak;

  3. Prove a exatidão de “se tx_type é L1Msg, então msg_hash”: Verifique pesquisando a tabela RLP;

  4. Execute a assinatura tx corretamente usando ECDSA e recupere o endereço do chamador corretamente a partir da assinatura ECDSA: Verifique pesquisando a tabela sig;

  5. O comportamento de transição correto de tx id, cum_num_txs e call_data_length;

  6. Algumas restrições básicas, tais como valores booleanos de certas variáveis indicadoras.

Circuito Bytecode

Os circuitos EVM precisam de procurar uma tabela de bytecode que contenha as informações de bytecode corretas. Isto garante que os bytes armazenados no contrato correspondem aos bytes carregados da tabela. O objetivo do circuito de bytecode é impor a exatidão da tabela de bytecode. Isto inclui:

  1. Restrições relacionadas com o comportamento de limite com tags (tag): Restrições na primeira e última linhas, conversão de tag == byte para cabeçalho e vice-versa, conversão de cabeçalho para cabeçalho;

  2. Restrições no tamanho do código: Incluindo o cálculo do comprimento do bytecode através da restrição do índice do último byte do bytecode;

  3. Restrições no código hash: Restrição correta do comportamento RLC de bytes no hash de código e verificando o hash de código procurando a tabela Keccak;

  4. Garantir a exatidão do comportamento PUSH: is_code = push_data_esquerdo == 0 (deve ser um valor booleano) e verificar o tamanho dos dados enviados para PUSH1-PUSH32 procurando a tabela push_table;

  5. Garantir a propagação correta em cada linha de um bytecode.

2. Auditoria de Segurança

Diferentes cadeias têm as suas próprias funções de módulo de negócio personalizadas, que normalmente modificam os contratos pré-compilados e opcodes no EVM. Entre eles, o Scroll ZkeVM é uma solução de escalonamento de segunda camada baseada em provas de conhecimento zero. Esta solução reconstrói os opcodes relevantes usando circuitos e gera provas com base em rastreios de execução. Esta implementação complexa aumenta muito a dificuldade de auditoria. Após avaliação por especialistas em segurança da Beosin, a auditoria de segurança do ZKevM concentra-se principalmente nos seguintes aspetos:

  1. GAS:Ao gerar provas para o traço de execução do circuito ZKevM, também verifica a exatidão do consumo de gás nas transações. Se variáveis livres irrestritas forem frequentemente utilizadas no circuito de implementação dos opcodes, pode resultar em falha de geração de prova ou outros erros desconhecidos.

  2. Segurança da memória: Alguns circuitos ZKEvM baseiam-se em compromissos polinomiais, como o compromisso KZG utilizado pelo Scroll. No entanto, os cálculos polinomiais não se alinham automaticamente, portanto, se o circuito não tiver restrições, pode resultar num intervalo de valores inconsistente com o intervalo de bytes em programas de computador. Em alguns casos, quando os programadores contratados permitem a otimização de gás, o arranjo compacto dos dados pode levar a problemas de segurança da memória, como o polinómio constante BYTE_C4096 no Polygon ZKEvm. Os polinómios permitem que os valores dos parâmetros excedam o intervalo máximo de valor de byte de 255, o que pode potencialmente permitir que sequenciadores maliciosos manipulem parâmetros com fins lucrativos em algumas plataformas de troca que adotam o modelo AMM. Essencialmente, estes tipos de vulnerabilidades surgem de inconsistências entre o intervalo de validade numérica representado pelo circuito e o intervalo de valor variável do programa. Um exemplo é a vulnerabilidade CVE-2023-33252 descoberta pelos investigadores de segurança da Beosin na biblioteca Smarkjs.

  3. Opcode Security: Ao implementar opcodes zKevM, existem problemas de segurança comuns, especialmente no que diz respeito à precisão. Por exemplo, ao comparar dois números no circuito subjacente, se a precisão da operação de comparação no programa for de 1 byte, as restrições do circuito precisam especificar o intervalo de valores. Caso contrário, a precisão das operações no circuito excederá a precisão do programa, levando a resultados incorretos.

  4. Suporte para EIPs seguros: Suporte para EIPs focados na segurança, tais como EIP-2 e EIP-155.

  5. Problema de centralização no Sequencer: Atualmente, todas as provas geradas pelo Scroll dependem do rastreamento de execução gerado pelo Sequencer. Se o Sequencer se comportar de forma maliciosa, o ZkeVM não pode garantir a segurança dos ativos do utilizador.

  6. Problema de compatibilidade: O ZkeVM gera provas de circuito com base no traço de execução e verifica-as no contrato. Mesmo pequenas actualizações no Sequencer podem resultar em diferenças significativas no rastreio de execução gerado ao nível da linguagem subjacente.

Perspectivas futuras da Scroll

  1. A Scroll adota atualmente uma versão KZG de duas camadas do sistema à prova de Halo2, usando a aceleração de hardware da GPU para acelerar a geração de provas. O gargalo mudou agora para a geração de testemunhas e replicação de dados. Além disso, o nível de centralização e os custos operacionais de hardware do Roller também são aspectos que a Scroll precisa considerar para o desenvolvimento futuro de sistemas à prova de vários estágios.

  2. Como o rastreamento de execução do EVM está a mudar dinamicamente, existem várias restrições de circuito e escalas. Atualmente, para acomodar o rastreamento de execução que muda dinamicamente, cada etapa do rastreamento de execução precisa satisfazer a maior escala de circuito, resultando em desperdício de memória adicional.

  3. Espera-se atualmente que o Scroll's Roller lucre com as taxas de transação de rede. No entanto, o número atual de utilizadores e as taxas de transação na rede Scroll não podem cobrir os custos operacionais do Roller e do sequenciador. No futuro, como a rede Scroll fornece incentivos económicos para atrair utilizadores e manter uma operação estável da rede é uma questão que tem de ser considerada.

Atualmente, a Beosin também apoia a auditoria do projeto zk. Para pesquisas de segurança hardcore sobre zk, pode ler os seguintes artigos: 1. Ataque de maleabilidade da transação da Groth16 Proof; 2. Explorando o Tornado Cash em profundidade para revelar ataques de maleabilidade em projetos ZKP.

A Beosin, enquanto empresa líder mundial em segurança blockchain, estabeleceu filiais em mais de 10 países e regiões em todo o mundo. Os nossos serviços abrangem auditorias de segurança de código antes do lançamento do projeto, monitorização de risco de segurança, alerta precoce e prevenção durante a operação do projeto, recuperação de ativos para moedas virtuais roubadas e serviços de conformidade seguros, como KYT/AML. Fornecemos uma solução completa para produtos e serviços de segurança blockchain. Atualmente, prestamos serviços de tecnologia de segurança a mais de 3000 empresas de blockchain em todo o mundo e auditamos mais de 3000 contratos inteligentes. Sinta-se à vontade para contactar-nos.

Isenção de responsabilidade:

  1. Este artigo foi reimpresso de [Beosin]. Todos os direitos de autor pertencem ao autor original [Beosin]. Se houver objeções a esta reimpressão, contacte a equipa do Gate Learn, e eles tratarão disso imediatamente.
  2. Isenção de responsabilidade: As opiniões e opiniões expressas neste artigo são exclusivamente do autor e não constituem nenhum conselho de investimento.
  3. As traduções do artigo para outras línguas são feitas pela equipa do Gate Learn. A menos que mencionado, é proibido copiar, distribuir ou plagiar os artigos traduzidos.
Jetzt anfangen
Registrieren Sie sich und erhalten Sie einen
100
-Euro-Gutschein!
Benutzerkonto erstellen