erigontech / erigontech/silkworm

RPC over state snapshots

Open
#2,409 0 comments 0 reactions 0 assignees View on GitHub
erigon3
Dominant language
C++
Stars
318
Forks
84
PR merge metrics
No merged PRs in 30d

Description

One of the main features of Erigon3 is moving most of the state content (i.e. account/storage/code) and its validity proof (i.e. commitment) to snapshot flat files. This architectural change requires deep modifications also to the data layout in the data storage (e.g. state history indexing) and a completely new access interface called Temporal KV (a.k.a. Data API).

Our implementation of RPC service must be changed to access the current state and the state history using such Data API, which can be used both in embedded (i.e. in-process) and standalone (i.e. out-of-process) modes of operation.

This is the main tracking issue. Individual issues are listed below:

- [x] remote: convert unit tests to use E3 point queries #2417
- [x] remote: `RemoteChainStorage` must use BACKEND I/F (no more KV I/F) to implement CanonicalHash and HeaderNumber functions #2426
- [x] remote: `StateReader` must use BACKEND I/F (not only KV I/F) to extend TxNum functions #2435 #2441
- [x] remote: migrate RpcDaemon data storage support to latest Erigon3 alpha release (currently alpha5) #2426 #2430 #2450
- [x] remote: reassessment RPC integration tests + update skipped tests in CI workflow
- [x] remote: transaction-level history granularity
- [x] support functions #2463 #2466
- [x] porting of API endpoints #2565 #2567 #2569 #2572 #2602 #2603
- [x] api: supporting set operations in TKV paginated iterators #2429 #2549
- [x] api: remove TotalDifficulty from JSON-RPC responses #2431
- [x] api: porting implementation on Data API
- [x] `debug_accountAt` #2524
- [x] `debug_accountRange` #2539
- [x] `debug_getModifiedAccountsBy[Hash|Number]` #2468
- [x] `debug_storageRangeAt` #2514
- [x] `eth_getLogs` #2563 #2545 #2584
- [x] `erigon_getBalanceChangesInBlock` #2517
- [x] `erigon_getLatestLogs` #2611 #2617
- [x] `ots_getTransactionBySenderAndNonce` #2469 #2488
- [x] `ots_searchTransactionsAfter` #2527
- [x] `ots_searchTransactionsBefore` #2520
- [x] `parity_listStorageKeys` #2449
- [x] `ots_getContractCreator` #2534
- [x] api: changes in expected response
- [x] `debug_traceCallMany` #2540
- [x] `debug_traceTransaction` #2456
- [x] `eth_estimateGas` #2478
- [x] `eth_feeHistory` #2455 #2492
- [x] `erigon_getHeaderBy[Hash|Number]` #2454
- [x] `eth_getBlockBy[Hash|Number]` #2487
- [x] debug intermittent failures in `txpool_content`
- [x] avoid intermittent failures in `trace_rawTransaction`
- [x] remove History from Data API #2521 #2530 #2535
- [x] api: improve `StateReader` implementation
- [x] latest state reader using `get_latest`
- [x] history state reader using `get_as_of`
- [x] revisit all API endpoints to use latest state reader where needed
- [ ] remote: revisit state cache implementation
- [ ] local: full test of all API endpoints on local Data API implementation

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.