Otimização de Paralelismo EVM: Aumentar o Desempenho do Processamento de Transações
Como é bem conhecido, o EVM é o motor de execução central do Ethereum, responsável pela execução de contratos inteligentes. Para garantir a consistência dos resultados da execução dos contratos em diferentes nós, o EVM utiliza tecnologia de máquina virtual, alcançando compatibilidade entre plataformas.
Os contratos inteligentes, ao serem implementados na cadeia, são primeiramente compilados em bytecode EVM. Quando a EVM executa o contrato, lê essas instruções em bytecode em ordem, e cada instrução tem um custo de Gas correspondente. A EVM rastreia o consumo de Gas durante a execução das instruções, e a quantidade consumida depende da complexidade da operação.
A EVM tradicional processa transações de maneira serial, com todas as transações sendo executadas em uma única fila. Este design é simples e fácil de manter, mas à medida que o número de usuários aumenta e as exigências de TPS e capacidade de throughput aumentam, os gargalos de desempenho da execução serial tornam-se cada vez mais evidentes, especialmente no Layer 2.
Além do EVM, outro componente central relacionado à execução de transações no go-ethereum é o stateDB, que é usado para gerenciar o estado das contas e o armazenamento de dados. O EVM altera os dados no stateDB a cada execução de transação, refletindo-se, por fim, na árvore de estado global.
No modo serial, as transações devem ser executadas em ordem. Se houver uma transação de contrato complexo que demore muito, as outras transações só podem esperar, não conseguindo aproveitar plenamente os recursos de hardware, o que limita bastante a eficiência.
Para resolver este problema, a indústria propôs uma solução de otimização paralela de múltiplas threads para o EVM. Esta solução permite que vários threads processem várias transações simultaneamente, podendo aumentar a eficiência em várias vezes. No entanto, a execução paralela enfrenta o desafio de conflitos de estado, sendo necessário tomar medidas adequadas.
Algumas ideias para a otimização paralela do EVM são: atribuir um banco de dados de estado temporário (pending-stateDB) para cada thread. Quando a thread executa transações, as alterações de estado são armazenadas temporariamente no pending-stateDB, em vez de modificar diretamente o stateDB global. Após a execução de todas as transações, as alterações no pending-stateDB são sincronizadas com o stateDB global.
Este esquema também otimiza as operações de leitura e escrita: ao ler, primeiro verifica o pending-stateDB; se não houver, lê o global stateDB; as operações de escrita são registradas no pending-stateDB e, após a execução, são mescladas no global stateDB.
Para lidar com conflitos de estado, o plano introduziu um mecanismo de deteção de conflitos. Monitora os conjuntos de leitura e escrita de diferentes transações e, ao detetar um conflito, marca as transações relacionadas como necessitando de ser reexecutadas.
A otimização de paralelismo em múltiplas threads melhorou significativamente o desempenho da EVM, especialmente ao lidar com contratos inteligentes complexos. Estudos mostram que, sob cargas de trabalho de baixo conflito, o TPS pode aumentar de 3 a 5 vezes; sob cargas de alto conflito, teoricamente pode chegar a 60 vezes.
Esta solução de otimização paralela, através de uma biblioteca de estados temporários e deteção de conflitos, alcançou a paralelização em larga escala das transações, garantindo a consistência dos estados, e lançou uma base importante para o desenvolvimento do Rollup no Ethereum. No futuro, ainda será possível melhorar o desempenho através da otimização da eficiência de armazenamento, do tratamento de cenários de alta colisão, e da aceleração por GPU.
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.
18 Curtidas
Recompensa
18
9
Compartilhar
Comentário
0/400
AlphaBrain
· 8h atrás
Com esse nível ainda acelera 60 vezes
Ver originalResponder0
SighingCashier
· 21h atrás
60 vezes? Como é que o desempenho, de repente, até à lua?
Ver originalResponder0
AirdropFatigue
· 07-16 10:30
Para que serve tanto trabalho? De qualquer forma, vou ficar deitado.
Ver originalResponder0
¯\_(ツ)_/¯
· 07-14 04:40
Os usuários finalmente não precisam esperar até o fim do mundo.
Ver originalResponder0
ReverseTradingGuru
· 07-14 04:38
Finalmente algo realmente hardcore.
Ver originalResponder0
TxFailed
· 07-14 04:34
psa: aprendi sobre evm paralelo da maneira cara... rip meus 2,3 eth
Ver originalResponder0
rugpull_survivor
· 07-14 04:33
Ouvi dizer que vai ser quase 60 vezes mais rápido? Pode reduzir o gás?
Ver originalResponder0
SilentAlpha
· 07-14 04:33
60 vezes, isso não vai fazer um lucro enorme?
Ver originalResponder0
LiquiditySurfer
· 07-14 04:19
O Martini já atingiu o fundo, finalmente não é preciso esperar pelo gás.
Otimização paralela do EVM aumenta o desempenho do processamento de transações do Ethereum em até 60 vezes.
Otimização de Paralelismo EVM: Aumentar o Desempenho do Processamento de Transações
Como é bem conhecido, o EVM é o motor de execução central do Ethereum, responsável pela execução de contratos inteligentes. Para garantir a consistência dos resultados da execução dos contratos em diferentes nós, o EVM utiliza tecnologia de máquina virtual, alcançando compatibilidade entre plataformas.
Os contratos inteligentes, ao serem implementados na cadeia, são primeiramente compilados em bytecode EVM. Quando a EVM executa o contrato, lê essas instruções em bytecode em ordem, e cada instrução tem um custo de Gas correspondente. A EVM rastreia o consumo de Gas durante a execução das instruções, e a quantidade consumida depende da complexidade da operação.
A EVM tradicional processa transações de maneira serial, com todas as transações sendo executadas em uma única fila. Este design é simples e fácil de manter, mas à medida que o número de usuários aumenta e as exigências de TPS e capacidade de throughput aumentam, os gargalos de desempenho da execução serial tornam-se cada vez mais evidentes, especialmente no Layer 2.
Além do EVM, outro componente central relacionado à execução de transações no go-ethereum é o stateDB, que é usado para gerenciar o estado das contas e o armazenamento de dados. O EVM altera os dados no stateDB a cada execução de transação, refletindo-se, por fim, na árvore de estado global.
No modo serial, as transações devem ser executadas em ordem. Se houver uma transação de contrato complexo que demore muito, as outras transações só podem esperar, não conseguindo aproveitar plenamente os recursos de hardware, o que limita bastante a eficiência.
Para resolver este problema, a indústria propôs uma solução de otimização paralela de múltiplas threads para o EVM. Esta solução permite que vários threads processem várias transações simultaneamente, podendo aumentar a eficiência em várias vezes. No entanto, a execução paralela enfrenta o desafio de conflitos de estado, sendo necessário tomar medidas adequadas.
Algumas ideias para a otimização paralela do EVM são: atribuir um banco de dados de estado temporário (pending-stateDB) para cada thread. Quando a thread executa transações, as alterações de estado são armazenadas temporariamente no pending-stateDB, em vez de modificar diretamente o stateDB global. Após a execução de todas as transações, as alterações no pending-stateDB são sincronizadas com o stateDB global.
Este esquema também otimiza as operações de leitura e escrita: ao ler, primeiro verifica o pending-stateDB; se não houver, lê o global stateDB; as operações de escrita são registradas no pending-stateDB e, após a execução, são mescladas no global stateDB.
Para lidar com conflitos de estado, o plano introduziu um mecanismo de deteção de conflitos. Monitora os conjuntos de leitura e escrita de diferentes transações e, ao detetar um conflito, marca as transações relacionadas como necessitando de ser reexecutadas.
A otimização de paralelismo em múltiplas threads melhorou significativamente o desempenho da EVM, especialmente ao lidar com contratos inteligentes complexos. Estudos mostram que, sob cargas de trabalho de baixo conflito, o TPS pode aumentar de 3 a 5 vezes; sob cargas de alto conflito, teoricamente pode chegar a 60 vezes.
Esta solução de otimização paralela, através de uma biblioteca de estados temporários e deteção de conflitos, alcançou a paralelização em larga escala das transações, garantindo a consistência dos estados, e lançou uma base importante para o desenvolvimento do Rollup no Ethereum. No futuro, ainda será possível melhorar o desempenho através da otimização da eficiência de armazenamento, do tratamento de cenários de alta colisão, e da aceleração por GPU.