Começamos a construir Reth em 2022 para fornecer resiliência ao Ethereum L1 e resolver a escalabilidade da camada de execução na Camada 2.
Hoje estamos entusiasmados por partilhar o percurso da Reth rumo a 1 gigagás por segundo em L2 em 2024, e o nosso roteiro a longo prazo para ir além disso.
Convidamos o ecossistema a colaborar connosco enquanto impulsionamos a fronteira do desempenho e da avaliação rigorosa no mundo das criptomoedas.
Existe um caminho muito simples para as criptomoedas alcançarem escala global e escaparem da especulação como o caso de uso dominante: as transações precisam ser baratas e rápidas.
O desempenho é tipicamente medido pela métrica “Transações Por Segundo” (TPS). Especialmente para Ethereum e outras blockchains EVM, uma medida mais matizada e talvez precisa é “gás por segundo.” Esta métrica reflete a quantidade de trabalho computacional que a rede pode lidar a cada segundo, onde “gás” é uma unidade que mede o esforço computacional necessário para executar operações como transações ou contratos inteligentes.
Padronizar em torno do gás por segundo como uma métrica de desempenho permite uma compreensão mais clara da capacidade e eficiência de uma blockchain. Também ajuda a avaliar as implicações de custo no sistema, protegendo-se contra potenciais ataques de Negação de Serviço (DOS) que poderiam explorar medições menos refinadas. Esta métrica ajuda a comparar o desempenho em diferentes correntes compatíveis com a Máquina Virtual Ethereum (EVM).
Propomos à comunidade EVM que adote gás por segundo como métrica padrão, juntamente com a incorporaçãooutras dimensões do preço do gáscriar um padrão de desempenho abrangente.
O gás por segundo é determinado dividindo o uso de gás alvo por bloco pelo tempo de bloco. Aqui, mostramos a taxa atual de gás por segundo e latência em várias cadeias EVM L1s e L2s (não exaustivas):
Enfatizamos o gás por segundo para avaliar minuciosamente o desempenho da rede EVM, capturando tanto os custos de computação quanto de armazenamento. Redes como Solana, Sui ou Aptos não estão incluídas devido aos seus modelos de custos distintos. Incentivamos esforços para harmonizar os modelos de custos em todas as redes blockchain, a fim de permitir comparações abrangentes e justas.
Estamos a trabalhar numa suite de benchmarking contínuo para Reth replicando carga de trabalho real, se quiser colaborar nisto, por favor entre em contacto. Precisamos de um TPC Benchmarkpara nodos.
Fomos parcialmente motivados a construir Reth em 2022 pela necessidade premente de ter um cliente construído para rollups em escala web. Acreditamos que temos um caminho promissor pela frente.
Reth já alcança 100-200mgas/s durante a sincronização ao vivo (incluindo a recuperação dos remetentes, a execução de transações e o cálculo do trie em cada bloco); 10x a partir daqui leva-nos ao nosso objetivo a curto prazo de 1 gigagás/s.
À medida que avançamos no desenvolvimento do Reth, nosso plano de escalonamento tem que equilibrar escalabilidade com eficiência:
As otimizações que estamos a explorar aqui não envolvem a resolução crescimento do estado, que estamos a investigar separadamente.
Aqui está um resumo de como pretendemos chegar lá:
Em toda a pilha, também estamos otimizando para IO e CPU usando o modelo de ator, para permitir que cada parte da pilha seja implantada como um serviço com controle fino sobre sua utilização. Finalmente, estamos avaliando ativamente bancos de dados alternativos, mas ainda não decidimos sobre um candidato.
O nosso objetivo aqui é maximizar o desempenho e a eficiência de um único servidor ou portátil a executar o Reth.
Em ambientes de blockchain como a Máquina Virtual Ethereum (EVM), a execução de bytecode ocorre através de um interpretador, que processa sequencialmente as instruções. Este método introduz overhead porque não executa instruções nativas de montagem diretamente, operando em vez disso através da camada VM.
A compilação Just-In-Time (JIT) aborda isso convertendo o bytecode em código de máquina nativo imediatamente antes da execução, melhorando assim o desempenho ao contornar o processo interpretativo da VM. Esta técnica, que compila contratos em código de máquina otimizado antecipadamente, está bem estabelecida em outras VMs como Java e WebAssembly.
No entanto, o JIT pode ser vulnerável a código malicioso projetado para explorar o processo JIT, ou pode ser muito lento para ser executado ao vivo durante a execução. Reth irá compilar Antes do Tempo (AOT) os contratos com maior demanda e armazená-los no disco, para evitar que o bytecode não confiável tente abusar da nossa etapa de compilação de código nativo durante a execução ao vivo.
Temos estado a trabalhar num compilador JIT/AOT para o Revm, que está atualmente a ser integrado com o Reth. Vamos tornar isto de código aberto nas próximas semanas, assim que terminarmos os nossos testes de benchmarking. Cerca de 50% do tempo de execução é gasto no intérprete EVM em média, por isso isto deverá proporcionar uma melhoria na execução do EVM de cerca de 2 vezes, embora em alguns casos mais intensivos em computação possa ser ainda mais impactante. Vamos partilhar os nossos testes de benchmarking e a integração do nosso próprio JIT EVM no Reth nas próximas semanas.
O conceito de uma Máquina Virtual Ethereum Paralela (Parallel EVM) permite o processamento simultâneo de transações, divergindo do modelo tradicional de execução em série da EVM. Temos 2 caminhos a seguir aqui:
Com base na nossa análise histórica, cerca de 80% das ranhuras de armazenamento do Ethereum são acedidas de forma independente, o que significa que o paralelismo poderia resultar numa melhoria de até 5x na execução do EVM.
Nós recentemente escreveu sobreo impacto da raiz do estado no desempenho e as diferenças entre o modelo de banco de dados Reth de outros clientes, bem como por que é importante.
No modelo Reth, calcular a raiz do estado é um processo separado da execução de transações (ver nossa código) permitindo o uso de lojas KV padrão que não precisam saber nada sobre o trie. Isso atualmente leva >75% do tempo de ponta a ponta para selar um bloco, e é uma área muito emocionante para otimizar.
Identificamos os seguintes 2 “ganhos fáceis” que podem nos dar 2-3x no desempenho da raiz do estado, sem quaisquer alterações no protocolo:
Indo além disso, vemos algumas opções avançadas ao divergir do comportamento do estado raiz do Ethereum L1:
Existem algumas perguntas aqui:
Vamos executar em vários dos pontos acima ao longo de 2024 e atingir nossa meta de 1gigagas/seg.
No entanto, a escalabilidade vertical encontra, em última instância, limites físicos e práticos. Nenhuma máquina única pode lidar com as necessidades computacionais do mundo. Pensamos que existem 2 caminhos a seguir aqui, que nos permitem escalar introduzindo mais caixas à medida que mais carga chega:
As pilhas L2 de hoje requerem a execução de vários serviços para seguir a cadeia: L1 CL, L1 EL, a função de derivação L1 -> L2 (que pode estar incluída com o L2 EL) e o L2 EL. Embora seja ótimo para modularidade, isso se torna complicado ao executar várias pilhas de nós. Imagine ter que executar 100 rollups!
Queremos permitir o lançamento de rollups no mesmo processo que o Reth e reduzir o custo operacional de executar milhares de rollups para quase zero.
Já estamos a trabalhar nisto com o nosso Projetos de Extensões de Execução([1], [2]) mais nas próximas semanas aqui.
Os sequenciadores de alto desempenho podem ter demanda suficiente em uma única cadeia que precisam escalar para além de uma única máquina. Isso não é possível nas implementações de nó monolíticas de hoje.
Queremos permitir a execução de nós Reth nativos da Cloud, implementados como um conjunto de serviços que podem ajustar automaticamente à procura de computação e utilizar o armazenamento de objetos na nuvem aparentemente infinito para persistência. Esta é uma arquitetura comum em projetos de bases de dados serverless como NeonDB, CockroachDB ou Amazon Aurora.
Verpensamentos iniciaisda nossa equipa sobre algumas formas como poderíamos abordar este problema.
Pretendemos implementar este roteiro incrementalmente para todos os utilizadores do Reth. A nossa missão é dar a todos acesso a 1 gigagas/s e além. Vamos testar as nossas otimizações no Reth AlphaNet e esperamos que as pessoas construam nós de alto desempenho modificados usando o Reth como um SDK.
Existem algumas perguntas para as quais ainda não encontramos respostas.
Não temos respostas para muitas destas perguntas, mas temos pistas iniciais promissoras suficientes para nos manter ocupados por um tempo e esperamos que esses esforços tragam frutos nos próximos meses.
Começamos a construir Reth em 2022 para fornecer resiliência ao Ethereum L1 e resolver a escalabilidade da camada de execução na Camada 2.
Hoje estamos entusiasmados por partilhar o percurso da Reth rumo a 1 gigagás por segundo em L2 em 2024, e o nosso roteiro a longo prazo para ir além disso.
Convidamos o ecossistema a colaborar connosco enquanto impulsionamos a fronteira do desempenho e da avaliação rigorosa no mundo das criptomoedas.
Existe um caminho muito simples para as criptomoedas alcançarem escala global e escaparem da especulação como o caso de uso dominante: as transações precisam ser baratas e rápidas.
O desempenho é tipicamente medido pela métrica “Transações Por Segundo” (TPS). Especialmente para Ethereum e outras blockchains EVM, uma medida mais matizada e talvez precisa é “gás por segundo.” Esta métrica reflete a quantidade de trabalho computacional que a rede pode lidar a cada segundo, onde “gás” é uma unidade que mede o esforço computacional necessário para executar operações como transações ou contratos inteligentes.
Padronizar em torno do gás por segundo como uma métrica de desempenho permite uma compreensão mais clara da capacidade e eficiência de uma blockchain. Também ajuda a avaliar as implicações de custo no sistema, protegendo-se contra potenciais ataques de Negação de Serviço (DOS) que poderiam explorar medições menos refinadas. Esta métrica ajuda a comparar o desempenho em diferentes correntes compatíveis com a Máquina Virtual Ethereum (EVM).
Propomos à comunidade EVM que adote gás por segundo como métrica padrão, juntamente com a incorporaçãooutras dimensões do preço do gáscriar um padrão de desempenho abrangente.
O gás por segundo é determinado dividindo o uso de gás alvo por bloco pelo tempo de bloco. Aqui, mostramos a taxa atual de gás por segundo e latência em várias cadeias EVM L1s e L2s (não exaustivas):
Enfatizamos o gás por segundo para avaliar minuciosamente o desempenho da rede EVM, capturando tanto os custos de computação quanto de armazenamento. Redes como Solana, Sui ou Aptos não estão incluídas devido aos seus modelos de custos distintos. Incentivamos esforços para harmonizar os modelos de custos em todas as redes blockchain, a fim de permitir comparações abrangentes e justas.
Estamos a trabalhar numa suite de benchmarking contínuo para Reth replicando carga de trabalho real, se quiser colaborar nisto, por favor entre em contacto. Precisamos de um TPC Benchmarkpara nodos.
Fomos parcialmente motivados a construir Reth em 2022 pela necessidade premente de ter um cliente construído para rollups em escala web. Acreditamos que temos um caminho promissor pela frente.
Reth já alcança 100-200mgas/s durante a sincronização ao vivo (incluindo a recuperação dos remetentes, a execução de transações e o cálculo do trie em cada bloco); 10x a partir daqui leva-nos ao nosso objetivo a curto prazo de 1 gigagás/s.
À medida que avançamos no desenvolvimento do Reth, nosso plano de escalonamento tem que equilibrar escalabilidade com eficiência:
As otimizações que estamos a explorar aqui não envolvem a resolução crescimento do estado, que estamos a investigar separadamente.
Aqui está um resumo de como pretendemos chegar lá:
Em toda a pilha, também estamos otimizando para IO e CPU usando o modelo de ator, para permitir que cada parte da pilha seja implantada como um serviço com controle fino sobre sua utilização. Finalmente, estamos avaliando ativamente bancos de dados alternativos, mas ainda não decidimos sobre um candidato.
O nosso objetivo aqui é maximizar o desempenho e a eficiência de um único servidor ou portátil a executar o Reth.
Em ambientes de blockchain como a Máquina Virtual Ethereum (EVM), a execução de bytecode ocorre através de um interpretador, que processa sequencialmente as instruções. Este método introduz overhead porque não executa instruções nativas de montagem diretamente, operando em vez disso através da camada VM.
A compilação Just-In-Time (JIT) aborda isso convertendo o bytecode em código de máquina nativo imediatamente antes da execução, melhorando assim o desempenho ao contornar o processo interpretativo da VM. Esta técnica, que compila contratos em código de máquina otimizado antecipadamente, está bem estabelecida em outras VMs como Java e WebAssembly.
No entanto, o JIT pode ser vulnerável a código malicioso projetado para explorar o processo JIT, ou pode ser muito lento para ser executado ao vivo durante a execução. Reth irá compilar Antes do Tempo (AOT) os contratos com maior demanda e armazená-los no disco, para evitar que o bytecode não confiável tente abusar da nossa etapa de compilação de código nativo durante a execução ao vivo.
Temos estado a trabalhar num compilador JIT/AOT para o Revm, que está atualmente a ser integrado com o Reth. Vamos tornar isto de código aberto nas próximas semanas, assim que terminarmos os nossos testes de benchmarking. Cerca de 50% do tempo de execução é gasto no intérprete EVM em média, por isso isto deverá proporcionar uma melhoria na execução do EVM de cerca de 2 vezes, embora em alguns casos mais intensivos em computação possa ser ainda mais impactante. Vamos partilhar os nossos testes de benchmarking e a integração do nosso próprio JIT EVM no Reth nas próximas semanas.
O conceito de uma Máquina Virtual Ethereum Paralela (Parallel EVM) permite o processamento simultâneo de transações, divergindo do modelo tradicional de execução em série da EVM. Temos 2 caminhos a seguir aqui:
Com base na nossa análise histórica, cerca de 80% das ranhuras de armazenamento do Ethereum são acedidas de forma independente, o que significa que o paralelismo poderia resultar numa melhoria de até 5x na execução do EVM.
Nós recentemente escreveu sobreo impacto da raiz do estado no desempenho e as diferenças entre o modelo de banco de dados Reth de outros clientes, bem como por que é importante.
No modelo Reth, calcular a raiz do estado é um processo separado da execução de transações (ver nossa código) permitindo o uso de lojas KV padrão que não precisam saber nada sobre o trie. Isso atualmente leva >75% do tempo de ponta a ponta para selar um bloco, e é uma área muito emocionante para otimizar.
Identificamos os seguintes 2 “ganhos fáceis” que podem nos dar 2-3x no desempenho da raiz do estado, sem quaisquer alterações no protocolo:
Indo além disso, vemos algumas opções avançadas ao divergir do comportamento do estado raiz do Ethereum L1:
Existem algumas perguntas aqui:
Vamos executar em vários dos pontos acima ao longo de 2024 e atingir nossa meta de 1gigagas/seg.
No entanto, a escalabilidade vertical encontra, em última instância, limites físicos e práticos. Nenhuma máquina única pode lidar com as necessidades computacionais do mundo. Pensamos que existem 2 caminhos a seguir aqui, que nos permitem escalar introduzindo mais caixas à medida que mais carga chega:
As pilhas L2 de hoje requerem a execução de vários serviços para seguir a cadeia: L1 CL, L1 EL, a função de derivação L1 -> L2 (que pode estar incluída com o L2 EL) e o L2 EL. Embora seja ótimo para modularidade, isso se torna complicado ao executar várias pilhas de nós. Imagine ter que executar 100 rollups!
Queremos permitir o lançamento de rollups no mesmo processo que o Reth e reduzir o custo operacional de executar milhares de rollups para quase zero.
Já estamos a trabalhar nisto com o nosso Projetos de Extensões de Execução([1], [2]) mais nas próximas semanas aqui.
Os sequenciadores de alto desempenho podem ter demanda suficiente em uma única cadeia que precisam escalar para além de uma única máquina. Isso não é possível nas implementações de nó monolíticas de hoje.
Queremos permitir a execução de nós Reth nativos da Cloud, implementados como um conjunto de serviços que podem ajustar automaticamente à procura de computação e utilizar o armazenamento de objetos na nuvem aparentemente infinito para persistência. Esta é uma arquitetura comum em projetos de bases de dados serverless como NeonDB, CockroachDB ou Amazon Aurora.
Verpensamentos iniciaisda nossa equipa sobre algumas formas como poderíamos abordar este problema.
Pretendemos implementar este roteiro incrementalmente para todos os utilizadores do Reth. A nossa missão é dar a todos acesso a 1 gigagas/s e além. Vamos testar as nossas otimizações no Reth AlphaNet e esperamos que as pessoas construam nós de alto desempenho modificados usando o Reth como um SDK.
Existem algumas perguntas para as quais ainda não encontramos respostas.
Não temos respostas para muitas destas perguntas, mas temos pistas iniciais promissoras suficientes para nos manter ocupados por um tempo e esperamos que esses esforços tragam frutos nos próximos meses.