Skip to content

feat(anvil): use ContextPrecompile instead of Precompile in Anvil's precompile injection API #7703

Open
@alexfertel

Description

@alexfertel

Component

Anvil

Describe the feature you would like

We've been using the new precompile injection API created in #7589, and it's working well.

After some use, the need for ContextPrecompile arose: we needed a way to get the code of an account, and with the params of Precompile, this can't be done. If I understand correctly the implementation in revm, ContextPrecompile does give access to account state through InnerEvmContext::code_hash.

Since ContextPrecompile is a superset of Precompile, this should be fine. I tried making an initial PoC, but the generics of ContextPrecompile<DB: Database> get a bit in the way.

Current workaround is creating a provider inside the precompile and making a get_code_at async call. This works fine, it's just that it's a bit awkward having to make an RPC call, when we are executing in the context of an EVM.

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions