Problem: RPC is complex with fetching data from everywhere in order to build response for Json-RPC queries. That can down performance.
Solution: build entire EVM block then indexes it during EndBlock. Later can just get block and return corresponding result for related Json-RPC endpoints.
Props:
- Enhance response time, instead of going around to query and build result.
Cons:
- Cost disk for Archival Nodes. Full Nodes are not effected much, since they have pruning enabled. Probably should remove ABCI events emitted to reduce disk size. Because current receipts & logs are being saved as ABCI events so removing this save the amount of space similar to the added.
Backward compatible for existing chains:
- Must keep current query implementation (legacy)
- Add a query to
x/evm keeper to see if block is available or not
- If not, check height of when feature is deployed
< enabled => fallback to legacy implementation.
>= enabled => it is pruned, returns error.
Steps:
Children tasks:
Problem: RPC is complex with fetching data from everywhere in order to build response for Json-RPC queries. That can down performance.
Solution: build entire EVM block then indexes it during
EndBlock. Later can just get block and return corresponding result for related Json-RPC endpoints.Props:
Cons:
Backward compatible for existing chains:
x/evmkeeper to see if block is available or not< enabled=> fallback to legacy implementation.>= enabled=> it is pruned, returns error.Steps:
x/evmstoreChildren tasks: