Skip to content

Transaction Retransmission Loop #10

@mgordel

Description

@mgordel

Problem Description

MetaMask enters an infinite retransmission loop when transactions have insufficient gas fees, causing repeated "already known" errors in the node logs.

Root Cause Analysis

What happens:

  1. MetaMask sends transaction with low gas fees (e.g., 3.5 gwei)
  2. Tx Firewall accepts transaction in interactive mode window
  3. Local node accepts the transaction into its local transaction pool
  4. Network rejects the transaction due to insufficient fees (network requires ~755 gwei)
  5. Transaction gets stuck - exists in local node but not in network mempool
  6. MetaMask polls eth_getTransactionReceipt → receives null
  7. MetaMask interprets null as "lost transaction"
  8. MetaMask retransmits the same transaction
  9. Tx firewall shows the same transaction to verify by user
  10. Node responds "already known" (transaction already exists locally)
  11. Loop continues indefinitely

Transaction State Mismatch:

# Local node perspective:
eth.getTransaction("0x...") → Returns transaction object (exists locally)

# Network perspective:
eth.pendingTransactions → [] (not in network mempool due to low fees)

# MetaMask perspective:
eth_getTransactionReceipt → null (not mined yet)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions