The project is deprecated. Please use TON-ETL if you are looking for high-level decoding pipelines
TON Indexer stores blocks, transactions, messages in Postgres database and provides convenient API.
Before building docker images make sure you have updated submodules:
git submodule update --init --recursive
Recommended hardware: 2 CPU, 16 GB RAM, 200 GB disk, SSD recommended.
Prerequisites: docker, docker-compose
- Setup environment variables:
TON_INDEXER_LITE_SERVER_CONFIG
(required) — path to liteserver config file with your liteserver. If config file contains more than 1 lite serverLITESERVER_INDEX_BACKWARD
/LITESERVER_INDEX_FORWARD
will be used.LITESERVER_INDEX_BACKWARD
/LITESERVER_INDEX_FORWARD
(default: 0) — index of liteserver from the config file for backward/forward indexerTON_INDEXER_START_SEQNO
(required) — masterchain seqno to start with. The service starts indexing from this value in 2 directions: to the latest blocks and to the earliest blocks.TON_INDEXER_BOTTOM_SEQNO
(required) — the earliest masterchain seqno. The service will not index blocks earlier this value. Make sure that this seqno exists in lite server that you are using.TON_INDEXER_HTTP_PORT
(default: 80) — port for API webserver.TON_INDEXER_WEBSERVER_WORKERS_COUNT
(default: 1) - number of webserver gunicorn workers.TON_INDEXER_BACKWARD_WORKERS_COUNT
(default: 5) — number of parallel workers to process backward direction.TON_INDEXER_FORWARD_WORKERS_COUNT
(default: 2) — number of parallel workers to process forward direction.
- Create file
private/postgres_password
containing password to the Postgres database (without newline). - Build services:
docker-compose build
. - Run services:
docker-compose up -d
. - Stop services:
docker-compose down
. Run this command with-v
flag to remove volume with Postgres DB.
To use your own lite server you should set TON_INDEXER_LITE_SERVER_CONFIG
to config file with your only lite server.
- If you use MyTonCtrl on your node you can generate config file with these commands:
Config file will be saved at
$ mytonctrl MyTonCtrl> installer MyTonInstaller> clcf
/usr/bin/ton/local.config.json
. - If you don't use MyTonCtrl: copy
config/mainnet.json
and overwrite sectionliteservers
with your liteservers ip, port and public key. To get public key fromliteserver.pub
file use the following script:python -c 'import codecs; f=open("liteserver.pub", "rb+"); pub=f.read()[4:]; print(str(codecs.encode(pub,"base64")).replace("\n",""))'
- Once config file is created assign variable
TON_INDEXER_LITE_SERVER_CONFIG
and restart the services.