subsquid
Search…
Hydra Indexer
Hydra Indexer is a daemon that ingests raw substrate data such as events and extrinsics from a substrate chain and saves it into a Postgres database. It is typically used in conjunction with Hydra Indexer Gateway providing a GraphQL API interface.

Installation

Hydra Indexer is distributed as a set of docker containers. Please have a look at https://github.com/subsquid/hydra-template/blob/main/indexer/docker-compose.yml for an example of how to setup your own indexer instance.

Environment variables

The indexer is set up using the following environment variables
Variable
Default
Required
Description
WS_PROVIDER_ENDPOINT_URI
-
Yes
Substrate API endpoint to connect
REDIS_URI
-
Yes
Redis instance URI
DB_NAME
-
Yes
Database name
DB_PORT
-
Yes
Database port
DB_HOST
-
Yes
Database host
DB_USER
-
Yes
Database user
DB_PASS
-
Yes
Database password
BLOCK_HEIGHT
0
No
Block height to start indexing. Ignored if the database already contains indexed blocks
TYPES_JSON
-
No
Path to a JSON file with custom types (ApiPromise.create({types: TYPES_JSON}))
TYPES_ALIAS
-
No
Path to a JSON file with type aliases (ApiPromise.create({typesAlias: TYPES_ALIAS}))
SPEC_TYPES
-
No
Path to a JSON file with spec types (ApiPromise.create({typesSpec: SPEC_TYPES}))
CHAIN_TYPES
-
No
Path to a JSON file with chain types (ApiPromise.create({typesChain: CHAIN_TYPES}))
BUNDLE_TYPES
-
No
Path to a JSON file with typesBundle (ApiPromise.create({typesChain: BUNDLE_TYPES}))

Advanced environment variables

Some optional environment variables are available for fine-tuning.
Variable
Default
Description
BLOCK_CACHE_TTL_SEC
60*60
TTL for processed blocks in the Redis cache
INDEXER_HEAD_TTL_SEC
60*15
TTL for the indexer head block entry
WORKERS_NUMBER
5
Number of concurrent workers fetching the blocks
BLOCK_PRODUCER_FETCH_RETRIES
3
Number of attempts fetching each a block before throwing an error. Set to -1 for indefinite attempts
SUBSTRATE_API_TIMEOUT
1000 * 60 * 5
Timeout in (milliseconds) for API calls
NEW_BLOCK_TIMEOUT_MS
60 * 10 * 1000
Panic if no blockchain blocks have been received within this time
DB_LOGGING
error
No
Last modified 7d ago