RPC error -32000: already known
Last updated:
At a glance
| Property | Value |
|---|---|
| Applies to | Ethereum, Polygon, BNB Smart Chain, Base and Robinhood Chain |
| JSON-RPC code | -32000 (upstream) |
| Origin | The node's transaction pool |
| Means failure | No — the earlier copy is pending |
| Next step | Wait 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
- Treat it as a successful submission: the transaction hash you already have is valid, so switch to waiting on the receipt.
- Poll eth_getTransactionReceipt for the original hash instead of broadcasting again.
- Make your sender idempotent — record the hash before the first broadcast, so a retry after a network timeout is recognised rather than repeated.
- 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.