{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "ethereum-transaction-replacement",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/ethereum-transaction-replacement/",
  "collection": "ethereum",
  "title": "Speeding up or cancelling an Ethereum transaction",
  "description": "Understand how an Ethereum wallet competes with its own pending transaction using the same nonce, and why a cancel button cannot reverse confirmed execution.",
  "aliases": [],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T18:12:41.505Z",
    "dataAsOf": "2026-10-02"
  },
  "authorship": {
    "publisher": "Degrees of Satoshi editorial project",
    "process": "AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied."
  },
  "quickAnswer": {
    "text": "An Ethereum replacement uses the same sender and transaction nonce as a pending transaction while changing fields such as fees. Nodes apply their own transaction-pool replacement rules. The first valid competing transaction included consumes that nonce; a replacement cannot undo an already executed transaction.",
    "claimId": "ethereum-transaction-replacement-quick-answer",
    "sourceIds": [
      "eth-jsonrpc",
      "eth-transactions",
      "geth-txpool"
    ]
  },
  "keyFacts": [
    {
      "label": "Competition",
      "value": "The replacement and original compete for one sender nonce.",
      "sourceIds": [
        "eth-jsonrpc",
        "eth-accounts"
      ],
      "id": "competition",
      "claimId": "ethereum-transaction-replacement-fact-competition"
    },
    {
      "label": "Hash",
      "value": "Changing the signed transaction creates a different transaction identifier.",
      "sourceIds": [
        "eth-transactions"
      ],
      "id": "hash",
      "claimId": "ethereum-transaction-replacement-fact-hash"
    },
    {
      "label": "Limits",
      "value": "A same-nonce attempt cannot reverse a nonce already consumed in the accepted chain.",
      "sourceIds": [
        "eth-transactions"
      ],
      "id": "limits",
      "claimId": "ethereum-transaction-replacement-fact-limits"
    }
  ],
  "prerequisites": [
    "ethereum-pending-transactions"
  ],
  "sections": [
    {
      "id": "speed-up",
      "heading": "Speeding up usually preserves the intended action",
      "sourceIds": [
        "eth-jsonrpc",
        "eip1559",
        "geth-txpool",
        "geth-replacement-code"
      ],
      "paragraphs": [
        "A wallet can build a higher-fee attempt using the same recipient, value and call data. Both fee caps may matter under EIP-1559-style pricing, and exact admission thresholds depend on node software and configuration.",
        "Inspect the final recipient, value, calldata and maximum fee. A familiar wallet label does not substitute for reviewing the transaction actually being signed."
      ]
    },
    {
      "id": "cancel",
      "heading": "Cancellation is a race, not a command to validators",
      "sourceIds": [
        "eth-jsonrpc",
        "eth-transactions"
      ],
      "paragraphs": [
        "A wallet may attempt to occupy the nonce with a different operation instead of the original request. If that alternative is included first, the original cannot also consume the same sender nonce.",
        "If the original is included first, the competing cancellation loses. For this reason, an interface must not describe submission of a cancel attempt as proof of cancellation."
      ]
    },
    {
      "id": "after",
      "heading": "After inclusion, inspect the winning receipt",
      "sourceIds": [
        "eth-jsonrpc",
        "eip658"
      ],
      "paragraphs": [
        "Follow the hash of the transaction that actually entered the block. A replaced attempt can remain visible in a wallet history or external service without becoming the executed payment.",
        "Once a transfer has executed, moving assets back generally requires a new authorized operation. Replacement is not a refund mechanism."
      ]
    }
  ],
  "faq": [
    {
      "question": "Does a higher fee guarantee my replacement wins?",
      "answer": "No. Nodes must accept the replacement, it must reach block builders in time, and the original must not already have been included.",
      "sourceIds": [
        "eth-jsonrpc",
        "eip1559"
      ]
    }
  ],
  "claims": [
    {
      "id": "ethereum-transaction-replacement-quick-answer",
      "articleSlug": "ethereum-transaction-replacement",
      "statement": "An Ethereum replacement uses the same sender and transaction nonce as a pending transaction while changing fields such as fees. Nodes apply their own transaction-pool replacement rules. The first valid competing transaction included consumes that nonce; a replacement cannot undo an already executed transaction.",
      "sourceIds": [
        "source-a5154b4118a3d15f",
        "source-c4666896686db30e",
        "source-7d0cb48e5739e6a6"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-a5154b4118a3d15f",
          "locator": "eth_getTransactionByHash; eth_getTransactionReceipt; eth_call; eth_getLogs; eth_getCode; eth_estimateGas; eth_getBalance; eth_getStorageAt; eth_getTransactionCount; default block parameter"
        },
        {
          "sourceId": "source-c4666896686db30e",
          "locator": "The transaction lifecycle; Typed transaction envelope"
        },
        {
          "sourceId": "source-7d0cb48e5739e6a6",
          "locator": "txpool.pricebump; txpool.lifetime"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Independently inspected Geth v1.15.11 list.Add: replacement matches nonce, requires increased fee and tip caps, then applies the configurable price-bump thresholds to both. Added this implementation source to the fee-cap passage.",
          "Added account nonce support; replaced the potentially misleading harmless-alternative wording with different-operation wording. Cancellation remains a competition for an unconsumed nonce, not reversal."
        ]
      }
    },
    {
      "id": "ethereum-transaction-replacement-fact-competition",
      "articleSlug": "ethereum-transaction-replacement",
      "statement": "Competition: The replacement and original compete for one sender nonce.",
      "sourceIds": [
        "source-a5154b4118a3d15f",
        "source-2fb64d6fc5cedb00"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-a5154b4118a3d15f",
          "locator": "eth_getTransactionByHash; eth_getTransactionReceipt; eth_call; eth_getLogs; eth_getCode; eth_estimateGas; eth_getBalance; eth_getStorageAt; eth_getTransactionCount; default block parameter"
        },
        {
          "sourceId": "source-2fb64d6fc5cedb00",
          "locator": "Account types; An account examined; Account creation"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Independently inspected Geth v1.15.11 list.Add: replacement matches nonce, requires increased fee and tip caps, then applies the configurable price-bump thresholds to both. Added this implementation source to the fee-cap passage.",
          "Added account nonce support; replaced the potentially misleading harmless-alternative wording with different-operation wording. Cancellation remains a competition for an unconsumed nonce, not reversal."
        ]
      }
    },
    {
      "id": "ethereum-transaction-replacement-fact-hash",
      "articleSlug": "ethereum-transaction-replacement",
      "statement": "Hash: Changing the signed transaction creates a different transaction identifier.",
      "sourceIds": [
        "source-c4666896686db30e"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-c4666896686db30e",
          "locator": "The transaction lifecycle; Typed transaction envelope"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Independently inspected Geth v1.15.11 list.Add: replacement matches nonce, requires increased fee and tip caps, then applies the configurable price-bump thresholds to both. Added this implementation source to the fee-cap passage.",
          "Added account nonce support; replaced the potentially misleading harmless-alternative wording with different-operation wording. Cancellation remains a competition for an unconsumed nonce, not reversal."
        ]
      }
    },
    {
      "id": "ethereum-transaction-replacement-fact-limits",
      "articleSlug": "ethereum-transaction-replacement",
      "statement": "Limits: A same-nonce attempt cannot reverse a nonce already consumed in the accepted chain.",
      "sourceIds": [
        "source-c4666896686db30e"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-c4666896686db30e",
          "locator": "The transaction lifecycle; Typed transaction envelope"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Independently inspected Geth v1.15.11 list.Add: replacement matches nonce, requires increased fee and tip caps, then applies the configurable price-bump thresholds to both. Added this implementation source to the fee-cap passage.",
          "Added account nonce support; replaced the potentially misleading harmless-alternative wording with different-operation wording. Cancellation remains a competition for an unconsumed nonce, not reversal."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "eth-jsonrpc",
      "label": "Ethereum JSON-RPC",
      "publisher": "ethereum.org contributors",
      "url": "https://ethereum.org/en/developers/docs/apis/json-rpc/",
      "locator": "eth_getTransactionByHash; eth_getTransactionReceipt; eth_call; eth_getLogs; eth_getCode; eth_estimateGas; eth_getBalance; eth_getStorageAt; eth_getTransactionCount; default block parameter",
      "note": "RPC response fields, transaction receipts, call simulation and log filtering.",
      "version": null,
      "checkedAt": "2026-10-02T17:03:42.060Z",
      "contentSha256": "ed13997ec4f415dff80883add0730d4e64bcc8c17b95dd4f6c27aed0241a4073",
      "recordId": "source-a5154b4118a3d15f"
    },
    {
      "id": "eth-transactions",
      "label": "Ethereum transactions",
      "publisher": "ethereum.org contributors",
      "url": "https://ethereum.org/en/developers/docs/transactions/",
      "locator": "The transaction lifecycle; Typed transaction envelope",
      "note": "Signed transaction fields, nonces, propagation, inclusion and transaction types.",
      "version": null,
      "checkedAt": "2026-10-02T17:03:41.854Z",
      "contentSha256": "2eb9d9cb65efec673d9bb3327961aa14a0e354b612e149c5a6b733032977fee7",
      "recordId": "source-c4666896686db30e"
    },
    {
      "id": "geth-txpool",
      "label": "Geth command-line options",
      "publisher": "Go Ethereum",
      "url": "https://geth.ethereum.org/docs/fundamentals/command-line-options",
      "locator": "txpool.pricebump; txpool.lifetime",
      "note": "Implementation-configurable transaction replacement and local pool policies.",
      "version": null,
      "checkedAt": "2026-10-02T17:25:58.872Z",
      "contentSha256": "15d07bf43b3a68bff858ea6a38966baf7f75bf99e6e1be13d33ca2f99263e8b3",
      "recordId": "source-7d0cb48e5739e6a6"
    },
    {
      "id": "eth-accounts",
      "label": "Ethereum accounts",
      "publisher": "ethereum.org contributors",
      "url": "https://ethereum.org/en/developers/docs/accounts/",
      "locator": "Account types; An account examined; Account creation",
      "note": "Key-controlled and code-controlled accounts, balances, nonces and storage.",
      "version": null,
      "checkedAt": "2026-10-02T17:03:41.958Z",
      "contentSha256": "262a5694899ae6f774aacae66b13d6929b658ecc9e23c276af9e23ee9455f034",
      "recordId": "source-2fb64d6fc5cedb00"
    },
    {
      "id": "eip1559",
      "label": "Fee market change for ETH 1.0 chain",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://eips.ethereum.org/EIPS/eip-1559",
      "locator": "Specification",
      "note": "Base fees, fee caps, priority fees and effective transaction gas price.",
      "version": "EIP/ERC-1559; retrieved document hash recorded",
      "checkedAt": "2026-10-02T17:03:42.151Z",
      "contentSha256": "453b293845f8faac282a468be0c01594f0a785dde3af34947ee676c085e011b7",
      "recordId": "source-2be2a692f09f4d89"
    },
    {
      "id": "geth-replacement-code",
      "label": "Geth legacy-pool replacement checks",
      "publisher": "Go Ethereum",
      "url": "https://raw.githubusercontent.com/ethereum/go-ethereum/v1.15.11/core/txpool/legacypool/list.go",
      "locator": "list.Add; gasFeeCap and gasTipCap replacement thresholds",
      "note": "Versioned same-nonce replacement policy and EIP-1559 fee-cap conditions.",
      "version": "go-ethereum v1.15.11",
      "checkedAt": "2026-10-02T17:55:17.128Z",
      "contentSha256": "b77aa9b9ca687be7ea72ee5ec2262e6d15b3644b772edcbdc7f7339aba1f0e7b",
      "recordId": "source-efbba534b1e4de35"
    },
    {
      "id": "eip658",
      "label": "Embedding transaction status code in receipts",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://eips.ethereum.org/EIPS/eip-658",
      "locator": "Specification",
      "note": "Receipts report top-level execution success or failure.",
      "version": "EIP/ERC-658; retrieved document hash recorded",
      "checkedAt": "2026-10-02T17:03:42.150Z",
      "contentSha256": "8bd00dd00fb9ce4944ba96e0c986486d90df7bd78c88ff9f9b6a7c7a56287f58",
      "recordId": "source-fc3b7cce0edd664b"
    }
  ],
  "related": {
    "articles": [
      "ethereum-transaction-receipts",
      "ethereum-pending-transactions",
      "ethereum-transactions-and-nonces"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and independent automated verification."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “Speeding up or cancelling an Ethereum transaction.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/ethereum-transaction-replacement/"
}
