foundry-rs / foundry-rs/foundry
feat(`cheatcodes`): add cheatcode to defer call to fork
- Dominant language
- Rust
- Stars
- 10.6k
- Forks
- 2.6k
- Avg merge
- 18h 20m
- Merged PRs (30d)
- 510
Description
### 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_
Contributor guide
Assessment
This issue has not been assessed yet.