Nas últimas semanas, não compartilhei muitas atualizações sobre o @ethrex_client, nosso cliente de execução L1 @class_lambda @ethereum e a pilha ZK L2. Siga@ethrex_client para saber mais sobre tudo o que estamos fazendo. No L1, já estamos executando com sucesso as redes de teste Ethereum e no L2, estamos executando redes de teste para os aplicativos de identidade e DeFi que estamos construindo para e com parceiros. Sinceramente, acredito que estamos perto de ter a base de código e a pilha mais simples para manter, atualizar e modificar no Ethereum. Não teríamos conseguido chegar a este ponto sem verificar o código de @NethermindEth e @go_ethereum Com meus parceiros @rj_aligned, @fran_aligned da @alignedlayer e @SantiDiPaolo, @AguuMg de @PolFinance_ estamos prestes a lançar um dos primeiros whitepapers sobre um RWA L2s que será alimentado pela Ethrex e @alignedlayer. Temos muitos mais chegando, mas estou particularmente animado com este, pois ele fará a ponte entre um caso de uso muito interessante do TradFi e do DeFi. Temos como consultores e parceiros algumas das equipes mais fortes do setor. Estou ansioso para compartilhar mais sobre este projeto. Atualizações L1 Temos trabalhado em muitas frentes. Melhoramos a observabilidade com o Grafana, removemos recursos não utilizados para simplificar a base de código e adicionamos suporte para o endpoint 'engine_getBlobsV1'. Registro de alterações: feat(l1): ponto de extremidade de solicitação 'engine_getBlobsV1' (#3636) Chore(L1): Remover suporte ao RedB (#4103) Refactor(L1): Remova Usizes desnecessários da caixa do blockchain (#4110) Correção (L1): Clone de estado desnecessário removido (# 4117) Fix (L1): Use a imagem adequada do Docker para criar redes locais. (#4131) Chore(L1): Adicione o tempo do bloco ao painel do Grafana. (#4112) fix(l1): subtraia os tempos de leitura do banco de dados da execução do bloco. (#4051) CHORE(L1): melhorias métricas. (#4118) CHORE(LEVM): Melhorar a organização do novo executor de teste LEVM (#3958) L2 De acordo com nossa abordagem minimalista, removemos uma quantidade significativa de código de bancos de dados L2 não utilizados. Continuamos a simplificar a base de código e eliminar o código morto. Além disso, o CI foi estabilizado após a correção de um bug relacionado aos preços do gás. Estamos comparando o L2 em duas frentes: - Custo de manutenção da rede L2: estamos ajustando os parâmetros L2 simulando vários cenários com diferentes cargas de trabalho de transação e configurações de rede. O objetivo é determinar o custo aproximado da comissão de manutenção por transação que os usuários devem arcar para que a rede alcance a autossustentabilidade. - Benchmarks de geração de prova de execução de bloco isolado: Usando a ferramenta ethrex-replay, estamos testando blocos de Hoodi, Sepolia e Mainnet para identificar possíveis bugs na base de código e medir o desempenho de nosso provador. No lado do ethrex-replay, a ferramenta é estável o suficiente e temos infraestrutura configurada para reproduzir periodicamente as execuções e provas de blocos das redes públicas. Agora estamos resolvendo bugs que surgiram durante essas execuções. Alguns bugs resultam de erros lógicos no ethrex, enquanto outros estão relacionados ao uso de memória. Os primeiros estão resolvidos e estamos fazendo progressos significativos no segundo. Também começamos a analisar @ziskvm e @0xLita ZKVMs para uma possível integração de curto prazo. Já oferecemos suporte @RiscZero e @SuccinctLabs. Esta semana, mesclamos um PR que estabiliza o ethrex-replay, permitindo-nos identificar e resolver dois bugs no ethrex. Essas correções também foram mescladas. O primeiro bug envolveu um caso extremo em nossa pré-compilação ecrecover, onde uma entrada específica causou falha na execução devido a uma incompatibilidade de gás. Após uma investigação minuciosa, rastreamos o problema até a biblioteca secp256k1 oficial corrigida pelo SP1. Resolvemos isso migrando para a biblioteca k256 corrigida pelo SP1. O segundo bug resultou de uma suposição incorreta sobre o comprimento de bits de um tipo usize em parte da base de código. Para evitar problemas semelhantes, realizamos uma revisão abrangente da base de código e enviamos várias PRs para restringir o uso de tamanho reduzido a dois casos específicos: indexação e cenários restritos por uma API ou biblioteca. Além disso, estamos adicionando suporte para executar os conjuntos de testes do EF, incluindo blockchain e testes de estado, com o SP1 para aprimorar nossa cobertura de testes e garantir a robustez em diferentes cenários de execução. Com esses bugs resolvidos, os problemas não ocorrem mais. Estamos repetindo com sucesso novos blocos Hoodi e Sepolia, e as execuções de blocos da rede principal melhoraram significativamente, com a taxa de sucesso de execução do SP1 aumentando de 1/10 para 6/10. Esse progresso abre caminho para enfrentar nossos desafios restantes com repetições de bloco recentes: erros de falta de memória durante a execução de blocos no zkVM do SP1 e problemas de desempenho na execução e na prova. Para resolver isso, configuramos a caixa da ferramenta para criação de perfil de memória usando a caixa Jemalloc. Também estamos trabalhando para apoiar a repetição de blocos históricos. Um MVP para esse recurso está em um rascunho de PR e tem um bom desempenho com clientes ethrex, reth e geth, mas encontra problemas com clientes nethermind. Antes de lançar a primeira versão, pretendemos otimizar as solicitações de RPC para garantir downloads precisos de dados de bloco, mesmo ao usar provedores de RPC gratuitos, para a maioria dos blocos. Melhorias no DevEx: - Corrigimos nossas compilações binárias para não exigir mais CUDA como uma dependência padrão em determinados sistemas operacionais e arquiteturas. Essa correção está incluída na versão mais recente. - Um PR foi enviado para atualizar a versão do ethrex no rex, garantindo a compatibilidade com as alterações mais recentes no ethrex L2. - Começamos a desenvolver uma nova guia para o monitor ethrex L2 em ambientes de desenvolvimento. Essa guia exibirá informações relevantes para o desenvolvedor, como uma lista de contas avançadas e os endereços dos contratos L1 e L2. Registro de alterações: - Refactor(L2): Substituídas as constantes de diferença de estado usize. - Reature(L1,L2): Configurado ethrex-replay para criação de perfil de memória. - Refactor(L1): Removido o uso desnecessário de tamanho na caixa do blockchain (relacionado à correção de bug). - Feature(L1,L2): Adicionados novos comandos à testemunha de execução. - Correção (LEVM): Resolvidos problemas relacionados à arquitetura de 32 bits (relacionados à correção de bug). - Refactor(LEVM): Implementação ECRuper atualizada para usar K256 em vez de SECP256K1 (relacionado à correção de bug). - ci(l1,l2): separaram compilações de GPU e adotaram o destino x86-64-v2. Desempenho Esta semana, continuamos nosso foco no consumo de CPU e benchmarks. Em relação ao consumo de CPU, identificamos 2 casos diferentes, um em que a construção de blocos está presente e outro em que não. Estamos priorizando aqueles sem construção de blocos, pois eles estão sempre presentes e impactam outros esforços (como a sincronização instantânea). Pelo que investigamos, está completamente relacionado ao p2p. Continuaremos nossos esforços nessa frente Com relação aos benchmarks, após o aprimoramento do desempenho do modexp na semana passada, nos concentramos em algumas melhorias detectadas, como cópia de código e operações relacionadas, bem como signextend, mulmod e addmod. Continuaremos nosso foco no consumo de CPU e no desempenho do teste que identificamos como próximas etapas para possíveis melhorias, como transferências de eth e outros opcodes de levm.
11,04K