Pular para o conteúdo
0%

O que é um Mempool?

Alchemy team headshot

Escrito por Alchemy

Publicado em 7 de abril de 20224 min de leitura

Em uma transação de blockchain, uma mempool, ou memory pool, é uma lista de transações pendentes aguardando validação de um node antes de serem incluídas em um bloco na blockchain. Isso é semelhante ao uso de ambientes de 'Staging' no desenvolvimento de software tradicional para realizar testes e controle de qualidade antes de liberar para produção.

Enquanto os ambientes de 'Staging' tradicionais são centralizados, cada node tem sua própria mempool para gerenciar. Vamos observar o fluxo de transações para entender o propósito da mempool e como, ao acessá-la, podemos obter informações importantes:

Fluxo de transações do Ethereum

As transações do Ethereum se dividem em 3 categorias:

1) Transferência simples - valor é enviado de um endereço público para outro endereço. Isso pode ser um pagamento por um NFT ou por um serviço.

2) Deploy de um smart contract - sempre que um smart contract é implantado na blockchain, isso cria uma transação.

3) Execução de um smart contract - quando um endereço deseja enviar fundos ou dados para um endereço de smart contract.

Você pode monitorar transações do Ethereum usando a ferramenta de monitoramento da Alchemy, e encontrar o histórico de transações de um determinado endereço usando ferramentas como a Alchemy Transfers API

Todo tipo de transação do Ethereum segue o mesmo ciclo de vida de transação:

1) Um usuário cria uma transação e assina com sua chave privada.

2) Um node recebe a transação e a armazena na mempool

3) Enquanto está na mempool, o node realiza testes de validação da transação. Se a mempool passa nos testes, o status da transação muda para 'Pending'

4) O node transmite a transação pendente para todos os outros nodes da rede, para que a incluam em suas próprias mempools.

5) Um construtor de bloco então incluirá as transações com os preços de gas mais altos quando um novo bloco for criado. Isso moverá a transação para um estado 'Successful'.

6) As transações receberão confirmações à medida que o node adicionar cada novo bloco após aquele em que a transação foi incluída. Isso oferece garantia de que a transação foi adicionada permanentemente à blockchain, já que o risco de uma reorganização de bloco diminui com o tempo.

Diagrama do ciclo de vida de uma transação Ethereum, desde a assinatura até a confirmação, passando pela mempool
Fluxo de transação Ethereum

Você pode aprender mais sobre o envio de transações e enviar a sua própria aqui.

Propósito de uma mempool

Como as blockchains são imutáveis, é importante que as transações registradas na blockchain sejam válidas e sem erros. O node que hospeda a mempool desempenha um papel importante na validação de cada transação antes que o processo de inclusão na blockchain seja iniciado.

Para desenvolvedores, é importante entender os testes de validação para compreender por que as transações podem falhar ou ficar presas no estado 'Pending':

1. Disponibilidade de fundos

O node valida se o endereço remetente tem fundos suficientes para cobrir tanto o valor enviado quanto o gas necessário para completar a transação. Se essa validação falhar, a transação será removida da mempool. É importante usar os parâmetros corretos de envio e o endereço de destino correto para garantir que essa validação seja aprovada.

2. Validade das assinaturas da transação

Cada transação precisa ser assinada pelo endereço do remetente. Isso serve para identificar que o remetente é de fato o dono do endereço. O node validará se a assinatura anexada é a correta para o endereço do remetente.

Diagrama de um node validando a assinatura de uma transação em relação ao endereço do remetente
Validade das assinaturas de transação [Fonte]

3. Valor correto do nonce

O valor do nonce é o número de transações que foram enviadas a partir do endereço remetente. Cada vez que um remetente envia uma nova transação, o valor do nonce é aumentado em 1. O valor do nonce é importante porque força cada transação de um determinado endereço a acontecer na ordem em que foram enviadas.

Diagrama de um node validando o valor do nonce de uma transação
Validação do valor de Nonce pelo node

Quando os valores de nonce das transações não podem ser duplicados ou pulados, isso evita o problema de gasto duplo ou gasto excessivo dos fundos disponíveis. O node valida se o valor de nonce correto está anexado à transação pendente. Se esse teste falhar, a transação não avançará.

4. Preço do gas

Dependendo da mempool, existe um limite para quantas transações podem estar na mempool ao mesmo tempo. O Geth, o cliente Ethereum popular, tem um limite padrão de 4096 transações pendentes e 1024 em fila. Quando esse limite é atingido, as transações com os preços de gas mais baixos são removidas do pool para gerenciar o espaço.

Acessar uma mempool

Uma grande vantagem da estrutura da mempool é que transações substitutas podem sobrescrever transações pendentes para corrigi-las, acelerá-las ou cancelá-las por completo.

Além de corrigir transações pendentes presas em uma mempool, acessar uma mempool pode ser útil em outros casos, como:

1. Estimativa de taxas de gas

Observar a lista atual de transações pendentes e suas respectivas taxas pode ajudar a evitar o pagamento excessivo de taxas.

2. Mineração de NFT

Usando um scanner de mempool, os usuários podem obter informações sobre transações pendentes que interagem com contratos de NFT e superar essas transações com taxas de gas mais altas.

3. Insights de desempenho

Usando serviços como a Notify API, desenvolvedores de smart contracts podem obter insights sobre a atividade de seus smart contracts a partir da mempool. As transações pendentes podem fornecer informações sobre bugs e vulnerabilidades de um smart contract.

Conclusão

Uma mempool desempenha um papel importante no funcionamento e na saúde de uma blockchain. Permitir que os nodes validem transações e que os mineradores priorizem transações pendentes de acordo com as taxas de gas é uma parte essencial do fluxo de transações.

Os desenvolvedores também podem usar os dados fornecidos por uma mempool para reduzir custos e problemas em seus smart contracts. As mempools costumam ser descritas como "florestas escuras" de uma blockchain, mas plataformas como as ferramentas de Alchemy Monitoring permitem que os usuários obtenham mais clareza nessa etapa crítica.

Background gradient

Construa magia blockchain

A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.