The Graph's testnet is used to help test new features, get familiar with running an Indexer or set up a testbed for an existing mainnet Indexer.
For mainnet:
Component | Release |
---|---|
contracts | 1.11.1 |
indexer-agent | 0.18.6 |
indexer-cli | 0.18.6 |
indexer-service | 0.18.6 |
graph-node | 0.27.0 |
For testnet:
Component | Release |
---|---|
contracts | 1.13.0 |
indexer-agent | 0.20.2 |
indexer-cli | 0.20.1 |
indexer-service | 0.20.1 |
graph-node | 0.27.0 |
Mainnet (https://network.thegraph.com)
The Graph Network mainnet is open for everyone to participate in as an indexer. The only requirement is a minimum stake of 100k GRT.
Parameter | Value |
---|---|
Epoch length | ~ 24h |
Maximum allocation lifetime | ~ 28d |
Contract | Address |
---|---|
Graph Token (GRT) | 0xc944E90C64B2c07662A292be6244BDf05Cda44a7 |
Staking | 0xF55041E37E12cD407ad00CE2910B8269B01263b9 |
Indexer Agent
Environment Variable | CLI Argument | Value |
---|---|---|
INDEXER_AGENT_ETHEREUM |
--ethereum |
An Ethereum mainnet node/provider |
INDEXER_AGENT_ETHEREUM_NETWORK |
--ethereum-network |
mainnet |
INDEXER_AGENT_INDEXER_ADDRESS |
--indexer-address |
Ethereum address of mainnet indexer |
INDEXER_AGENT_INDEXER_GEO_COORDINATES |
--indexer-geo-coordinates |
Geo coordinates of mainnet indexer infrastructure |
INDEXER_AGENT_MNEMONIC |
--mnemonic |
Ethereum mnemonic for mainnet operator |
INDEXER_AGENT_NETWORK_SUBGRAPH_DEPLOYMENT |
--network-subgraph-deployment |
QmTePWCvPedmVxAvPnDFmFVxxYNW73z6xisyKCL2xa5P6e |
INDEXER_AGENT_NETWORK_SUBGRAPH_ENDPOINT |
--network-subgraph-endpoint |
https://gateway.thegraph.com/network |
INDEXER_AGENT_DAI_CONTRACT |
--dai-contract |
0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 (USDC) |
INDEXER_AGENT_COLLECT_RECEIPTS_ENDPOINT |
--collect-receipts-endpoint |
https://gateway.network.thegraph.com/collect-receipts |
INDEXER_AGENT_GAS_PRICE_MAX |
--gas-price-max |
50 |
In order to avoid collecting or claiming query fees below a certain threshold (e.g. below the cost of the two transactions), the following configuration option can be used.
Environment Variable | CLI Argument | Value |
---|---|---|
INDEXER_AGENT_REBATE_CLAIM_THRESHOLD |
--rebate-claim-threshold |
Minimum rebate (in GRT) received for an allocation to claim (Default: 200) |
INDEXER_AGENT_REBATE_CLAIM_BATCH_THRESHOLD |
--rebate-claim-batch-threshold |
Minimum total rebates (in GRT) before a batched claim is processed (Default: 2000) |
INDEXER_AGENT_VOUCHER_EXPIRATION |
--voucher-expiration |
Time (in seconds) to permanently delete vouchers with too few query fees (Default: 2160) |
Indexer Service
Environment Variable | CLI Argument | Value |
---|---|---|
INDEXER_SERVICE_ETHEREUM |
--ethereum |
An Ethereum mainnet node/provider |
INDEXER_SERVICE_ETHEREUM_NETWORK |
--ethereum-network |
mainnet |
INDEXER_SERVICE_INDEXER_ADDRESS |
--indexer-address |
Ethereum address of mainnet indexer |
INDEXER_SERVICE_MNEMONIC |
--mnemonic |
Ethereum mnemonic for mainnet operator |
INDEXER_SERVICE_NETWORK_SUBGRAPH_DEPLOYMENT |
--network-subgraph-deployment |
QmTePWCvPedmVxAvPnDFmFVxxYNW73z6xisyKCL2xa5P6e |
INDEXER_SERVICE_NETWORK_SUBGRAPH_ENDPOINT |
--network-subgraph-endpoint |
https://gateway.thegraph.com/network |
INDEXER_SERVICE_CLIENT_SIGNER_ADDRESS |
--client-signer-address |
0x982D10c56b8BBbD6e09048F5c5f01b43C65D5aE0 |
Graph Node
Environment Variable | CLI Argument | Value |
---|---|---|
ethereum |
--ethereum-rpc |
mainnet:<ethereum-json-rpc-url> |
ipfs |
--ipfs |
https://ipfs.network.thegraph.com |
Testnet (https://testnet.thegraph.com/, Goerli)
In order to participate in the testnet, you'll need Goerli ETH and GRT. To be eligible for testnet GRT, you'll need to
- join The Graph Discord,
- get the
@testnetindexer
role in the#roles
channel, - use the
#testnet-goerli-faucet
channel to obtain testnet GRT.
Via Graph Explorer
The Graph Explorer provides an easy way to approve and stake your GRT as an indexer via a web GUI.
- Navigate to the testnet explorer
- Login with Metamask and select the
Goerli
network - Navigate to your profile (click your address/avatar at top right)
- Select the
Indexing
tab and hit theStake
button - Follow the directions on the staking screen to stake the desired amount
To approve your testnet GRT to be spent through the staking contract, first approve it in the GRT contract:
git clone https://github.com/graphprotocol/contracts
cd contracts
# If you haven't done this before:
npm install
npm run compile
./cli/cli.ts -m <indexer-mnemonic> -p <ethereum-goerli-node> \
contracts graphToken approve --account 0x35e3Cb6B317690d662160d5d02A5b364578F62c9 --amount <grt>
Afterwards, stake this amount:
./cli/cli.ts -m <indexer-mnemonic> -p <ethereum-goerli-node> \
contracts staking stake --amount <grt>
Via Graph Explorer
- Navigate to the testnet explorer
- Login with Metamask and select the
Goerli
network - Navigate to your settings page (click profile dropdown at top right and select ⚙️
Settings
) - Navigate to the
Operators
settings (clickOperators
button) - Click
+
to add your operator wallet address - Follow instructions to submit transaction
./cli/cli.ts -m <indexer-mnemonic> -p <ethereum-goerli-node> \
contracts staking setOperator --operator <operator-address> --allowed true
Parameter | Value |
---|---|
Epoch length | ~ 4h |
Maximum allocation lifetime | ~ 1d |
Contract | Address |
---|---|
Graph Token (GRT) | 0x5c946740441C12510a167B447B7dE565C20b9E3C |
Staking | 0x35e3Cb6B317690d662160d5d02A5b364578F62c9 |
The Graph testnet contracts live on Goerli, but many of the subgraphs used in the testnet (for now) are Mainnet subgraphs. This means:
- Indexer Agent and Indexer Service must connect to Goerli
- Graph Node must connect to at least one Mainnet Ethereum node/provider
Indexer Agent
Environment Variable | CLI Argument | Value |
---|---|---|
INDEXER_AGENT_ETHEREUM |
--ethereum |
An Ethereum Goerli node/provider |
INDEXER_AGENT_ETHEREUM_NETWORK |
--ethereum-network |
goerli |
INDEXER_AGENT_INDEXER_ADDRESS |
--indexer-address |
Ethereum address of testnet indexer |
INDEXER_AGENT_INDEXER_GEO_COORDINATES |
--indexer-geo-coordinates |
Geo coordinates of testnet indexer infrastructure |
INDEXER_AGENT_MNEMONIC |
--mnemonic |
Ethereum mnemonic for testnet operator |
INDEXER_AGENT_NETWORK_SUBGRAPH_DEPLOYMENT |
--network-subgraph-deployment |
QmNhsC5jwSvwgYFdjBrjcc2YW8o7Xmo2WNZUHDukfRvzD4 |
INDEXER_AGENT_NETWORK_SUBGRAPH_ENDPOINT |
--network-subgraph-endpoint |
https://gateway.testnet.thegraph.com/network |
INDEXER_AGENT_DAI_CONTRACT |
--dai-contract |
0x9e7e607afd22906f7da6f1ec8f432d6f244278be (GDAI) |
INDEXER_AGENT_COLLECT_RECEIPTS_ENDPOINT |
--collect-receipts-endpoint |
https://gateway.testnet.thegraph.com/collect-receipts |
In order to avoid collecting or claiming query fees below a certain threshold (e.g. below the cost of the two transactions), the following configuration option can be used.
Environment Variable | CLI Argument | Value |
---|---|---|
INDEXER_AGENT_REBATE_CLAIM_THRESHOLD |
--rebate-claim-threshold |
Minimum rebate (in GRT) received for an allocation to claim (Default: 200) |
INDEXER_AGENT_REBATE_CLAIM_BATCH_THRESHOLD |
--rebate-claim-batch-threshold |
Minimum total rebates (in GRT) before a batched claim is processed (Default: 2000) |
INDEXER_AGENT_VOUCHER_EXPIRATION |
--voucher-expiration |
Time (in seconds) to permanently delete vouchers with too few query fees (Default: 2160) |
Indexer Service
Environment Variable | CLI Argument | Value |
---|---|---|
INDEXER_SERVICE_ETHEREUM |
--ethereum |
An Ethereum Goerli node/provider |
INDEXER_SERVICE_ETHEREUM_NETWORK |
--ethereum-network |
goerli |
INDEXER_SERVICE_INDEXER_ADDRESS |
--indexer-address |
Ethereum address of testnet indexer |
INDEXER_SERVICE_MNEMONIC |
--mnemonic |
Ethereum mnemonic for testnet operator |
INDEXER_SERVICE_NETWORK_SUBGRAPH_DEPLOYMENT |
--network-subgraph-deployment |
QmNhsC5jwSvwgYFdjBrjcc2YW8o7Xmo2WNZUHDukfRvzD4 |
INDEXER_SERVICE_NETWORK_SUBGRAPH_ENDPOINT |
--network-subgraph-endpoint |
https://gateway.testnet.thegraph.com/network |
INDEXER_SERVICE_CLIENT_SIGNER_ADDRESS |
--client-signer-address |
0xe1EC4339019eC9628438F8755f847e3023e4ff9c |
Graph Node
Environment Variable | CLI Argument | Value |
---|---|---|
ethereum |
--ethereum-rpc |
mainnet:... |
ipfs |
--ipfs |
https://ipfs.network.thegraph.com |