Skip to content

Commit

Permalink
feat: allow setting evm-version in local network (#108)
Browse files Browse the repository at this point in the history
  • Loading branch information
antazoey committed Jul 26, 2024
1 parent bbf676b commit a875b8e
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 1 deletion.
21 changes: 20 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ foundry:
priority_fee: 0
```
# Auto-mining
## Auto-mining
Anvil nodes by default auto-mine.
However, you can disable auto-mining on startup by configuring the foundry plugin like so:
Expand Down Expand Up @@ -169,3 +169,22 @@ To mine on an interval instead, set the `block_time` config:
foundry:
block_time: 10 # mine a new block every 10 seconds
```
## EVM Version (hardfork)
To change the EVM version for local foundry networks, use the `evm_version` config:

```yaml
foundry:
evm_version: shanghai
```

To change the EVM version for forked networks, set it the specific forked-network config(s):

```yaml
foundry:
fork:
ethereum:
mainnet:
evm_version: shanghai
```
12 changes: 12 additions & 0 deletions ape_foundry/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ class FoundryNetworkConfig(PluginConfig):
Defaults to ``True``. If ``host`` is remote, will not be able to start.
"""

evm_version: Optional[str] = None
"""The EVM hardfork to use, e.g. `shanghai`."""

# Retry strategy configs, try increasing these if you're getting FoundrySubprocessError
request_timeout: int = 30
fork_request_timeout: int = 300
Expand Down Expand Up @@ -419,6 +422,15 @@ def disconnect(self):
super().disconnect()

def build_command(self) -> list[str]:
cmd = self._build_command()

if evm_version := self.settings.evm_version:
cmd.extend(("--hardfork", evm_version))

return cmd

def _build_command(self) -> list[str]:
# All shared between forks and local.
cmd = [
self.anvil_bin,
"--port",
Expand Down
9 changes: 9 additions & 0 deletions tests/test_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -467,3 +467,12 @@ def test_initial_balance(accounts):
# just showing we were able to increase it.
acct = accounts[9]
assert convert("10_000 ETH", int) < acct.balance <= convert("100_000 ETH", int)


@pytest.mark.parametrize("host", ("https://example.com", "example.com"))
def test_evm_version(project, local_network, host):
with project.temp_config(foundry={"evm_version": "shanghai"}):
provider = local_network.get_provider("foundry")
cmd = provider.build_command()
assert "--hardfork" in cmd
assert "shanghai" in cmd

0 comments on commit a875b8e

Please sign in to comment.