-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: vm.dumpState #6827
Merged
Merged
feat: vm.dumpState #6827
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Implements a cheatcode `vm.dumpState(string)` that dumps the current revm state to disk in the same format as the "allocs" field in a geth style `genesis.json`. This can dump state that can be read in by `vm.loadAllocs(string)`. The implementation of the cheatcode skips dumping system contracts. It includes various test coverage.
Run `cargo test` from within the specs crate
DaniPopes
requested changes
Jan 17, 2024
mattsse
approved these changes
Jan 17, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm, pending nit
Better implementation based on review
Thanks for the review @DaniPopes @mattsse. I addressed the comment |
can upstream to forge-std now |
tynes
added a commit
to ethereum-optimism/optimism
that referenced
this pull request
Jan 17, 2024
Updates foundry to the commit `9e2830d7f0566e0d00b1104eeaedd5032a4e556e`. Includes the `vm.dumpState` cheatcode implemented in foundry-rs/foundry#6827. This will unblock the migration of the genesis generation to solidity to improve the devex of the L2 contracts and allow us to delete a lot of custom Go code as well as reduce flakes in CI due to not being able to find the `genesis.json`.
tynes
added a commit
to tynes/forge-std
that referenced
this pull request
Jan 17, 2024
Adds a new cheatcode `dumpState(string)` that was implemented in foundry in foundry-rs/foundry#6827. This cheatcode will write a JSON file to disk that contains the current state of the EVM.
tynes
added a commit
to tynes/forge-std
that referenced
this pull request
Jan 17, 2024
Adds a new cheatcode `dumpState(string)` that was implemented in foundry in foundry-rs/foundry#6827. This cheatcode will write a JSON file to disk that contains the current state of the EVM.
github-merge-queue bot
pushed a commit
to ethereum-optimism/optimism
that referenced
this pull request
Jan 17, 2024
Updates foundry to the commit `9e2830d7f0566e0d00b1104eeaedd5032a4e556e`. Includes the `vm.dumpState` cheatcode implemented in foundry-rs/foundry#6827. This will unblock the migration of the genesis generation to solidity to improve the devex of the L2 contracts and allow us to delete a lot of custom Go code as well as reduce flakes in CI due to not being able to find the `genesis.json`.
mds1
pushed a commit
to tynes/forge-std
that referenced
this pull request
Jan 17, 2024
Adds a new cheatcode `dumpState(string)` that was implemented in foundry in foundry-rs/foundry#6827. This cheatcode will write a JSON file to disk that contains the current state of the EVM.
mds1
added a commit
to foundry-rs/forge-std
that referenced
this pull request
Jan 17, 2024
* vm: add dumpState cheatcode Adds a new cheatcode `dumpState(string)` that was implemented in foundry in foundry-rs/foundry#6827. This cheatcode will write a JSON file to disk that contains the current state of the EVM. * chore: regenerate Vm.sol * test: update interface ID --------- Co-authored-by: Matt Solomon <matt@mattsolomon.dev>
tynes
added a commit
to ethereum-optimism/optimism
that referenced
this pull request
Jan 17, 2024
…dc809 Bumps `forge-std` to the latest commit that includes the `vm.dumpState` cheatcode. - foundry-rs/forge-std#499 - foundry-rs/foundry#6827
github-merge-queue bot
pushed a commit
to ethereum-optimism/optimism
that referenced
this pull request
Jan 17, 2024
…dc809 (#9043) * contracts-bedrock: bump forge-std 1fd874f0efdb711cb6807c4f4a000ed2805dc809 Bumps `forge-std` to the latest commit that includes the `vm.dumpState` cheatcode. - foundry-rs/forge-std#499 - foundry-rs/foundry#6827 * contracts-bedrock: fix build
github-merge-queue bot
pushed a commit
to ethereum-optimism/optimism
that referenced
this pull request
Jan 17, 2024
…dc809 (#9043) * contracts-bedrock: bump forge-std 1fd874f0efdb711cb6807c4f4a000ed2805dc809 Bumps `forge-std` to the latest commit that includes the `vm.dumpState` cheatcode. - foundry-rs/forge-std#499 - foundry-rs/foundry#6827 * contracts-bedrock: fix build
github-merge-queue bot
pushed a commit
to ethereum-optimism/optimism
that referenced
this pull request
Jan 17, 2024
…dc809 (#9043) * contracts-bedrock: bump forge-std 1fd874f0efdb711cb6807c4f4a000ed2805dc809 Bumps `forge-std` to the latest commit that includes the `vm.dumpState` cheatcode. - foundry-rs/forge-std#499 - foundry-rs/foundry#6827 * contracts-bedrock: fix build
dshiell
pushed a commit
to polymerdao/optimism-dev
that referenced
this pull request
Jan 22, 2024
Updates foundry to the commit `9e2830d7f0566e0d00b1104eeaedd5032a4e556e`. Includes the `vm.dumpState` cheatcode implemented in foundry-rs/foundry#6827. This will unblock the migration of the genesis generation to solidity to improve the devex of the L2 contracts and allow us to delete a lot of custom Go code as well as reduce flakes in CI due to not being able to find the `genesis.json`.
dshiell
pushed a commit
to polymerdao/optimism-dev
that referenced
this pull request
Jan 22, 2024
…dc809 (ethereum-optimism#9043) * contracts-bedrock: bump forge-std 1fd874f0efdb711cb6807c4f4a000ed2805dc809 Bumps `forge-std` to the latest commit that includes the `vm.dumpState` cheatcode. - foundry-rs/forge-std#499 - foundry-rs/foundry#6827 * contracts-bedrock: fix build
This was referenced Apr 26, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #6810
Motivation
We would like to be able to use deploy scripts to generate genesis states that can be used by client implementations.
This same genesis generation could be used for in memory testing, so that the exact same genesis state is used in both production networks as well as the unit tests.
Solution
Implements a cheatcode
vm.dumpState(string)
that dumps the current revm state to disk in the same format as the "allocs" field in a geth stylegenesis.json
. This can dump state that can be read in byvm.loadAllocs(string)
.The implementation of the cheatcode skips dumping system contracts. It includes various test coverage.