Skip to content

Conversation

@kustrun
Copy link
Contributor

@kustrun kustrun commented Dec 9, 2025

After the Jovian fork, all eth_simulateV1 calls fail with the error: "error calculating DA footprint: missing deposit transaction".

The root cause is in CalcDAFootprint(), which assumes that a deposit transaction exists at txs[0] and that it contains the daFootprintGasScalar data. This value is required to calculate the rollup gas costs.

The proposed solution modifies ONLY eth_simulateV1 by injecting a synthetic Jovian deposit transaction before the user-provided simulation transactions. This allows CalcDAFootprint() to succeed while keeping the core block-processing logic unchanged, ensuring that simulations work without affecting normal execution.

@kustrun kustrun requested a review from a team as a code owner December 9, 2025 15:39
@kustrun kustrun requested a review from joshklop December 9, 2025 15:39
@geoknee geoknee self-requested a review December 12, 2025 17:23
@geoknee
Copy link
Contributor

geoknee commented Dec 17, 2025

Could you comment about your use case here? In what context are you running these simulations?

@RealJohnnyTime
Copy link

+1
This is critical for accurately simulating transactions in backrunning strategies on OP Stack–based EVM chains. Many existing backrunners are currently broken because of this.

@kustrun
Copy link
Contributor Author

kustrun commented Jan 5, 2026

@geoknee apologies for the delayed reply, was AFK. As @RealJohnnyTime mentioned, any transaction simulation currently fails (my specific use case is tx bundle simulation). Below is an example payload that reproduces the issue, in case it helps with diagnosing and resolving it.

For now, I'm using a quick workaround with an artificial Jovian transaction until we settle on a proper solution.

  curl -X POST \
    -H "Content-Type: application/json" \
    --data '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "eth_simulateV1",
      "params": [
        {
          "blockStateCalls": [
            {
              "stateOverrides": {
                "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045": {
                  "balance": "0x21e19e0c9bab2400000"
                }
              },
              "calls": [
                {
                  "from": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
                  "to": "0x4200000000000000000000000000000000000015",
                  "value": "0x0"
                }
              ]
            }
          ],
          "validation": false
        },
        "latest"
      ]
    }' \
    <YOUR_OP_STACK_RPC_URL>

@ajsutton ajsutton mentioned this pull request Jan 5, 2026
@geoknee
Copy link
Contributor

geoknee commented Jan 6, 2026

Thanks for the context @kustrun. I'll take another quick look and may push some commits to your branch.

@geoknee geoknee self-assigned this Jan 6, 2026
Remove exported JovianDepositTx from core/types and add a local
jovianDepositTx helper in miner tests. Also remove the unused
encoding/binary import from the core/types file and add it to the test
files where needed.
@geoknee
Copy link
Contributor

geoknee commented Jan 7, 2026

/ci authorize f2b3a69

@geoknee
Copy link
Contributor

geoknee commented Jan 7, 2026

Adding an acceptance test to the monorepo here ethereum-optimism/optimism#18724.

Copy link
Contributor Author

@kustrun kustrun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested the fix on the live node, and it’s resolving the bug. I really like the clean, minimal solution we arrived at!

@geoknee geoknee merged commit e482612 into ethereum-optimism:optimism Jan 8, 2026
11 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants