Verified Proxy: Pre-fetch state using eth_createAccessList and add caching to EVM calls #3373
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.
This is an example of how we can add caching to improve the performance of the RPC endpoints which use the EVM in the verified proxy.
I've also implemented an optimization where we call the downstream
eth_createAccessList
RPC endpoint to pre-fetch the expected account and storage keys and then fetch all the state usingeth_getProof
(slots for each account are batched together), and then the state is put in the caches before executing the EVM call.In my testing the pre-fetching provides a reasonable speed up but the verified eth_call is still slower then the unverified eth_call due to the additional network calls required which is to be expected.
Adding support for connecting to the downstream RPC provider via WebSockets would likely improve performance further.