Quebra da paralelização EVM: execução multithread melhora a capacidade de processamento de transações

robot
Geração do resumo em andamento

O caminho da paralelização do EVM: da execução serial à execução multithread

É bem conhecido que o EVM é o motor de execução central do Ethereum, responsável pela execução de contratos inteligentes. Para garantir que os contratos inteligentes em diferentes nós possam obter os mesmos resultados de execução, o EVM oferece um ambiente virtual unificado, semelhante à máquina virtual Java (JVM).

Os contratos inteligentes, ao serem implantados na blockchain, são primeiro compilados em bytecode EVM. A EVM, ao executar o contrato, lê essas instruções byte a byte, onde cada instrução tem um custo de Gas correspondente. A EVM rastreia o consumo de Gas durante a execução de cada instrução, e a quantidade consumida depende da complexidade da operação.

Usando Reddio como exemplo, explicando o caminho de otimização do EVM paralelo

A EVM tradicional processa transações de forma serial, onde todas as transações são enfileiradas em uma única fila e executadas em ordem. Esse design é simples e fácil de manter, mas à medida que o número de usuários cresce e as exigências de TPS aumentam, o gargalo de desempenho da execução serial se torna cada vez mais evidente, especialmente em soluções de Layer 2.

Usando o Reddio como exemplo, descrevendo o caminho de otimização do EVM paralelo

Além do EVM, outro componente central na execução de transações do Ethereum é o stateDB, que é usado para gerenciar o estado das contas e o armazenamento de dados. O EVM atualiza os dados no stateDB a cada execução de transação, e essas alterações são refletidas na árvore de estado global.

No modo de execução em série, o processo pelo qual o EVM e o stateDB colaboram para processar transações é o seguinte:

  1. As transações dentro de um bloco são processadas sequencialmente.
  2. Cada transação usa uma instância EVM independente, mas compartilha o mesmo stateDB
  3. Durante a execução do EVM, interage constantemente com o stateDB, lendo e escrevendo dados.
  4. Após a conclusão de todas as transações, as alterações no stateDB serão submetidas à árvore de estado global.

Usando Reddio como exemplo, explicando o caminho de otimização do EVM em paralelo

O principal problema deste modo de operação em série é que transações de contratos inteligentes complexos bloqueiam outras transações, não aproveitando plenamente os recursos de hardware.

Para resolver este problema, alguns projetos começaram a explorar soluções de otimização paralela do EVM. Tomando como exemplo um determinado projeto Layer 2, a ideia central é atribuir um banco de dados de estado temporário a cada thread (pending-stateDB):

  1. Execução paralela de diferentes transações em múltiplas threads
  2. Cada thread utiliza um pending-stateDB independente para registar alterações de estado.
  3. Após a conclusão de todas as transações, sincronizar as alterações do pending-stateDB com o stateDB global.

Usando Reddio como exemplo, descrevendo o caminho de otimização do EVM paralelo

Este plano faz um tratamento especial para operações de leitura e escrita:

  • A operação de leitura verifica primeiro o pending-stateDB; se não houver dados, então lê o global stateDB.
  • As operações de escrita são temporariamente armazenadas no pending-stateDB e não modificam diretamente o stateDB global.

Usando Reddio como exemplo, discutindo o caminho de otimização do EVM paralelo

Para evitar conflitos de estado, este plano introduziu um mecanismo de detecção de conflitos:

  • Monitorar se há sobreposição nos conjuntos de leitura e escrita de diferentes transações
  • Marcar as transações relacionadas que precisam ser reexecutadas ao descobrir um conflito

Usando Reddio como exemplo, descrevendo o caminho de otimização do EVM paralelo

Por fim, as alterações de vários stateDB em estado pendente são combinadas no stateDB global, gerando uma nova raiz de estado.

Usando Reddio como exemplo, descrevendo o caminho de otimização do EVM paralelo

Esta solução de otimização paralela pode aumentar o TPS de 3 a 5 vezes sob cargas de trabalho de baixo conflito. Em situações de alto conflito, teoricamente pode alcançar um aumento de 60 vezes.

Usando Reddio como exemplo, descrevendo o caminho de otimização do EVM paralelo

De um modo geral, a paralelização da EVM é uma direção importante para melhorar o desempenho do Ethereum e das suas Layer 2. Através de técnicas como a execução paralela multi-thread e bibliotecas de estado temporário, é possível aumentar significativamente a capacidade de processamento de transações, garantindo a consistência. No futuro, também será possível melhorar ainda mais o desempenho da EVM através da otimização da eficiência de armazenamento e da melhoria das estratégias de tratamento de conflitos.

Usando Reddio como exemplo, explicando o caminho de otimização do EVM paralelo

Usando Reddio como exemplo, explicando o caminho de otimização do EVM paralelo

Usando Reddio como exemplo, descrevendo o caminho de otimização do EVM paralelo

ETH-1.2%
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • 5
  • Compartilhar
Comentário
0/400
FlatTaxvip
· 07-24 20:11
60x? Aumentar sem impostos.
Ver originalResponder0
FastLeavervip
· 07-22 02:02
Muito bom, consegue aumentar o TPS em 60 vezes.
Ver originalResponder0
NftDeepBreathervip
· 07-22 00:27
depois o BTC retorna como rei
Ver originalResponder0
CounterIndicatorvip
· 07-22 00:11
em alta é o topo, cair é a base
Ver originalResponder0
SerumDegenvip
· 07-22 00:10
apenas mais um copium para pump eth tbh... mostra-me primeiro os números reais de tps
Ver originalResponder0
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)