foundry-rs / foundry-rs/foundry

feat(`cheatcodes`): add cheatcode to defer call to fork

Open
#9,192 1 comment 0 reactions 0 assignees View on GitHub
A-cheatcodes T-feature T-to-discuss
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.