Skip to content

feat(cheatcodes): add cheatcode to defer call to fork #9192

Open
@bernard-wagner

Description

@bernard-wagner

Component

Forge

Describe the feature you would like

There are already some thoughts given in #7262 to handle precompiles, but with more L2s implementing non-evm VMs (thinking mainly of Arbitrum Stylus) the issue is expanding past just precompiles.

As a more generic approach, it would be useful to mark a contract address or a call filter similar to vm.mockCall that defers execution to the fork endpoint.

vm.deferExecution(0x000000000000000000000000000000000000006C);

vm.deferExecution(0x000000000000000000000000000000000000006C, abi.encodeWithSignature('getPricesInWei()'));

When the interrupter encounters a call that is deferred it performs an eth_call against the fork-url on the fork block number. Ideally, there would be some additional caching.

Only static calls would be supported initially, as this is the most common use case and any state changes would be far more complex to handle (state overrides in eth_call and debug tracing to get any storage changes).

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions