-
Notifications
You must be signed in to change notification settings - Fork 2k
feat(anvil
): op support revm 21
#10407
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
Merged
Merged
+579
−174
Conversation
This file contains hidden or 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
* adds OpEnv to foundry_evm_core
*Map OpHaltReason and OpTransactionError
anvil
): op support revm 21
11 tasks
yash-atreya
added a commit
that referenced
this pull request
Apr 29, 2025
* downgrade op-revm to 2.0.0 to resolve dep conflict * op-revm 3.0 uses revm 22 * add `as_mut_dyn` to trait `MaybeFullDatabase` as we now require mut db_ref access ( * Revert "add `as_mut_dyn` to trait `MaybeFullDatabase` as we now require mut db_ref access (" This reverts commit 84d11f1. * fix: Inspector should be generic over CTX not DB * fixes helpers: new_evm_with_inspector_* to use CTX generic * fix: pass TxEnv to evm.transact * fix: inspector inference in TransactionExecutor and build_access_list_with_state * workaround: dup LogCollector to use with AnvilEvmContext * coz FoundryEvmContext is not generic over DB, instead hardoded to dyn DatabaseExt * fix tests * fix traces test * fix: use default kzg settings in blob validation * reintroduce OptimismHardfork * fix: disable nonce check if nonce is None * fix!: load state tests by addressing breaking changes in state files * BlockEnv Breaking change: - most fields now use `u64` instead of `U64` / `U256` - coinbase renamed to beneficiary - best_block_number is `u64`, prev `U64` * fix: access_list test by using evm.inspect_with_tx * fix: replace evm.transact with evm.inspect_with_tx * fix: make impl Inspector for AnvilInspector generic over CTX * fix: clone inspector in TransactionExecutor to enable evm.inspect_commit * fix: remove cloned inspector from TransactionExecutor * feat(`anvil`): op support revm 21 (#10407) * enable OpHardforks in NodeConfig * feat: add is_optimism flag to foundry_evm::Env * feat(`anvil`): set is_optimism in Backend * feat(`anvil`): introducing EvmContext enum holding Eth and Op variants. * adds OpEnv to foundry_evm_core * feat: EitherEvm * impl Evm for EitherEvm * integrate EitherEvm into RPC and executor *Map OpHaltReason and OpTransactionError * rm old evm helpers * feat(`foundry_evm`): add deposit tx parts field to Env * fix(`anvil`): set deposit tx parts in tx executor and backend.inspect_tx * nit * docs EitherEvm * nit * refac: return TxEnv and Deposit parts separately * nits * nit * make anvil result aliases more generic * nit
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.
Motivation
Adds OP Support to anvil using revm 21
To be merged into #10361
Solution
EitherEvm
which is an enum with EthEvm and OpEvm as its variantsalloy_evm::Evm
forEitherEvm
which delegates the transact request to the correct EVM depending on whether--optimism
has been enabledEvm
works over vanilla ethTxEnv
but the transact results are mapped toOpHaltReason
andEVMError<DBError, OpTransactionError>
. Opted for OP result and error types as they are supersets of the eth types.PR Checklist