1. Improve logging to include API method, user ID, etc in the output. We do this by intercepting the request details in the "middleware" and adding them to the request context, as well as adding a wrapper to logrus that simplifies including the fields in the output.
2. Breakdown API metrics by method. This will allow us to differentiate call counts and durations by API method (eg, eth_call vs eth_getStorageAt).
* Implement getSlice API for state nodes
* Implement getSlice API for storage nodes
* Fix the helper function to create a slice of required paths
* Fix query to get state leaf key for given storage root
* Add a test to get state slice for root path
* Add checks in queries to get canonical data
* Add tests to get state slice
* Add a todo for using an iterator
* Avoid filtering out removed nodes
* Add tests to get storage slice
* Remove logs
* Populate extra contract leaves field in the response
* Update tests
* Avoid EOAs in additional data in response
* Use iterator based approach for getSlice
* Skip undesired nodes from stem and head iterators
* Update storage slice tests
* Fix meta data updates
* Use state trie to get stem nodes directly using paths
* Bugfix - Continue processing other trie nodes on encountering a leaf
* Remove unnecessary TODO
* Add optional block number filter to getLogs API
* Use block number while fetching block with transactions
* Fix for failing tests
* Use block number when fetching block objects
* Use block number when fetching a tx by hash
* Add back methods to get block objects by block hash
* Update run_unit_test.sh
Removing echo command, as it seems to be only change in CICD.
* Increase wait time for db setup in unit test job
Co-authored-by: Michael <michael@abastionofsanity.com>
* cerc refactor waiting on unpublished dependencies
* cerc refactor updates for dependencies
* Describe imports got removed
* cleaning up more vulcanize refs in ci/cd
* another test lost Describe imports
* another test lost Describe imports... not caught in go build -a???
* more cerc-io migrations to utilize new git.vdb.to gitea instance
* switching back to github for running unit test
* first try at git.vdb.to as conatiner repository
* targeted tag was incomplete
* Update queries to fetch data from cids tables
* Fix eth_getTransactionByHash to return tx from canonical block
* Fetch transaction by hash in a single query
* Update queries to fetch data from IPLD blocks table
* Avoid NULL result from canonical block hash query
* Update GitHub workflow and script to run unit tests
* Avoid usage of LIMIT 1 in queries for GQL API
* Fetch IPLD data separately when retrieving latest account data or storage value
* Upgrade geth dependency
* Update GitHub workflow
* Use groupcache pool for state db access
* Group cache config and logging stats on timer
* Integrate state validator into server
* Use tagged ipfs-ethdb
* groupcache config for tests
* Work around duplicate registration of groupcache error in tests
* Use tagged version of eth-ipfs-state-validator
* State validation command.
* Validator for static replicas to keep cache warm
* Update docker go-version and go.mod.
* Address comments and self review.
* Fix ipfs-ethdb version.
Co-authored-by: Arijit Das <arijitad.in@gmail.com>
* getLogs API changes to return txHash, make contract arg optional.
* Populate log index.
* Add test for txn hash in GetLogs request.
* Convert tx string to common.Hash after fetching.
Co-authored-by: Arijit Das <arijitad.in@gmail.com>