polkadothub-indexer

command module
v0.7.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 10, 2021 License: Apache-2.0 Imports: 1 Imported by: 0

README

Description

Polkadothub Indexer project is responsible for fetching and indexing Polkadot data.

Internal dependencies:

This package connects via gRPC to a polkadothub-proxy which in turn connects to Polkadot node.

External Packages:

  • polkadothub-proxy - Go proxy to Polkadot node
  • indexing-engine - A backbone for indexing process
  • gin - Http server
  • gorm - ORM with PostgreSQL interface
  • cron - Cron jobs runner
  • zap - logging

Environmental variables:

  • APP_ENV - application environment (development | production)
  • PROXY_URL - url to polkadothub-proxy
  • SERVER_ADDR - address to use for API
  • SERVER_PORT - port to use for API
  • FIRST_BLOCK_HEIGHT - height of first block in chain
  • INDEX_WORKER_INTERVAL - index interval for worker
  • SUMMARIZE_WORKER_INTERVAL - summary interval for worker
  • PURGE_WORKER_INTERVAL - purge interval for worker
  • DEFAULT_BATCH_SIZE - syncing batch size. Setting this value to 0 means no batch size
  • DATABASE_DSN - PostgreSQL database URL
  • DEBUG - turn on db debugging mode
  • LOG_LEVEL - level of log
  • LOG_OUTPUT - log output (ie. stdout or /tmp/logs.json)
  • ROLLBAR_ACCESS_TOKEN - Rollbar access token for error reporting
  • ROLLBAR_SERVER_ROOT - Rollbar server root for error reporting
  • INDEXER_METRIC_ADDR - Prometheus server address for indexer metrics
  • SERVER_METRIC_ADDR - Prometheus server address for server metrics
  • METRIC_SERVER_URL - Url at which metrics will be accessible (for both indexer and server)
  • PURGE_BLOCK_INTERVAL - Block sequence older than given interval will be purged
  • PURGE_BLOCK_HOURLY_SUMMARY_INTERVAL - Block hourly summary records older than given interval will be purged
  • PURGE_BLOCK_DAILY_SUMMARY_INTERVAL - Block daily summary records older than given interval will be purged
  • PURGE_VALIDATOR_INTERVAL - Validator sequence older than given interval will be purged
  • PURGE_VALIDATOR_HOURLY_SUMMARY_INTERVAL - Validator hourly summary records older than given interval will be purged
  • PURGE_VALIDATOR_DAILY_SUMMARY_INTERVAL - Validator daily summary records older than given interval will be purged
  • INDEXER_TARGETS_FILE - JSON file with targets and its task names

Available endpoints:

Method Path Description Params
GET /health health endpoint -
GET /status status of the application and chain include_chain (bool, optional) - when true, returns chain status
GET /block return block by height height (optional) - height [Default: 0 = last]
GET /block_times/:limit get last x block times limit (required) - limit of blocks
GET /blocks_summary get block summary interval (required) - time interval [hourly or daily] period (required) - summary period [ie. 24 hours]
GET /transactions get list of transactions height (optional) - height [Default: 0 = last]
GET /account/:stash_account get account information for height stash_account (required) - stash account height (optional) - height [Default: 0 = last]
GET /account_details/:stash_account get account details stash_account (required) - stash account
GET /rewards/:stash_account get daily rewards for account stash_account (required), start (optional) - the starting era [Default: 1 = first], end (optional) - the ending era (if unspecified, returns latest)(optional)
GET /validators get list of validators height (optional) - height [Default: 0 = last]
GET /validators/for_min_height/:height get the list of validators for height greater than provided height (required) - height [Default: 0 = last]
GET /validator/:stash_account get validator by address stash_account (required) - validator's stash account sessions_limit (required) - number of last sessions to include eras_limit (required) - number of last eras to include
GET /validators_summary validator summary interval (required) - time interval [hourly or daily] period (required) - summary period [ie. 24 hours] stash_account (optional) - validator's stash account
GET /system_events get system events for validator after (optional) - height kind (optional) - system event kind [eg. "joined_active_set"]

Running app

Once you have created a database and specified all configuration options, you need to migrate the database. You can do that by running the command below:

polkadothub-indexer -config path/to/config.json -cmd=migrate

Start the data indexer:

polkadothub-indexer -config path/to/config.json -cmd=worker

Start the API server:

polkadothub-indexer -config path/to/config.json -cmd=server

IMPORTANT!!! Make sure that you have polkadothub-proxy running and connected to Polkadot node.

Running one-off commands

Start indexer:

polkadothub-indexer -config path/to/config.json -cmd=indexer_start

Create summary tables for sequences:

polkadothub-indexer -config path/to/config.json -cmd=indexer_summarize

Purge old data:

polkadothub-indexer -config path/to/config.json -cmd=indexer_purge

Running tests

To run tests with coverage you can use test Makefile target:

make test

Exporting metrics for scrapping

We use Prometheus for exposing metrics for indexer and for server. Check environmental variables section on what variables to use to setup connection details to metrics scrapper. We currently expose below metrics:

  • figment_indexer_height_success (counter) - total number of successfully indexed heights
  • figment_indexer_height_error (counter) - total number of failed indexed heights
  • figment_indexer_height_duration (gauge) - total time required to index one height
  • figment_indexer_height_task_duration (gauge) - total time required to process indexing task
  • figment_indexer_use_case_duration (gauge) - total time required to execute use case
  • figment_database_query_duration (gauge) - total time required to execute database query
  • figment_server_request_duration (gauge) - total time required to executre http request

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
mock
client
Package mock_client is a generated GoMock package.
Package mock_client is a generated GoMock package.
indexer
Package mock_indexer is a generated GoMock package.
Package mock_indexer is a generated GoMock package.
store
Package mock_store is a generated GoMock package.
Package mock_store is a generated GoMock package.
utils

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL