refactor!: Create a shared EVM module #4688
Draft
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.
Why this should be merged
This also shared go-ethereum code to be used by both coreth and subnet-evm without violating licensing issues. Furthermore, it allows testing with both sets of registrations.
This maybe shouldn't be merged in its current form. Likely, it would be easier to just create the module and CI in one PR, and then add a simple implementation in a different PR
How this works
Commit 1 preps a new module and CI for shared evm code.
Commit 2 moves the RPC package, and adds abstractions for testing ease. The dubious part is definitely the global for knowing whether it's a coreth or subnet-evm test for when we need to check constants.
How this was tested
Well it passes CI! To be convinced that both registrations are run and either will cause a CI failure, I recommend checking this out locally and altering the constant set in
graft/evm-shared/rpc/subscription_test.go.Need to be documented in RELEASES.md?
No?