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.
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.
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:
As transações dentro de um bloco são processadas sequencialmente.
Cada transação usa uma instância EVM independente, mas compartilha o mesmo stateDB
Durante a execução do EVM, interage constantemente com o stateDB, lendo e escrevendo dados.
Após a conclusão de todas as transações, as alterações no stateDB serão submetidas à árvore de estado global.
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):
Execução paralela de diferentes transações em múltiplas threads
Cada thread utiliza um pending-stateDB independente para registar alterações de estado.
Após a conclusão de todas as transações, sincronizar as alterações do pending-stateDB com o stateDB global.
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.
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
Por fim, as alterações de vários stateDB em estado pendente são combinadas no stateDB global, gerando uma nova raiz de estado.
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.
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.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
8 gostos
Recompensa
8
5
Partilhar
Comentar
0/400
FlatTax
· 07-24 20:11
60x? Aumentar sem impostos.
Ver originalResponder0
FastLeaver
· 07-22 02:02
Muito bom, consegue aumentar o TPS em 60 vezes.
Ver originalResponder0
NftDeepBreather
· 07-22 00:27
depois o BTC retorna como rei
Ver originalResponder0
CounterIndicator
· 07-22 00:11
em alta é o topo, cair é a base
Ver originalResponder0
SerumDegen
· 07-22 00:10
apenas mais um copium para pump eth tbh... mostra-me primeiro os números reais de tps
Quebra da paralelização EVM: execução multithread melhora a capacidade de processamento de transações
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.
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.
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:
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):
Este plano faz um tratamento especial para operações de leitura e escrita:
Para evitar conflitos de estado, este plano introduziu um mecanismo de detecção de conflitos:
Por fim, as alterações de vários stateDB em estado pendente são combinadas no stateDB global, gerando uma nova raiz de estado.
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.
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.