Olá,
A escalabilidade de transações tem sido o assunto da cidade. Temos estado a explorar como Monad ajuda a escalar TPS ao longo das últimas semanas.
A nota abaixo é uma explicação de como Monad funciona escrita por@desh_saurabhConsidere se inscrever noDecentralised.cose você gosta de ler explicadores baseados em dados sobre tudo relacionado ao Web3. Vejo você do outro lado!
TPS é uma métrica pela qual somos obcecados. Queremos que nossas cadeias suportem um TPS mais alto, pois poderiam suportar mais usuários e aplicações. O gráfico abaixo mostra os números de TPS para Ethereum e L2s. Nenhuma cadeia jamais ultrapassou a marca de 100 TPS. Note que TPS é um termo geral para medir a escala. TPS é impreciso porque nem todas as transações são iguais, pois diferem em complexidade. Mas usamos TPS como medida de escala por simplicidade.
O que fazemos se quisermos aumentar o TPS?
Monad, uma nova L1 compatível com EVM que recentemente levantou $225 milhões, está construindo o EVM do zero em vez de usá-lo como está. Escolheu esta terceira abordagem para aumentar a escalabilidade.
Discutimos algumas mudanças significativas que Monad traz para a mesa.
A Máquina Virtual Ethereum (EVM) executa transações em série. Até que uma transação seja executada, a próxima transação precisa esperar. Pense da seguinte maneira. Suponha que haja uma plataforma em um depósito de montagem de motocicletas. Múltiplos caminhões descarregam peças de motocicletas (de forma que cada caminhão tenha todas as peças necessárias para criar 50 motocicletas). O depósito de montagem realiza quatro funções diferentes com equipes dedicadas - descarregamento, classificação, montagem e carregamento.
Com a configuração atual do EVM, há apenas uma plataforma, e o mesmo local é usado para carga e descarga. Portanto, quando o caminhão está estacionado, os componentes da motocicleta são descarregados, classificados, montados e carregados no mesmo caminhão. Enquanto a equipe de classificação está trabalhando, todas as outras equipes estão apenas esperando. Assim, se você pensar em seus trabalhos como slots diferentes, cada equipe trabalha apenas uma vez a cada quatro slots. Isso leva a ineficiências significativas, destacando a necessidade de uma abordagem mais simplificada.
Agora, imagine que existem quatro plataformas com áreas de carga e descarga diferentes. Mesmo que a equipe de descarga possa trabalhar com apenas um caminhão por vez, eles não precisam esperar pelos próximos três espaços. Eles podem passar diretamente para o próximo caminhão.
O mesmo vale para as equipes de classificação, montagem e carregamento. Uma vez que a carga do caminhão é descarregada, o caminhão se move para a área de carregamento e aguarda a equipe de carregamento para carregar as motocicletas montadas. Assim, o armazém com apenas uma plataforma e área de carregamento/descarregamento executa tudo sequencialmente, e o com 4 plataformas e diferentes áreas de carregamento/descarregamento está em paralelo.
Considere Monad como infraestrutura equivalente ao armazém com várias plataformas de caminhão - mas não tão simples. A complexidade aumenta quando os caminhões são dependentes. Por exemplo, e se um caminhão não tiver todas as peças para fazer 50 motocicletas? As transações nem sempre são independentes. Portanto, quando Monad as executa em paralelo, ele tem que lidar com transações dependentes entre si.
Como? Ele realiza algo chamado de execução paralela otimista. O protocolo só pode executar transações independentes em paralelo. Por exemplo, considere 4 transações com o saldo de Joel como 1 ETH -
Todas essas transações são executadas em paralelo com resultados pendentes que são confirmados um por um. As transações são reexecutadas se os resultados pendentes conflitarem com as entradas originais de qualquer transação. As transações 2 e 4 não têm resultados pendentes conflitantes com as entradas de outras transações, pois são independentes entre si. Mas 1 e 3 não são independentes.
Note que, uma vez que todas as 4 transações partem do mesmo estado, a que é considerada aqui é o saldo de Joel de 1 ETH. A saída de Joel ao enviar 0.2 ETH resulta em 0.8 ETH. Depois que Joel envia 0.1 ETH para Sid, seu saldo é de 0.9 ETH. Os resultados são comprometidos um por um, garantindo que as saídas não entrem em conflito com nenhuma das entradas. Após o resultado pendente de 1 ser comprometido, o novo saldo de Joel é de 0.8 ETH.
Esta saída entra em conflito com a entrada de 3. Portanto, agora 3 é re-executado com uma entrada de 0.8 ETH. Após a execução de 3, o saldo de Joel é de 0.7 ETH.
Neste ponto, uma pergunta óbvia é como sabemos que não teremos que reexecutar a maioria das transações. A resposta está no fato de que a reexecução não é o gargalo. O gargalo é acessar a memória do Ethereum. Acontece que a forma como o Ethereum armazena seu estado no banco de dados torna difícil (demorado e, portanto, caro) acessar o estado. É aqui que entra a outra melhoria do Monad - o MonadDb. O Monad construiu seu banco de dados de forma a reduzir os custos associados às operações de leitura.
Quando uma transação precisa ser reexecutada, todos os inputs já estão na memória cache, o que é significativamente mais fácil de acessar em comparação com o estado geral.
Solana tem 50k TPS em sua testnet, mas faz cerca de 1k na mainnet agora. Monad afirma ter alcançado 10k TPS reais em sua testnet interna. Embora isso nem sempre seja indicativo de desempenho no mundo real, estamos ansiosos para ver como o Monad funciona na natureza.
Este artigo originalmente intitulado "Compreendendo Monad" é reproduzido de [chaincatcher]. Todos os direitos autorais pertencem ao autor original [Decentralised.Co]. Se você tiver alguma objeção à reimpressão, entre em contato com o Equipe Gate Learn, a equipe lidará com isso o mais rápido possível.
Aviso Legal: As visões e opiniões expressas neste artigo representam apenas as visões pessoais do autor e não constituem qualquer conselho de investimento.
As traduções do artigo para outros idiomas são feitas pela equipe Gate Learn. A menos que mencionado, copiar, distribuir ou plagiar os artigos traduzidos é proibido.
Olá,
A escalabilidade de transações tem sido o assunto da cidade. Temos estado a explorar como Monad ajuda a escalar TPS ao longo das últimas semanas.
A nota abaixo é uma explicação de como Monad funciona escrita por@desh_saurabhConsidere se inscrever noDecentralised.cose você gosta de ler explicadores baseados em dados sobre tudo relacionado ao Web3. Vejo você do outro lado!
TPS é uma métrica pela qual somos obcecados. Queremos que nossas cadeias suportem um TPS mais alto, pois poderiam suportar mais usuários e aplicações. O gráfico abaixo mostra os números de TPS para Ethereum e L2s. Nenhuma cadeia jamais ultrapassou a marca de 100 TPS. Note que TPS é um termo geral para medir a escala. TPS é impreciso porque nem todas as transações são iguais, pois diferem em complexidade. Mas usamos TPS como medida de escala por simplicidade.
O que fazemos se quisermos aumentar o TPS?
Monad, uma nova L1 compatível com EVM que recentemente levantou $225 milhões, está construindo o EVM do zero em vez de usá-lo como está. Escolheu esta terceira abordagem para aumentar a escalabilidade.
Discutimos algumas mudanças significativas que Monad traz para a mesa.
A Máquina Virtual Ethereum (EVM) executa transações em série. Até que uma transação seja executada, a próxima transação precisa esperar. Pense da seguinte maneira. Suponha que haja uma plataforma em um depósito de montagem de motocicletas. Múltiplos caminhões descarregam peças de motocicletas (de forma que cada caminhão tenha todas as peças necessárias para criar 50 motocicletas). O depósito de montagem realiza quatro funções diferentes com equipes dedicadas - descarregamento, classificação, montagem e carregamento.
Com a configuração atual do EVM, há apenas uma plataforma, e o mesmo local é usado para carga e descarga. Portanto, quando o caminhão está estacionado, os componentes da motocicleta são descarregados, classificados, montados e carregados no mesmo caminhão. Enquanto a equipe de classificação está trabalhando, todas as outras equipes estão apenas esperando. Assim, se você pensar em seus trabalhos como slots diferentes, cada equipe trabalha apenas uma vez a cada quatro slots. Isso leva a ineficiências significativas, destacando a necessidade de uma abordagem mais simplificada.
Agora, imagine que existem quatro plataformas com áreas de carga e descarga diferentes. Mesmo que a equipe de descarga possa trabalhar com apenas um caminhão por vez, eles não precisam esperar pelos próximos três espaços. Eles podem passar diretamente para o próximo caminhão.
O mesmo vale para as equipes de classificação, montagem e carregamento. Uma vez que a carga do caminhão é descarregada, o caminhão se move para a área de carregamento e aguarda a equipe de carregamento para carregar as motocicletas montadas. Assim, o armazém com apenas uma plataforma e área de carregamento/descarregamento executa tudo sequencialmente, e o com 4 plataformas e diferentes áreas de carregamento/descarregamento está em paralelo.
Considere Monad como infraestrutura equivalente ao armazém com várias plataformas de caminhão - mas não tão simples. A complexidade aumenta quando os caminhões são dependentes. Por exemplo, e se um caminhão não tiver todas as peças para fazer 50 motocicletas? As transações nem sempre são independentes. Portanto, quando Monad as executa em paralelo, ele tem que lidar com transações dependentes entre si.
Como? Ele realiza algo chamado de execução paralela otimista. O protocolo só pode executar transações independentes em paralelo. Por exemplo, considere 4 transações com o saldo de Joel como 1 ETH -
Todas essas transações são executadas em paralelo com resultados pendentes que são confirmados um por um. As transações são reexecutadas se os resultados pendentes conflitarem com as entradas originais de qualquer transação. As transações 2 e 4 não têm resultados pendentes conflitantes com as entradas de outras transações, pois são independentes entre si. Mas 1 e 3 não são independentes.
Note que, uma vez que todas as 4 transações partem do mesmo estado, a que é considerada aqui é o saldo de Joel de 1 ETH. A saída de Joel ao enviar 0.2 ETH resulta em 0.8 ETH. Depois que Joel envia 0.1 ETH para Sid, seu saldo é de 0.9 ETH. Os resultados são comprometidos um por um, garantindo que as saídas não entrem em conflito com nenhuma das entradas. Após o resultado pendente de 1 ser comprometido, o novo saldo de Joel é de 0.8 ETH.
Esta saída entra em conflito com a entrada de 3. Portanto, agora 3 é re-executado com uma entrada de 0.8 ETH. Após a execução de 3, o saldo de Joel é de 0.7 ETH.
Neste ponto, uma pergunta óbvia é como sabemos que não teremos que reexecutar a maioria das transações. A resposta está no fato de que a reexecução não é o gargalo. O gargalo é acessar a memória do Ethereum. Acontece que a forma como o Ethereum armazena seu estado no banco de dados torna difícil (demorado e, portanto, caro) acessar o estado. É aqui que entra a outra melhoria do Monad - o MonadDb. O Monad construiu seu banco de dados de forma a reduzir os custos associados às operações de leitura.
Quando uma transação precisa ser reexecutada, todos os inputs já estão na memória cache, o que é significativamente mais fácil de acessar em comparação com o estado geral.
Solana tem 50k TPS em sua testnet, mas faz cerca de 1k na mainnet agora. Monad afirma ter alcançado 10k TPS reais em sua testnet interna. Embora isso nem sempre seja indicativo de desempenho no mundo real, estamos ansiosos para ver como o Monad funciona na natureza.
Este artigo originalmente intitulado "Compreendendo Monad" é reproduzido de [chaincatcher]. Todos os direitos autorais pertencem ao autor original [Decentralised.Co]. Se você tiver alguma objeção à reimpressão, entre em contato com o Equipe Gate Learn, a equipe lidará com isso o mais rápido possível.
Aviso Legal: As visões e opiniões expressas neste artigo representam apenas as visões pessoais do autor e não constituem qualquer conselho de investimento.
As traduções do artigo para outros idiomas são feitas pela equipe Gate Learn. A menos que mencionado, copiar, distribuir ou plagiar os artigos traduzidos é proibido.