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.
Overview
Introduces a new cheatcode,
loadAllocs
, which allows for directly inserting accounts into the in-memory revm state from anallocs
section of a standardgenesis.json
file.Motivation
Several Layer 2s, including Optimism, allocate many proxies etc. in the genesis file. For example, take Base Mainnet's 8.76MB genesis file.
While it is possible to deploy all of these contracts manually in a test file's
setUp
function, it is slow, cumbersome, and rather easy to accidentally break parity.Solution
To allow for quicker and more ergonomic test setups in situations like the above, I've added a new
loadAllocs
cheatcode. This takes a path to a JSON file containing only theallocs
object within a standardgenesis.json
, and directly inserts these accounts into revm's journal.Alloc File Schema
The alloc file is simply the
allocs
section of a standard Genesis JSON file - that is,HashMap<Address, GenesisAccount>
, whereGenesisAccount
is defined inethers-rs
as:Testing
Accompanying tests for the new cheatcode have been added in
testdata
.Metadata
closes #6126