---
title: "O que é um Mempool?"
description: "Propósito e Como Acessar"
---

# O que é um Mempool?

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](https://www.alchemy.com/monitor) 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](https://www.alchemy.com/overviews/what-is-a-reorg) de bloco diminui com o tempo.

<ImageBlock
  src="https://media.alchemy.com/1703772601-ethereum-transaction-flow.jpeg"
  alt="Diagrama do ciclo de vida de uma transação Ethereum, desde a assinatura até a confirmação, passando pela mempool"
  width={1335}
  height={1600}
  caption="Fluxo de transação Ethereum"
/>

Você pode aprender mais sobre o envio de transações e enviar a sua própria [aqui](https://www.alchemy.com/docs/how-to-send-transactions-on-ethereum).

## **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.

<ImageBlock
  src="https://media.alchemy.com/1703772721-validity-of-transaction-signatures.png"
  alt="Diagrama de um node validando a assinatura de uma transação em relação ao endereço do remetente"
  width={553}
  height={408}
  caption="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.

<ImageBlock
  src="https://media.alchemy.com/1703772853-correct-nonce-value.png"
  alt="Diagrama de um node validando o valor do nonce de uma transação"
  width={849}
  height={498}
  caption="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](https://www.alchemy.com/overviews/what-is-a-geth-node-and-how-to-run-one), 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](https://www.alchemy.com/docs/reference/webhooks-overview), 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](https://www.alchemy.com/blog/application-monitoring-tools) permitem que os usuários obtenham mais clareza nessa etapa crítica.
