Graphql

How to access the KalyChain API using GraphQL

GraphQL can reduce the overhead needed for common queries. For example, instead of querying each receipt in a block, GraphQL can get the same result with a single query for the entire block.

The [Kaly GraphQL schema] describes the GraphQL implementation for Ethereum. Enable the GraphQL service using command line options.

!!! note

GraphQL is not supported over WebSocket.

Access the GraphQL endpoint at http://<HOST>:<PORT>/graphql. Configure <HOST> and <PORT> using graphql-http-host and graphql-http-port. The default endpoint is http://127.0.0.1:8547/graphql.

GraphQL requests with cURL

KalyChain JSON-RPC API methods with an equivalent GraphQL query include a GraphQL request and result in the method example.

!!! example

The following [`syncing`](../../reference/api/index.md#eth_syncing) request returns data
about the synchronization status.

```bash
curl -X POST -H "Content-Type: application/json" --data '{ "query": "{syncing{startingBlock currentBlock highestBlock}}"}' http://localhost:8547/graphql
```

GraphQL requests with GraphiQL app

The third-party tool, GraphiQL, provides a tabbed interface for editing and testing GraphQL queries and mutations. GraphiQL also provides access to the [Kaly GraphQL schema] from within the app.

Pending

transactionCount and transactions supports the Pending query.

!!! important

Kaly does not execute pending transactions so results from `account`, `call`, and `estimateGas`
for Pending do not reflect pending transactions.

!!! example

=== "Pending transaction count"

    ```bash
    curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactionCount}}"}' http://localhost:8547/graphql
    ```

=== "Result"

    ```bash
    {
      "data" : {
        "pending" : {
          "transactionCount" : 2
        }
      }
    }
    ```

!!! example

=== "Pending transactions"

    ```bash
    curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactions{hash}}}"}' http://localhost:8547/graphql
    ```

=== "Result"

    ```bash
    {
      "data" : {
        "pending" : {
          "transactions" : [ {
            "hash" : "0xbb3ab8e2113a4afdde9753782cb0680408c0d5b982572dda117a4c72fafbf3fa"
          }, {
            "hash" : "0xf6bd6b1bccf765024bd482a71c6855428e2903895982090ab5dbb0feda717af6"
          } ]
        }
      }
    }
    ```

Last updated