Como depurar transações pendentes do Ethereum
Autor: Alchemy Team
Quando você envia uma transação para a blockchain Ethereum, para onde ela vai? O que é uma transação pendente e o que acontece antes dela ser minerada? O que é um mempool? Por que algumas das minhas transações têm sucesso e outras falham?
Vamos nos aprofundar no fluxo de uma transação na rede Ethereum, desde o momento em que você clica em "enviar" até o ponto em que a transação se torna totalmente minerada. Vamos discutir o que pode dar errado e como o conjunto de ferramentas para desenvolvedores da Alchemy pode ajudar você a depurar e ganhar visibilidade sobre esse processo.
Embora este guia seja específico para o Ethereum, os princípios centrais se aplicam basicamente a todas as blockchains!
O que é uma transação Ethereum?
Uma transação Ethereum, em sua forma mais simples, é uma solicitação de um usuário para codificar novas informações no estado permanente da blockchain. O conteúdo dessa solicitação geralmente assume uma das seguintes formas:
- Uma simples transferência de valor da conta pública do usuário para outra parte (por exemplo, enviar ETH para um comerciante)
- Codificar um novo contrato inteligente na blockchain pública que pode ser acessado por terceiros (por exemplo, iniciar um novo contrato inteligente de loteria)
- Enviar informações para um contrato inteligente existente para interagir com o contrato (por exemplo, inserir seu nome e fundos em um contrato inteligente de loteria)
O que é um mempool?
Antes de entendermos o fluxo de transações no Ethereum, primeiro precisamos entender o que é o mempool! Um mempool é uma sala de espera em um node Ethereum para transações não confirmadas, configurada especificamente para atuar como uma área de preparação. Dependendo do client que você está usando, ele também pode ser chamado de TX-POOL ou TX-QUEUE.
Transações enviadas para um node primeiro chegam ao mempool, e permanecem lá até serem totalmente confirmadas pela rede. O mempool lida com algumas etapas importantes do processo, incluindo:
- Executar uma série de testes de validação para garantir que a transação terá sucesso assim que for enviada a um miner. Algumas das validações que o node pode realizar incluem: Há fundos disponíveis para cobrir o custo de gas? A assinatura da transação é válida? O nonce é o próximo na sequência para esse endereço remetente?
- Ordenar a lista de transações a serem processadas com base em seus preços de gas. Preços de gas mais altos significam que a transação provavelmente será priorizada pelo miner.
- Compartilhar as transações pendentes com os mempools dos nodes pareados, que então continuam a encaminhá-las para outros mempools, permitindo que toda a rede visualize a lista de transações pendentes. Quando um bloco é minerado, as transações em toda a rede com os preços de gas mais altos serão confirmadas.
Como é o fluxo de uma transação Ethereum?
Agora que cobrimos o mempool, quais etapas estão envolvidas no envio de uma transação de um usuário até o armazenamento permanente dessa transação na blockchain?
- Um usuário gera uma nova transação, assina a transação com sua chave privada e a envia para um node na blockchain chamando o método eth_sendTransaction ou eth_sendRawTransaction, exposto tipicamente por meio de um serviço como a Node API da Alchemy.
- A transação é enviada para o mempool de um node.
- O mempool executa uma série de testes de validação. Se a transação passar por essas validações, ela entrará em estado pendente.
- O node transmitirá a transação para os outros nodes na blockchain, onde ela acabará em seus mempools correspondentes.
- Assim que um novo bloco é minerado por um node na blockchain, as ~200 transações pendentes com os preços de gas mais altos serão incluídas no próximo bloco da blockchain. Essas transações serão removidas do mempool, e o novo bloco e o estado do mempool se propagarão pela rede
- Depois que 5 a 7 blocos adicionais são confirmados, as chances de a blockchain se reorganizar para seguir outro fork de blocos (com um conjunto diferente de transações confirmadas) se tornam praticamente nulas. Nesse ponto, é seguro assumir que a transação está permanentemente na blockchain.

