TL;DR
Hoje, as soluções de camada 2 sacrificam escalabilidade pela fragmentação de estado. Apresentamos um design de camada 2 (L2), =nil;, que eleva os limites da escalabilidade do Ethereum sem comprometer os benefícios de um ambiente de execução unificado. A solução combina um mecanismo de fragmentação dinâmica com acesso verificável aos dados do Ethereum, protegido por tecnologias de conhecimento zero. Os elementos-chave incluem:
Através de zkSharding =nil; beneficia-se das vantagens dos designs monolíticos e modulares, incluindo:
Escalabilidade
Ambiente de Execução Unificado
Segurança
Funcionalidade
No nível mais baixo, o estado de =nil; é particionado no shard primário e em vários shards secundários. O papel do shard principal é sincronizar e consolidar dados dos shards secundários. Ele usa o Ethereum tanto como sua Camada de Disponibilidade de Dados quanto como verificador para provas de transição de estado, semelhante às operações típicas de zkRollups.
Os shards secundários funcionam como “trabalhadores”, executando transações de usuário. Esses shards mantêm liquidez e dados unificados por meio de um protocolo de mensagens entre shards, eliminando qualquer fragmentação entre eles.
Cada fragmentação é supervisionada por um comitê de validadores. Há uma rotação periódica desses validadores entre as fragmentações. Além disso, as atualizações do estado de uma fragmentação são verificadas na fragmentação principal usando zkEVM.
Para ilustrar o fluxo de transação desde a iniciativa do usuário até a confirmação no Ethereum, considere as seguintes etapas:
Este esboço pressupõe que a transação do usuário não ativa o protocolo de mensagens entre fragmentos. No entanto, neste caso, o fluxo da transação permanece o mesmo com a diferença de que a transação do usuário pode desencadear a criação de novas transações em outros fragmentos.
Com todas as contas sendo distribuídas entre fragmentos, isso pode parecer semelhante ao problema de fragmentação de dados encontrado na abordagem de rollups específicos de aplicativos. No entanto, a diferença chave está em como a comunicação entre fragmentos é tratada: ela é integrada diretamente no protocolo geral, em vez de ser gerenciada por pontes externas separadas.
Para garantir a segurança de cada fragmentação secundária, seu comitê validador é obrigado a comprovar suas transições de estado para o primário para garantir que nenhuma fraude tenha ocorrido dentro de um grupo de validadores menor. Cada comitê de validadores de fragmentação tem tarefas adicionais além da manutenção da fragmentação. Os validadores são responsáveis por rastrear tipos específicos de eventos, ou seja, mensagens entre fragmentações, dentro de "fragmentações próximas". As fragmentações próximas são determinadas com base na distância de Hamming nos identificadores de fragmentação.
=nil;s zkEVM é um zkEVM Tipo-1 compilado com zkLLVM. Para entender as diferenças entre zkEVMs mais tradicionais e o zkEVM da =nil;, precisamos discutir as limitações associadas ao processo de definição de circuito que subjaz aos zkEVMs. O circuito zkEVM é uma parte crítica, responsável por uma prova de transição de estado a ser considerada correta, geralmente definida com algum zkDSL personalizado ou simplesmente uma biblioteca. Tal forma de definição de circuito traz problemas relacionados a:
=nil; zkEVM está efetivamente lidando com todos esses desafios ao ser:
O zkEVM compilado via zkLLVM é seguro por design, aproveitando o evmone para garantir completa consistência com o EVM utilizado em produção do Ethereum. O zkLLVM (C++ ou Rust) compila automaticamente para o circuito, o que significa que erros humanos são removidos do processo de definição do circuito.
Além disso, porque =nil; zkEVM é compilado via zkLLVM, é naturalmente mais flexível (e, portanto, à prova de futuro) do que circuitos definidos manualmente, pois é facilmente ajustável e a geração de circuitos é automática. Também é mais auditável, o que significa que sua segurança não vem ao custo de incluir os últimos EIPs adicionados ao Ethereum.
Como o shard primário e os shards secundários são diferentes em relação às suas tarefas dedicadas - os shards secundários focam no processamento de transações enquanto o shard primário foca na sincronização de dados - eles têm abordagens diferentes para a disponibilidade de dados (DA), o que ajuda a recuperar dados de estado em situações de emergência. Isso significa:
Essa disposição é estabelecida ao lançar dois tipos de fragmentos no início: aqueles com uma solução DA separada e externa e aqueles sem. Nas fases subsequentes, apenas fragmentos da mesma categoria DA podem ser mesclados. Isso significa que durante sua criação, cada conta deve ser mapeada para uma categoria DA específica.
Além disso, este framework pode ser expandido para incluir outros tipos de DA.
Um dos nossos objetivos principais é otimizar a composição de aplicativos e evitar a fragmentação de liquidez, portanto, naturalmente, a abordagem zkSharding seria incompleta sem acesso sem confiança ao estado do Ethereum. Isso significa =nil; oferece total composabilidade e integração transparente com o Ethereum por meio do módulo de Provedor de Dados.
O Provedor de Dados opera de forma independente do armazenamento de dados do shard, sincroniza suas informações com um banco de dados externo e injeta a impressão digital do Ethereum do último estado do banco de dados monitorado (representado pelo hash do bloco Ethereum) no bloco do shard. O estado mais recente deste banco de dados recebe validação do módulo de confirmação, que utiliza um zkBridge com a prova de consenso Casper FFG do Ethereum.
=nil; e zkSharding são uma culminação de produtos que a Fundação =nil; desenvolveu ao longo dos últimos 4 anos. Seu objetivo é ser a primeira solução componível, escalável e universal de zkRollup L2 Ethereum. Estamos animados para compartilhar mais detalhes de implementação ao longo dos próximos meses. Certifique-se de seguir nosso Twitter para se manter atualizado com nosso progresso!
Para os tecnicamente inclinados, desenvolvemosum guia separado e abrangenteque se aprofunda nos detalhes de =nil; e zkSharding. Este guia é a sua porta de entrada para entender as complexidades por trás dessa abordagem, equipado com todos os detalhes técnicos e preliminares que você precisa.
Aprofunde-se em nosso guia técnico agora e participe da conversa sobre DiscordeTelegram. Vamos explorar juntos as possibilidades ilimitadas do zkSharding!
TL;DR
Hoje, as soluções de camada 2 sacrificam escalabilidade pela fragmentação de estado. Apresentamos um design de camada 2 (L2), =nil;, que eleva os limites da escalabilidade do Ethereum sem comprometer os benefícios de um ambiente de execução unificado. A solução combina um mecanismo de fragmentação dinâmica com acesso verificável aos dados do Ethereum, protegido por tecnologias de conhecimento zero. Os elementos-chave incluem:
Através de zkSharding =nil; beneficia-se das vantagens dos designs monolíticos e modulares, incluindo:
Escalabilidade
Ambiente de Execução Unificado
Segurança
Funcionalidade
No nível mais baixo, o estado de =nil; é particionado no shard primário e em vários shards secundários. O papel do shard principal é sincronizar e consolidar dados dos shards secundários. Ele usa o Ethereum tanto como sua Camada de Disponibilidade de Dados quanto como verificador para provas de transição de estado, semelhante às operações típicas de zkRollups.
Os shards secundários funcionam como “trabalhadores”, executando transações de usuário. Esses shards mantêm liquidez e dados unificados por meio de um protocolo de mensagens entre shards, eliminando qualquer fragmentação entre eles.
Cada fragmentação é supervisionada por um comitê de validadores. Há uma rotação periódica desses validadores entre as fragmentações. Além disso, as atualizações do estado de uma fragmentação são verificadas na fragmentação principal usando zkEVM.
Para ilustrar o fluxo de transação desde a iniciativa do usuário até a confirmação no Ethereum, considere as seguintes etapas:
Este esboço pressupõe que a transação do usuário não ativa o protocolo de mensagens entre fragmentos. No entanto, neste caso, o fluxo da transação permanece o mesmo com a diferença de que a transação do usuário pode desencadear a criação de novas transações em outros fragmentos.
Com todas as contas sendo distribuídas entre fragmentos, isso pode parecer semelhante ao problema de fragmentação de dados encontrado na abordagem de rollups específicos de aplicativos. No entanto, a diferença chave está em como a comunicação entre fragmentos é tratada: ela é integrada diretamente no protocolo geral, em vez de ser gerenciada por pontes externas separadas.
Para garantir a segurança de cada fragmentação secundária, seu comitê validador é obrigado a comprovar suas transições de estado para o primário para garantir que nenhuma fraude tenha ocorrido dentro de um grupo de validadores menor. Cada comitê de validadores de fragmentação tem tarefas adicionais além da manutenção da fragmentação. Os validadores são responsáveis por rastrear tipos específicos de eventos, ou seja, mensagens entre fragmentações, dentro de "fragmentações próximas". As fragmentações próximas são determinadas com base na distância de Hamming nos identificadores de fragmentação.
=nil;s zkEVM é um zkEVM Tipo-1 compilado com zkLLVM. Para entender as diferenças entre zkEVMs mais tradicionais e o zkEVM da =nil;, precisamos discutir as limitações associadas ao processo de definição de circuito que subjaz aos zkEVMs. O circuito zkEVM é uma parte crítica, responsável por uma prova de transição de estado a ser considerada correta, geralmente definida com algum zkDSL personalizado ou simplesmente uma biblioteca. Tal forma de definição de circuito traz problemas relacionados a:
=nil; zkEVM está efetivamente lidando com todos esses desafios ao ser:
O zkEVM compilado via zkLLVM é seguro por design, aproveitando o evmone para garantir completa consistência com o EVM utilizado em produção do Ethereum. O zkLLVM (C++ ou Rust) compila automaticamente para o circuito, o que significa que erros humanos são removidos do processo de definição do circuito.
Além disso, porque =nil; zkEVM é compilado via zkLLVM, é naturalmente mais flexível (e, portanto, à prova de futuro) do que circuitos definidos manualmente, pois é facilmente ajustável e a geração de circuitos é automática. Também é mais auditável, o que significa que sua segurança não vem ao custo de incluir os últimos EIPs adicionados ao Ethereum.
Como o shard primário e os shards secundários são diferentes em relação às suas tarefas dedicadas - os shards secundários focam no processamento de transações enquanto o shard primário foca na sincronização de dados - eles têm abordagens diferentes para a disponibilidade de dados (DA), o que ajuda a recuperar dados de estado em situações de emergência. Isso significa:
Essa disposição é estabelecida ao lançar dois tipos de fragmentos no início: aqueles com uma solução DA separada e externa e aqueles sem. Nas fases subsequentes, apenas fragmentos da mesma categoria DA podem ser mesclados. Isso significa que durante sua criação, cada conta deve ser mapeada para uma categoria DA específica.
Além disso, este framework pode ser expandido para incluir outros tipos de DA.
Um dos nossos objetivos principais é otimizar a composição de aplicativos e evitar a fragmentação de liquidez, portanto, naturalmente, a abordagem zkSharding seria incompleta sem acesso sem confiança ao estado do Ethereum. Isso significa =nil; oferece total composabilidade e integração transparente com o Ethereum por meio do módulo de Provedor de Dados.
O Provedor de Dados opera de forma independente do armazenamento de dados do shard, sincroniza suas informações com um banco de dados externo e injeta a impressão digital do Ethereum do último estado do banco de dados monitorado (representado pelo hash do bloco Ethereum) no bloco do shard. O estado mais recente deste banco de dados recebe validação do módulo de confirmação, que utiliza um zkBridge com a prova de consenso Casper FFG do Ethereum.
=nil; e zkSharding são uma culminação de produtos que a Fundação =nil; desenvolveu ao longo dos últimos 4 anos. Seu objetivo é ser a primeira solução componível, escalável e universal de zkRollup L2 Ethereum. Estamos animados para compartilhar mais detalhes de implementação ao longo dos próximos meses. Certifique-se de seguir nosso Twitter para se manter atualizado com nosso progresso!
Para os tecnicamente inclinados, desenvolvemosum guia separado e abrangenteque se aprofunda nos detalhes de =nil; e zkSharding. Este guia é a sua porta de entrada para entender as complexidades por trás dessa abordagem, equipado com todos os detalhes técnicos e preliminares que você precisa.
Aprofunde-se em nosso guia técnico agora e participe da conversa sobre DiscordeTelegram. Vamos explorar juntos as possibilidades ilimitadas do zkSharding!