TriportRPC

RPC error -32000: already known

Last updated:

At a glance

Error details
PropertyValue
Applies toEthereum, Polygon, BNB Smart Chain, Base and Robinhood Chain
JSON-RPC code-32000 (upstream)
OriginThe node's transaction pool
Means failureNo — the earlier copy is pending
Next stepWait on the receipt for the same hash

Cause

A node answers 'already known' when the submitted raw transaction hashes to one it has already accepted into the mempool. It commonly appears when a client retries a send after a timeout, or when several workers broadcast the same signed payload. Triport forwards the answer unchanged, the same way it forwards nonce too low, because it describes network state rather than an upstream failure.

Solution

  1. Treat it as a successful submission: the transaction hash you already have is valid, so switch to waiting on the receipt.
  2. Poll eth_getTransactionReceipt for the original hash instead of broadcasting again.
  3. Make your sender idempotent — record the hash before the first broadcast, so a retry after a network timeout is recognised rather than repeated.
  4. If it never mines, replace it by reusing the nonce with a higher fee rather than sending the same payload again.

Example

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32000,
    "message": "already known"
  }
}

FAQ

Did my transaction fail?
No. The node already has it. The correct next step is to wait for the receipt of the hash you already computed, not to broadcast again.
How do I stop seeing it?
Record the transaction hash before the first broadcast and make retries check for it — the message is almost always a duplicate send after a timeout.