O que pode dar errado com uma transação Ethereum pendente?
1. O mempool pode estar cheio
Vamos começar simples. Existem limites para o tamanho do mempool (a menos que você esteja usando uma ferramenta como a Alchemy!), tanto para o node inteiro quanto por endereço dentro do node. Tipicamente, para o Geth, é de 4096 transações pendentes, e o Geth descartará transações pendentes mais antigas em favor de novas.
2. Seus parâmetros podem ser inválidos
Ao fazer uma transação, você precisará incluir uma variedade de parâmetros relevantes, como:
- Qual é o endereço de envio e o endereço de destino?
- Qual é o valor a ser transferido?
- Quanto gas estou disposto a usar para a transação?
- Qual deve ser o nonce atual da minha transação?
Se você cometeu um erro ao inserir esses dados, o node normalmente retornará um código de erro explicando o problema. Se você não conseguir entender a mensagem de erro ou encontrar a resposta pelo Google, visite a central de suporte da Alchemy.
3. Seu preço de gas pode estar muito baixo
Para determinar quais transações priorizar, as transações Ethereum devem ser enviadas com um preço de gas. Assim como em um leilão comum, um preço de gas mais alto significa que sua transação tem mais chances de ser incluída no próximo bloco - e um preço de gas muito baixo significa que você talvez nunca chegue à blockchain.
Como o preço do gas flutua rapidamente e de forma imprevisível ao longo do dia, com base na demanda, é muito importante que você configure esse campo corretamente. Você tem algumas opções aqui:
- Se você estiver enviando uma única transação manualmente, pode visitar o ETH Gas Station website para ver os preços de gas mais recentes e definir seu preço de acordo.
- Se você estiver enviando solicitações para um node provider como a Alchemy, a especificação JSON-RPC do Ethereum expõe um endpoint chamado eth_estimateGas que fornece uma estimativa de quanto gas você precisará para que sua transação seja minerada! Você pode usar isso para automatizar a definição de preços de gas de forma programática.
- Se você quiser receber notificações push quando os preços de gas subirem acima ou caírem abaixo de um determinado valor, oferecemos uma ferramenta chamada Gas Price Notifications no Alchemy Notify, que pode alertá-lo especificamente nessas situações! Como é um webhook, é bastante simples integrá-lo ao seu código para enviar transações automaticamente quando os preços de gas estiverem baixos.
Veja o dashboard da Alchemy em ação
Tour guiado de 30 minutos: todas as ferramentas do dashboard, demonstradas ao vivo.
Watch the demo4. Seu nonce pode estar incorreto
Ah, a pergunta que está queimando na cabeça de todo mundo - o que diabos é um nonce e por que eu preciso dele?? Uma pergunta totalmente válida, e ficamos felizes que você tenha perguntado.
De forma bem simples, o nonce é o número de transações enviadas a partir de um determinado endereço. Se você confirmou com sucesso cinco transações (nonces de 0 a 4), o nonce da sua próxima transação pendente será 5.
Os nonces seguem algumas regras:
- Os nonces devem ocorrer em ordem. Uma transação com nonce 4 ocorrerá estritamente antes de uma transação com nonce 5.
- Os nonces não podem ser duplicados ou pulados - há exatamente um nonce por transação bem-sucedida. Se você não tem uma transação com nonce 5, não pode enviar uma com nonce 6. Da mesma forma, você não pode enviar duas transações com nonce 5 - apenas uma será concluída.
Por que precisamos deles? Os nonces são necessários, do ponto de vista criptográfico, para garantir que as transações de um determinado endereço ocorram na ordem em que foram enviadas, e que suas transações estejam protegidas contra o problema do double-spend.
Na prática, o nonce é simplesmente um parâmetro que você precisa definir ao criar uma transação. Isso permite que você tenha controle manual detalhado sobre a ordem das suas transações.
Para um exemplo da vida real, digamos que você queira comprar um NFT em um marketplace e depois enviar uma pequena "taxa de indicação" para o Bob por ter ajudado você a encontrá-lo. Nesse caso, você só gostaria de pagar o Bob se tivesse comprado o NFT com sucesso. Sem os nonces, você não teria como enviar as duas transações E garantir que ocorressem em uma ordem específica. Usando nonces, você simplesmente pode rotular uma transação com o nonce N, e outra com o nonce N + 1!
No entanto, esse controle detalhado significa que você precisa enviar suas transações com o nonce correto toda vez! Se sua transação estiver travada, você precisará verificar seu nonce para garantir que ele esteja definido corretamente, de acordo com as regras descritas acima.
5. Seu bloco pode sofrer um fork
Você vai adorar essa: mesmo que sua transação seja minerada com sucesso, você ainda não está livre de problemas 😡 .
Como a blockchain é descentralizada, diferentes conjuntos de nodes na rede podem ter visões diferentes da rede. Em particular, ocasionalmente dois miners minerarão um novo bloco quase ao mesmo tempo, e os nodes pareados migrarão para as duas novas chains na mesma proporção. Nesse caso, as duas novas chains crescerão em paralelo - mas, eventualmente, uma delas ganhará um pouco mais de consenso!
Quando toda a rede migra para uma das chains e abandona a segunda, as transações já "mineradas" na chain antiga se tornam um fork e, portanto, inválidas. Os blocos que sofreram fork também são chamados de "uncle blocks".
Isso significa que, mesmo depois de sua transação ter sido minerada, ela ainda pode ser invalidada por um fork de bloco! Você pode ver um histórico de blocos com fork no Etherscan aqui. Felizmente, na Ethereum mainnet eles não são muito comuns e tipicamente têm menos de 5 blocos de profundidade, mas é por isso que sua transação nunca é "totalmente" confirmada por um protocolo de negociação DeFi até depois de, no mínimo, 5 a 7 confirmações de bloco.
Quais ferramentas posso usar para gerenciar meu mempool e minhas transações Ethereum pendentes?
O Alchemy mempool watcher
Digamos que você enviou uma transação quarenta minutos atrás para o mempool de um node, mas ainda não a viu confirmada na blockchain. Você gostaria de ter algumas informações sobre seu status atual, o preço de gas com que a enviou, e o nonce, para verificar duas vezes. O que fazer?
Acessar o estado das suas transações no mempool era (e ainda é) uma bagunça. Como a única interface para o status do seu mempool é por meio da Ethereum JSON-RPC API, os desenvolvedores passavam horas consultando os diversos nodes para os quais enviaram transações, mesclando e vasculhando páginas de logs, e tentando reconstruir manualmente todo o estado do seu mempool - tudo isso para uma única consulta.
É assim que se parece uma chamada típica a um mempool ocupado:

