This repository is managed using Lerna and Yarn workspaces.
Chan is (or will be) used to maintain the following changelogs:
The indexer service and agent can be installed as NPM packages, using
npm install -g @graphprotocol/indexer-service --registry https://testnet.thegraph.com/npm-registry/
npm install -g @graphprotocol/indexer-agent --registry https://testnet.thegraph.com/npm-registry/
After that, they can be run with the following commands:
# Indexer service
graph-indexer-service start ...
# Indexer agent
graph-indexer-agent start ...
$ graph-indexer-service start --help
Start the service
Ethereum
--ethereum Ethereum node or provider URL [string] [required]
--mnemonic Ethereum wallet mnemonic [string] [required]
Indexer Infrastructure
--port Port to serve from [number] [default: 7600]
--graph-node-query-endpoint Graph Node endpoint to forward queries to
[string] [required]
--graph-node-status-endpoint Graph Node endpoint for indexing statuses etc.
[string] [required]
Network Subgraph
--network-subgraph-deployment Network subgraph deployment [string]
--network-subgraph-endpoint Endpoint to query the network subgraph from
[string]
Options:
--version Show version number [boolean]
--help Show help [boolean]
--free-query-auth-token Auth token that clients can use to query for free
[array]
$ graph-indexer-agent start --help
Start the agent
Ethereum
--ethereum Ethereum node or provider URL [string] [required]
--mnemonic Mnemonic for the wallet [string] [required]
Indexer Infrastructure
--graph-node-query-endpoint Graph Node endpoint for querying subgraphs
[string] [required]
--graph-node-status-endpoint Graph Node endpoint for indexing statuses etc.
[string] [required]
--graph-node-admin-endpoint Graph Node endpoint for applying and updating
subgraph deployments [string] [required]
--public-indexer-url Indexer endpoint for receiving requests from the
network [string] [required]
--indexer-geo-coordinates Coordinates describing the Indexer's location
using latitude and longitude
[array] [default: ["31.780715","-41.179504"]]
--index-node-ids Node IDs of Graph nodes to use for indexing
[array] [required]
--indexer-management-port Port to serve the indexer management API at
[number] [default: 8000]
Network Subgraph
--network-subgraph-deployment Network subgraph deployment [string]
--network-subgraph-endpoint Endpoint to query the network subgraph from
[string]
Protocol
--default-allocation-amount Default amount of GRT to allocate to a subgraph
deployment [string] [default: "0.01"]
Postgres
--postgres-host Postgres host [string] [required]
--postgres-port Postgres port [number] [default: 5432]
--postgres-username Postgres username [string] [default: "postgres"]
--postgres-password Postgres password [string] [default: ""]
--postgres-database Postgres database name [string] [required]
Options:
--version Show version number [boolean]
--help Show help [boolean]
Run the following at the root of this repository to install dependencies and build the packages:
yarn
After this, the indexer service and agent can be run with:
# Indexer service
cd packages/indexer-service
./bin/graph-indexer-service start ...
# Indexer agent
cd packages/indexer-service
./bin/graph-indexer-service start ...
The easiest way to run the indexer service agent is by using Docker. Docker images can either be pulled via
docker pull graphprotocol/indexer-service:latest
docker pull graphprotocol/indexer-agent:latest
or built locally with
# Indexer service
docker build \
--build-arg NPM_TOKEN=<npm-token> \
-f Dockerfile.indexer-service \
-t indexer-service:latest \
.
# Indexer agent
docker build \
--build-arg NPM_TOKEN=<npm-token> \
-f Dockerfile.indexer-agent \
-t indexer-agent:latest \
.
After this, the indexer agent and service can be run as follows:
-
Indexer service:
docker run \ -p 7600:7600 \ -it indexer-service:latest \ ...
After this, the indexer service should be up and running at http://localhost:7600/.
-
Indexer Agent
docker run \ -p 18000:8000 \ -it indexer-agent:latest \ ... ``` This starts the indexer agent and serves the so-called indexer management API on the host at port 18000.
Creating a new release involves the following steps:
-
Update all changelogs:
cd packages/indexer-service chan added ... chan fixed ... chan changed ... chan release <new-version> cd ../.. cd packages/indexer-agent ... cd ../..
-
Commit these changelogs:
git add packages/**/CHANGELOG.md git commit -m "Update changelogs ahead of release"
-
Publish a new release:
lerna publish
When it asks for the version to release, select the same one that was used when updating the changelogs.
Copyright © 2020 Graph Protocol, Inc.