{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "rollup-withdrawal-troubleshooting",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/rollup-withdrawal-troubleshooting/",
  "collection": "ethereum",
  "title": "Why is my rollup withdrawal still waiting?",
  "description": "Locate the unfinished stage of a rollup withdrawal instead of assuming the first L2 receipt means an Ethereum payout.",
  "aliases": [
    "rollup withdrawal pending",
    "Optimism withdrawal prove finalize"
  ],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T19:27:58.939Z",
    "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": "A rollup withdrawal can be waiting for data publication, a state proposal or proof, a protocol delay, or a final transaction on the destination chain. Identify the network and bridge, then follow the withdrawal message across its stages. A successful source-chain transaction does not by itself prove that the destination account has been paid. Exact steps and waiting rules differ by protocol and version.",
    "claimId": "rollup-withdrawal-troubleshooting-quick-answer",
    "sourceIds": [
      "x425-eth-op-withdrawals",
      "x425-eth-base-finality",
      "x425-eth-arbitrum-nitro"
    ]
  },
  "keyFacts": [
    {
      "label": "Source step",
      "value": "Starting a withdrawal records an action on the source chain.",
      "sourceIds": [
        "x425-eth-op-withdrawals"
      ],
      "id": "source-step",
      "claimId": "rollup-withdrawal-troubleshooting-fact-source-step"
    },
    {
      "label": "L1 steps",
      "value": "The OP Stack example requires separate proving and finalization transactions.",
      "sourceIds": [
        "x425-eth-op-withdrawals"
      ],
      "id": "l1-steps",
      "claimId": "rollup-withdrawal-troubleshooting-fact-l1-steps"
    },
    {
      "label": "Version matters",
      "value": "Base’s current finalization paths differ from a generic fixed waiting rule.",
      "sourceIds": [
        "x425-eth-base-finality"
      ],
      "id": "version-matters",
      "claimId": "rollup-withdrawal-troubleshooting-fact-version-matters"
    }
  ],
  "prerequisites": [
    "ethereum-layer-2",
    "ethereum-transaction-receipts"
  ],
  "sections": [
    {
      "id": "identify",
      "heading": "Find the bridge and message you actually used",
      "sourceIds": [
        "x425-eth-op-withdrawals",
        "x425-eth-arbitrum-nitro"
      ],
      "paragraphs": [
        "Record the source and destination networks, asset, recipient and source transaction. Then use that bridge’s message or withdrawal identifier to locate the next stage. A generic transaction hash search on the wrong chain can look empty while the source transaction succeeded.",
        "A fast liquidity service and a protocol’s native withdrawal can follow different routes. Check which service accepted the request before applying its timing expectations."
      ]
    },
    {
      "id": "example",
      "heading": "Proving late can start a later waiting clock",
      "sourceIds": [
        "x425-eth-op-withdrawals"
      ],
      "paragraphs": [
        "In the documented OP Stack flow, a withdrawal first needs an eligible state proposal. Its proof then has its own maturity condition, alongside conditions on the dispute game. Proving against a game that already resolved does not automatically allow immediate finalization.",
        "If your source transaction is old but you proved it only recently, the source age alone does not show that every waiting requirement has passed."
      ]
    },
    {
      "id": "completion",
      "heading": "Check the final execution and recipient",
      "sourceIds": [
        "x425-eth-op-withdrawals",
        "x425-eth-base-finality"
      ],
      "paragraphs": [
        "When eligible, a withdrawal may still need a destination-chain transaction and its fee. Inspect the finalization result and actual asset outcome. Do not repeatedly initiate new source withdrawals to fix an unfinished later step.",
        "Treat a failed or invalid supporting claim through the bridge’s documented recovery path; some flows require proving again. A different bridge cannot silently complete the first bridge’s message."
      ]
    }
  ],
  "faq": [
    {
      "question": "Has a withdrawal failed if my L2 transaction succeeded but L1 is empty?",
      "answer": "Not necessarily. The source transaction can be complete while publication, proof, waiting or destination execution remains unfinished. Identify the current stage.",
      "sourceIds": [
        "x425-eth-op-withdrawals"
      ]
    },
    {
      "question": "Do all rollup withdrawals take exactly seven days?",
      "answer": "No. Timing depends on the protocol, current version, proof path and when required transactions occur. Check the actual deployment’s withdrawal rules.",
      "sourceIds": [
        "x425-eth-op-withdrawals",
        "x425-eth-base-finality"
      ]
    }
  ],
  "claims": [
    {
      "id": "rollup-withdrawal-troubleshooting-quick-answer",
      "articleSlug": "rollup-withdrawal-troubleshooting",
      "statement": "A rollup withdrawal can be waiting for data publication, a state proposal or proof, a protocol delay, or a final transaction on the destination chain. Identify the network and bridge, then follow the withdrawal message across its stages. A successful source-chain transaction does not by itself prove that the destination account has been paid. Exact steps and waiting rules differ by protocol and version.",
      "sourceIds": [
        "source-78235bf07c29d69c",
        "source-1a6f029f321db9d7",
        "source-2d1073e5ab3a8020"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-78235bf07c29d69c",
          "locator": "Initiate; prove; finalize; fault proofs"
        },
        {
          "sourceId": "source-1a6f029f321db9d7",
          "locator": "Finality stages"
        },
        {
          "sourceId": "source-2d1073e5ab3a8020",
          "locator": "Transaction journey; rollup; AnyTrust"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:27:58.939Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "Read full OP withdrawal initiate/prove/finalize flow and Base current proof paths. Own proving timestamp starts proof-maturity timer even if game already resolved; re-proving resets timer. Invalid claim requires valid re-proof. Actual final result must be checked; source’s blanket internal-revert reassurance deliberately excluded."
        ]
      }
    },
    {
      "id": "rollup-withdrawal-troubleshooting-fact-source-step",
      "articleSlug": "rollup-withdrawal-troubleshooting",
      "statement": "Source step: Starting a withdrawal records an action on the source chain.",
      "sourceIds": [
        "source-78235bf07c29d69c"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-78235bf07c29d69c",
          "locator": "Initiate; prove; finalize; fault proofs"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:27:58.939Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "Read full OP withdrawal initiate/prove/finalize flow and Base current proof paths. Own proving timestamp starts proof-maturity timer even if game already resolved; re-proving resets timer. Invalid claim requires valid re-proof. Actual final result must be checked; source’s blanket internal-revert reassurance deliberately excluded."
        ]
      }
    },
    {
      "id": "rollup-withdrawal-troubleshooting-fact-l1-steps",
      "articleSlug": "rollup-withdrawal-troubleshooting",
      "statement": "L1 steps: The OP Stack example requires separate proving and finalization transactions.",
      "sourceIds": [
        "source-78235bf07c29d69c"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-78235bf07c29d69c",
          "locator": "Initiate; prove; finalize; fault proofs"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:27:58.939Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "Read full OP withdrawal initiate/prove/finalize flow and Base current proof paths. Own proving timestamp starts proof-maturity timer even if game already resolved; re-proving resets timer. Invalid claim requires valid re-proof. Actual final result must be checked; source’s blanket internal-revert reassurance deliberately excluded."
        ]
      }
    },
    {
      "id": "rollup-withdrawal-troubleshooting-fact-version-matters",
      "articleSlug": "rollup-withdrawal-troubleshooting",
      "statement": "Version matters: Base’s current finalization paths differ from a generic fixed waiting rule.",
      "sourceIds": [
        "source-1a6f029f321db9d7"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-1a6f029f321db9d7",
          "locator": "Finality stages"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:27:58.939Z",
        "reviewer": "Independent automated verification agent verify_bitcoin_stablecoins_100",
        "notes": [
          "Read full OP withdrawal initiate/prove/finalize flow and Base current proof paths. Own proving timestamp starts proof-maturity timer even if game already resolved; re-proving resets timer. Invalid claim requires valid re-proof. Actual final result must be checked; source’s blanket internal-revert reassurance deliberately excluded."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "x425-eth-op-withdrawals",
      "label": "OP Stack withdrawal flow",
      "publisher": "Optimism",
      "url": "https://docs.optimism.io/stack/transactions/withdrawal-flow",
      "locator": "Initiate; prove; finalize; fault proofs",
      "note": "L2-to-L1 withdrawals require distinct onchain stages and protocol waits.",
      "version": "Documentation snapshot retrieved 2 October 2026; response hash recorded separately",
      "checkedAt": "2026-10-02T18:55:27.608Z",
      "contentSha256": "445bbe7491370f3ca29ea4b597dcc3c10376c9d98a7415617f67df6267c31f51",
      "recordId": "source-78235bf07c29d69c"
    },
    {
      "id": "x425-eth-base-finality",
      "label": "Base transaction finality",
      "publisher": "Base",
      "url": "https://docs.base.org/specifications/transactions/transaction-finality",
      "locator": "Finality stages",
      "note": "Distinguish Base preconfirmation, block inclusion, Ethereum data finality and withdrawal completion.",
      "version": "Documentation snapshot retrieved 2 October 2026; response hash recorded separately",
      "checkedAt": "2026-10-02T18:55:27.802Z",
      "contentSha256": "efb1d2a37a948b7f760bd3fc7aa4f3215b157de8f3988f491267ccccd78a25c7",
      "recordId": "source-1a6f029f321db9d7"
    },
    {
      "id": "x425-eth-arbitrum-nitro",
      "label": "Inside Arbitrum Nitro",
      "publisher": "Offchain Labs",
      "url": "https://docs.arbitrum.io/how-arbitrum-works/inside-arbitrum-nitro",
      "locator": "Transaction journey; rollup; AnyTrust",
      "note": "Nitro rollup execution and Ethereum batch publication versus AnyTrust committee assumptions.",
      "version": "Documentation snapshot retrieved 2 October 2026; response hash recorded separately",
      "checkedAt": "2026-10-02T18:55:27.094Z",
      "contentSha256": "b0e9819a15eacadbab163dd3255ded4025880453fde823e0aa5df2ff03d83990",
      "recordId": "source-2d1073e5ab3a8020"
    }
  ],
  "related": {
    "articles": [
      "optimistic-rollups",
      "validity-rollups",
      "ethereum-transaction-receipts",
      "op-stack-and-superchain",
      "comparing-ethereum-layer-2s"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and separate automated verification."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “Why is my rollup withdrawal still waiting?.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/rollup-withdrawal-troubleshooting/"
}
