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.
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).
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.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