Pior ainda, quando os desenvolvedores começam a enviar suas solicitações para múltiplos nodes para escalar, surgem sérios problemas de consistência - já que as transações se originam de um único node, as solicitações para uma transação específica precisam ser roteadas de forma persistente (sticky routing) para o mesmo node toda vez que você interage com ele.
Em resposta a esses desafios, construímos o Mempool Watcher - uma ferramenta que simplifica boa parte dessa complexidade. Primeiro, cuidamos de todo o roteamento de nodes, de modo que, mesmo que você esteja utilizando dezenas de nodes para escalar, seu mempool sempre aparece como uma única entidade - com as solicitações de mempool devidamente roteadas para o node correto dentro da nossa infraestrutura.
Em segundo lugar, oferecemos ferramentas bastante úteis para fornecer uma visão em tempo real do status das suas transações. As transações são marcadas como minadas, pendentes ou descartadas. Cada registro de transação inclui a duração que a transação passou pendente, a quantidade de gas necessária, e acesso a detalhes adicionais.

O Alchemy explorer
E se você tiver enviado vinte transações diferentes para um node simultaneamente por meio de um script, mas perceber que algumas delas estão falhando ao sequer chegar ao node? Como você poderia acompanhar as respostas com falha e encontrar padrões para determinar a causa?
De forma semelhante ao caso anterior, tipicamente como desenvolvedor você precisaria vasculhar páginas de logs para determinar um padrão. Em resposta a isso, construímos uma ferramenta de explorador de solicitações/respostas que permite acompanhar o status das solicitações JSON-RPC enviadas por meio da nossa API!

