* Refactor db methods getPrevEntityVersion and getFrothyRegion.
* Filter out entities from pruned blocks.
* Pull saveContract and getModelEntities to util.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Refactor common code in uni-watcher and uni-info-watcher.
* Implement client.ts in uni-info-watcher for queries and use in smoke-test.
* Disable cache in graphql client.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Implement hierarchical query for checking ancestor block.
* Prune blocks together in single query.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Create dummy test blocks and refactor test code.
* Intial test for pruning block in a chain without branches.
* Add test for pruning with multiple branches.
* Add test for pruning at frothy region.
* Test for pruning block at height more than max reorg depth.
Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
* Implement block filler for uni-info-watcher.
* Pull common code for Block filler to util.
* Watch for job events in block filler command.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Implement heirarchical query for getting previous entity.
* Check entity id in hierarchical query to limit number of recursions.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Insert and remove a dummy BlockProgress from db.
* Test to fetch a Token entity from pruned region.
* Check if db is empty initially.
* Test to fetch a Token entity from frothy region.
* Test to fetch a Token from frothy region (same block num).
* Test to fetch a Token entity from another branch.
* Tests to fetch a Token entity (multiple tokens).
* Test to fetch updated Token entity in pruned region.
Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
* Implement watcher for Lighthouse StorageRequest event.
* Add smoke test for lighthouse watcher.
* Add fileCost as value to Lighthouse store call.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Add resolver for Position entity in uni-info-watcher.
* Test for entities after TransferEvent.
Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
* Run db operations inside event handlers atomically using transaction.
* Implement database transaction for Pool Initialize event.
* Implement typeorm transaction without callback.
* Implement transaction for NFPM event handlers.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Test for Token & Factory entities after MintEvent.
* Test for Pool, Mint & Tick entities after MintEvent.
Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
* Smoke test for uni-info-watcher and refactor token deployment code.
* Test for Token entity after PoolCreated event.
* Test for Pool entity after PoolCreated event.
* Tests for entities after InitializeEvent.
Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
* Implement transaction from to set entity origin field.
* Add all transaction fields specified in schema and add delay in uni-info block processing.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Created a smoke test for uni-watcher.
* Added test for createPool.
* Added more pool tests.
* Using ethers instead of hardhat-ethers in smoke test.
Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
* Use getEntities to get result for queries.
* Implement resolver for Mint entity.
* Implement resolvers for Pool and PoolDayData entities.
* Add query resolver for Swap entity.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Implement last processed event in uni-info-watcher.
* Check if block or event is already processed.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Implement eth_call for ERC20 totalSupply.
* Use eth_call for erc20-watcher.
* Implement fallback for ERC20 symbol method call.
* Implement fallback for ERC20 name and totalSupply.
* implement fallback for erc20 decimals method.
* Lint fixes.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Watch all blocks and fetch events for each block.
* Implement getPrevVersionEntity in database.
* Implement getPrevVersionEntity for PoolCreated event.
* Implement getPrevEntityVersion for Pool events.
* Implement getPrevEntityVersion for NFPM events.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Split get and set entity for PoolCreated and Initialize events.
* Split get/set entity for Mint, Burn and Swap events.
* Split get/set entity for IncreaseLiquidity and DecreaseLiquidity events.
* Split get/set for NFPM Transfer and Collect events.
* Add blockHash to entities.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Handle reorgs upto known canonical block hash.
* Process block events strictly in order.
* Support filling old blocks, process in-order.
* Always publish block progress.
* Extra info in events for downstream processing.
* Changes in uni-info-watcher after change in uni-watcher event schema.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Handle mint event and update Factory fields.
* Integrate decimal.js with typeorm.
* Update transaction in Mint event.
* Update day and hour data.
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
* Initial setup with hardhat.
* Deploy Factory contract.
* Deploy tokens and create pool using factory contract.
* Deploy contract to private network.
* Implement separate scripts for deploying Factory, Token and Pool.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* Analyse entity aggregations in uniswap subgraph.
* Analyse entity aggregation for Day data and Hour data entities.
* Design notes.
* Reorg, split analysis files.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* List down view method in uniswap core contracts.
* List queries used in uniswap subgraph frontend.
* Analyse uniswap subgraph entities with mappings.
* Generate schema graphql file for uniswap subgraph.
* Schema graphql for queries used in subgraph frontend.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* eth-client API to get transaction in block.
* Job queue to process tracing requests.
* Request traces from job queue runner.
* Max trace completion lag time config for downstream events.
* Assert proof data for intial test cases of value type variables.
* Assert proof data for value type variables integers and bytes.
* Assert proof for dynamic byte arrays and strings.
* Assert proof for fixed array types.
* Assert proof for dynamic array types.
* Assert proofs for nested arrays.
* Assert proof for struct type variables.
* Assert proof for mapping type variables.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* Refactor transaction wait for value types and arrays.
* Refactor transaction wait for reference type variables.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* Implement test for getStorageValue with geth server.
* Wait for transaction to complete in tests.
* Implement tests with ipld-eth-client using graphql endpoint.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* Maintain cache of previous address resolution.
* Indent using tabs in call_address_tracker to keep diffs sane.
* Undo aggressive falsifying of potential addresses.
* Capture opcode from prev step, more mainnet tx traces.
* Tests for fixed array of struct type.
* Add tests for maps with struct type value and double nested maps.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* Add tests for structs with fixed array and string type
members.
* Refactor functions in solidity-mapper storage.
* Add tests for getting array and string type member value in struct.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* Implement getting value for struct types.
* Add tests for structs with value type memebers.
* Add tests for verifying proof in struct type.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* Tests for mapping with value type keys.
* Add test for mapping with string type keys.
* Add test for mapping with dynamically-sized byte array as keys.
* Add tests for nested mapping.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* Implement getting value for basic mapping type.
* Add test for basic mapping type.
* Implement getting value for nested mapping type.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* Set up typescript build and eslint.
* Automatic lint fixes.
* Fix argument type warnings.
* Fix function return types.
* Fix typescript errors in watcher.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* Add tests for getStorageInfo and getEventNameTopics.
* Lint solidity-mapper package code.
* Add test for contract type.
* Add test for fixed size byte arrays.
* Add test for Enum types.
* Add tests for variables packed together and using single slot.
* Fix comments in test contracts.
Co-authored-by: nikugogoi <95nikass@gmail.com>
* Update mock server and tests for additional ERC20 state vars.
* Refactor eth-client getStorageAt, impl totalSupply.
* Impl ERC20 API for name, symbol.
* Initial setup with hardhat and typescript.
* Add test for integer type.
* Add test for unsigned integer type.
* Add test for boolean type.
* Add test for address type.
* Add test for string type.
* Setup building library with typescript.
* Remove hardhat dependency from getStorageValue library function.
* Move contracts to test and remove deploy script.
* Add readme for running tests.
Co-authored-by: nikugogoi <95nikass@gmail.com>