There are more than 2-3 million deployed smart contracts on the Ethereum network but there isn't an easy & consistent way to get real-time traffic insights for these smart contracts. Developers often have to implement their own analytics dashboards and alerting systems to monitor the smart contract execution. We have built a generic way to take care of this pain point for the smart contract developers.
What it does
ContractIQ consists of -
- UI Dashboards for contract execution analytics
- APIs to subscribe to contract events and get notified
We can slice and dice to get real-time information about all functions and events for any deployed smart contract and look at all this in dashboards. With ContractIQ it is possible to answer questions like below easily -
- What was the maximum sale price of the crypto kitty sold in the last hour?
- How many loans were originated from Compound smart contract in the last 7 days?
- How many SiringAuctionSale events occurred yesterday?
How we built it
We monitor each and every confirmed block on the network and record contract transactions. We match these with the smart contract interface definition (abi) and record the values in a generic way in the datastore. We then provide APIs and UI dashboards to slice and dice this data
Challenges we ran into
- Parsing and decoding input and data blocks from transactions and transaction receipts wasn't as easy as we thought it would be. Libraries like ethereumj & web3j came in handy for this.
- Developing this to be a generic framework so that this platform could work for any smart contract given its abi json was certainly challenging
- Designing this in a way that it can scale horizontally when Ethereum scales from 1 Million transactions per day to 10 Million per day or more took longer than expected time
Accomplishments that we're proud of
- We have our UI and APIs ready and deployed which we think can be production ready in around a month to 2 months worth of time.
What we learned
Indexing ETH data is a lot of work
What's next for ContractIQ
- Talk to contract developers to add more useful features in the platform
- If there is product-market fit then seek a grant from Ethereum foundation to build this as a hosted platform in a way rest of community can use and benefit from
- Developer communities - webj, angularjs 6, ethereum
- Infura (This project wouldn't be completed in time without Infura)
- NGAdmin website template developers