EthQL Update and ETHDenver Recap
This past weekend in Colorado, Infura participated in yet another spectacular ETHGlobal event. ETHDenver, now in its second year, was even bigger and better and showcased so much progress and development activity over the last year in the Ethereum community.
E.G. Galano and Kris Shinn led a workshop showcasing EthQL and our ongoing efforts and investment in building a standards-based implementation of a GraphQL interface for accessing Ethereum data.
Our strategy with EthQL, follows our existing API strategy of following an open standards based model. To that end, we are collaborating with the community on two variants: Standard and Extended.
EthQL Standard
A core set of standard EthQL building blocks enable compatibility and simplicity. We are working on this standard ratified as an EIP with the goal of having a GraphQL API standard implemented in the Ethereum client itself. We’ve collaborated with the Ethereum client developers and have the initial work on this standard included within the go-ethereum codebase to be released in the next 1.8.x and 1.9 versions of go-ethereum (geth). Support within the Pantheon, Parity, and other clients we hope will be forthcoming.
EthQL Extended
Building on top of the embedded EthQL standard in the clients, EthQL Extended serves as an overlay that can be extended and fit for purpose for the developers specific needs. EthQL Extended is being developed based on a plug-in architecture so that is customizable and extendable to include more exotic ERCs, specific implementations for systems like ENS, and optimizable for developer specific deployed contracts. In addition, extended filtering and querying will be built.
EthQL Features
✅ Block selection: single block, range of blocks, a list of blocks.
✅ Navigating through blocks and accounts.
✅ Automatic batching of requests (via a specialized Web3 + DataLoader).
✅ Transaction filters: with input data, with logs, contract creations.
✅ X-raying into transactions and logs via pluggable decoders.
✅ ERC20 support: token balances, symbol, total supply, etc.
✅ Traversing storage: drilling into maps, arrays, maps of maps, etc.
✅ JSON-RPC transport selection.
By building EthQL as an open standard, it enables community tooling and improvements to be built and contributed across the developer community. At EthDenver, we sponsored $3,000 worth of prizes and a bounties.
The prize was taken by Scott Street and Ryan Christoffersen of Colony. Their project was to build a Client-Side EthQL Library Generator (now named ethpollo). These JavaScript libraries are able to interact with contracts via EthQL without custom servers.
Another winning team and prize was claimed by Aidan Musnitzky, Billy Rennekamp and Theo Ephraim.
This team built a GraphQL playground directly into the Chrome Inspector Developer Tools. They also added an assortment of pre-populated example EthQL queries to make it super quick and easy to get at different blockchain query types. Congratulations to this team and we look forward to seeing what else will be built for EthQL.
Getting Started
To run EthQL using your own local Ethereum node:
git clone https://github.com/ConsenSys/ethql.git
cd ethql
yarn dev -j <your nodes json rpc>
Go to http://localhost:4000
An easier way to get started is to use Infura as your node provider. If you don’t have an Infura account, sign-up and generate a Project ID from the Infura Dashboard, then:
git clone https://github.com/ConsenSys/ethql.git
cd ethql
INFURA_ID=”<apikey>” yarn dev
Go to http://localhost:4000
We invite you to participate and share how you are using EthQL and what you would like to see next. Our github repo is here: https://github.com/ConsenSys/ethql, stop by and say hi with a star!