Nosso Alchemy Explorer permite que você pesquise solicitações e respostas históricas enviadas por meio da nossa infraestrutura em qualquer momento entre 1 segundo e 7 dias atrás! Chega de caçar logs - você tem tecnologia moderna à sua disposição.
Nessas solicitações, você pode filtrar as consultas por todos os tipos de parâmetros, como o tipo de método, respostas HTTP ou erros específicos de node! Você pode visualizar as solicitações com base em seus timestamps, na duração da solicitação, e em muitas outras opções.
Por que eu deveria usar a Alchemy para gerenciar minhas transações?
A Alchemy é um node provider, o que significa que gerenciamos toda a infraestrutura associada ao envio e recebimento de solicitações para a blockchain Ethereum (entre algumas outras!). Aqui está uma explicação sobre por que você precisa de um node provider.
Assim que você começa a enviar suas solicitações pelo nosso sistema, você obtém todos os benefícios que discutimos acima para transações pendentes: um mempool escalável, ferramentas de dashboard, webhooks de preço de gas.
Além disso, oferecemos a você:
- Acesso à Node API da Alchemy, sustentada por infraestrutura proprietária que resolve problemas de escalabilidade e consistência que afetam a blockchain.
- Acesso ao nosso Dashboard, que ajuda você a construir e monitorar suas aplicações fornecendo ferramentas para explorar suas solicitações, como as discutidas acima.
- Acesso ao Alchemy Notify, uma ferramenta que fornece notificações push (webhooks) para eventos como transações ocorrendo na blockchain.
- Acesso às nossas Enhanced APIs, que permitem fazer solicitações à blockchain que, de outra forma, seriam computacionalmente caras ou impossíveis.
- E muito mais, incluindo acesso a esses recursos em uma variedade de chains, como Flow, Crypto.org, e L2s como Polygon, Optimism e Arbitrum!
Começando com a Alchemy
Desbloquear a Node API e as ferramentas para desenvolvedores da Alchemy é extremamente simples - na verdade, deveria ser apenas uma única linha de código! Se você já vem usando web3.js ou ethers.js, é tão simples quanto criar uma conta na Alchemy gratuitamente, gerar uma API key, e substituir a instanciação por algo assim:
Se você quiser um tutorial completo, leia nosso guia Getting Started with Alchemy. Se precisar de mais ajuda, visite a central de suporte da Alchemy.
Newsletter da Alchemy
Seja o primeiro a saber sobre lançamentos
Assine nossa newsletter
Receba as últimas atualizações de produtos e recursos da Alchemy
Ao inserir seu endereço de e-mail, você concorda em receber nossas comunicações de marketing e atualizações de produtos. Você reconhece que a Alchemy processa as informações que recebemos de acordo com nosso Aviso de Privacidade. Você pode cancelar a inscrição a qualquer momento.
Artigos relacionados

Transforme o Claude Code em um agente de pesquisa onchain
Transforme o Claude Code em um agente de pesquisa onchain com o Alchemy CLI. Rastreie lançamentos de tokens, carteiras de deployers e admin keys fazendo as perguntas certas.

O roteador Cortex: como escolhemos o nó saudável mais rápido para cada requisição
Levar uma requisição até uma região próxima é o básico. O que acontece depois, escolher qual nó responde, é onde o Cortex atua.

Melhor infraestrutura blockchain para agentes de IA (2026)
Compare a melhor infraestrutura blockchain para agentes de IA em 2026: frameworks de agentes, provedores de RPC e dados prontos para agentes, e os padrões que os conectam.