Gitcoin is GDPR complaint. Learn more in
Gitcoin's Terms & Conditions.
Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
EthQL can currently decode ERC20 transactions, and can support any ABI through its `decoder` service. We now want to extend the breadth the transaction decoding in EthQL by adding support for ERC721 (NFT) and ERC165 (supportsInterface). The latter is a fundamental step towards supporting more contract types in the near-future.
We also want to introduce the notion of _application-specific queries_ with CryptoKitties as an example.
- [x] Create `erc165` plugin that adds a `supportsInterface` field in `account` to query whether that contract supports the interface provided as an argument.
* Additionally, this plugin should add a service to make it possible for other plugins to query if a contract supports an interface.
- [x] Create `erc721` plugin, adding a decoder configuration for the ERC721 log events and transactions.
* Add a top-level query `nftContract(address: "0x...")` that exposes the ABI's view operations and public fields, including any relevant field edges (e.g. accounts mainly).
* `ERC721*` transaction/log types (in the same spirit as `ERC20*` transaction/log types) so they can be used from `decoded` fields.
* This plugin should use the service exposed by the `erc165` plugin to query if a contract is an NFT.
- [ ] Create a `cryptokitties` plugin.
* Analyse and propose which operations from the [CryptoKitties contract](https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d) should be exposed as EthQL queries.
* Decide together with the EthQL team the query/field design.
* Implement all agreed fields according to the _definition of done_ below.
## Definition of done
- [ ] Test cases with full coverage.
- [ ] PR accepted and merged, introducing a new top-level directory for each of the plugins generating an NPM module each (#107).
- [ ] Code commented, documented and linted.
- [ ] README and wiki updated listing and showcasing this functionality.