Skip to content

An example Starknet subgraph for testing Starknet Graph setup

Notifications You must be signed in to change notification settings

starknet-graph/example-subgraph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Starknet Graph example subgraph

An example Starknet subgraph for testing Starknet Graph setup

This simple subgraph that tracks the number of inbound and outbound transfers of the Ether token on starknet-mainnet.

Note

It's important to note that Starknet was initially launched without events, which means the oldest blocks contain no events at all. Since we're tracking ETH Transfer events here, it would be helpful to know that the first ever ETH Transfer event on mainnet was emitted in this transaction on block 2823. The subgraph would have no data if the Firehose stack hasn't synced past this block yet.

Prerequisite

This project requires Node.js to be installed.

You must also have a working Firehose Starknet stack with a properly configured graph-node connected to it:

  1. You can get the whole stack (including Firehose and graph-node) up and running with a single command by following the quickstart guide.
  2. Alternatively, you can set up a Firehose stack following the official docs, and configure a graph-node instance to connect to it as a Firehose provider.

Note

If you follow option 2 and you're using the official graph-node distribution (instead of the fork available in starknet-graph), make sure you're using version 0.33.0 or later, as earlier versions do not have Starknet support built in.

Note that the Starknet support in graph-node is still a work-in-progress. Improvements on features and performance are constantly being added. Make sure to upgrade your graph-node instances as newer versions become available.

Building and deploying

Clone and change directory into the repository, then install dependencies:

yarn install

Then generate code based on ABI and subgraph definition:

yarn codegen

Build the subgraph:

yarn build

Now you're ready to deploy the subgraph! Make sure your graph-node exposes a JSON-RPC endpoint at localhost:8020, and an IPFS node is available at localhost:5001, then run this command to create the subgraph:

yarn create-local

and this command to deploy the subgraph:

yarn deploy-local

Note

If your graph-node and IPFS endpoints are not available on the expected localhost ports, you'll need to run this command directly for subgraph creation:

yarn graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 starknet/example

and this command for deployment:

yarn graph create --node http://localhost:8020/ starknet/example

where http://localhost:8020/ and http://localhost:5001 are replaced by the actual URL.

Making queries

As noted above, the subgraph will only have data if it's synced past block 2823. Once that happens, you can make subgraph queries like so (assuming that the graph-node query endpoint is available at localhost:8000):

curl http://localhost:8000/subgraphs/name/starknet/example \
    -d '{
    "query": "{outboundTransfers(first:3,orderBy:count,orderDirection:desc){id count}}"
}'

The query above checks the top 3 accounts that made the most outbound ETH transfers. An example response looks like this:

{
  "data": {
    "outboundTransfers": [
      {
        "id": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "count": "9118"
      },
      {
        "id": "0x07c57808b9cea7130c44aab2f8ca6147b04408943b48c6d8c3c83eb8cfdd8c0b",
        "count": "2694"
      },
      {
        "id": "0x06cc9b6f10480352867a271cbf80a701b95bd5b580052af44171ac1fff3e428b",
        "count": "398"
      }
    ]
  }
}

Note

The subgraph used to generate this example response was not synchronized.

About

An example Starknet subgraph for testing Starknet Graph setup

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published