A GraphQL interface to Ethereum
EthQL is a server that exposes a GraphQL endpoint to the public Ethereum ledger. It works against the standard JSON-RPC APIs offered by all Ethereum clients. It is built in TypeScript, and thus leverages the vast ecosystem of GraphQL tooling while preserving compile-time type safety.
EthQL regards blockchain data as a graph, and leverages the extensibility of GraphQL to introduce additional functionality, amongst which are:
- Decoding of standard transactions (e.g. ERC20, ENS, ERC223, etc.) out of the box.
- New query patterns enabled by indexing solutions (e.g. all transactions between any two accounts).
- Automatic batching and caching of requests.
- New filtering capabilities.
- Simple, inline unit conversions.
- Enhancing public data with information overlays imported from other sources.
NOTE: This project is under heavy development.
You need a running Node environment with at least:
- nodejs >= 8.0.0
Clone the repo and run:
$ yarn install $ yarn bootstrap $ yarn run dev JSON-RPC (web3): Using HTTP(S) provider with endpoint: https://mainnet.infura.io/ Running a GraphQL API server at http://0.0.0.0:4000/graphql (browse here: http://localhost:4000/graphql)
This EthQL server uses Infura as a backend in anonymous mode. If you have an Infura project ID (and if you don't, you should sign up for one!) you can set it like this:
$ INFURA_ID=myid yarn run dev
debug module is included in Dev Dependencies
To turn on debugging:
We suggest fiddling with some Example Use Cases to see some queries in action.
For an in-depth guide on how to use EthQL, please start with the document Top-Level Queries. This document shows all of the root fields available to query, including information on specific block(s), transaction(s), and account(s).
The following sections provide a deep dive into all of the fields available on top-level queries:
- Block Query Fields
- Account Query Fields
- Transaction Query Fields
- Log Query Fields
- Decoded Transaction Query Fields
If you are interested in fixing issues and contributing directly to the code base, please see the document How to Contribute, which covers the following:
Please see also our Code of Conduct.
- Request a new feature on GitHub.
- Vote for popular feature requests.
- File a bug in GitHub Issues.
- Tweet us with other feedback
Who we are
PegaSys’ mission is to build blockchain solutions ready for production in business environments. We are committed to open source, and are creating a framework for collaborative innovation for the public-chain community and leading enterprises.
Our team is composed of engineers leading in the areas of big data processing, applied cryptography, open source computing, cloud services, and blockchain development.