Skip to main content

Что такое индексер блокчейна

Индексеры преобразуют сырые данные блокчейна в структурированные базы данных, предназначенные для поиска и отображения информации. На основе таких баз работают блокчейн-эксплореры и другие продукты, включая кошельки и API. Узлы блокчейна не оптимизированы для обработки большого количества постоянных запросов, поэтому данные для таких сценариев извлекаются из индексера.
В экосистеме Whales индексер служит основой для API v4, который, в свою очередь, обеспечивает работу других продуктов компании.
ton-indexer-go — это индексер блокчейна TON (The Open Network), созданный командой Whales. Он загружает блоки и транзакции с узлов блокчейна, обрабатывает их и сохраняет структурированные данные в ScyllaDB. В результате получается индекс, который позволяет быстро искать транзакции по адресам, блокам, времени и другим критериям.
Репозиторий: https://github.com/whalescorp/ton-indexer-go\ Язык: Go

Для чего используется индексер

  • Создание индекса истории состояний аккаунтов — до и после каждой транзакции, включая баланс, хэши code и data, ячейки и библиотеки.
  • Создание индекса блоков — masterchain- и shard-блоков с метаданными, такими как seqno, shard, utime, BOC и другие.
  • Создание индекса для аналитики и эксплореров — построение блокчейн-эксплореров, дашбордов и сервисов, работающих поверх индекса без прямых запросов к узлам TON.

Отличия от похожих продуктов

  • Собственный индекс и собственная инфраструктура — данные хранятся в собственной ScyllaDB. Нет зависимости от сторонних API, таких как TON Center или TONAPI: обеспечивается полный контроль над схемой данных, объемом истории и SLA.
  • Два режима загрузки — поддерживается не только онлайн-синхронизация из сети через archsync, но и импорт из архива через archimport + tximport. Это позволяет быстро поднимать индекс с нуля на основе готового дампа или обрабатывать офлайн-бэкапы.
  • ScyllaDB, совместимая с Cassandra — выбрана из-за высокой нагрузки на запись, больших объемов данных и горизонтального масштабирования. Многие другие решения, например TON Center API v3, используют PostgreSQL, где другая модель масштабирования и запросов.
  • Глубокое индексирование состояния — сохраняются не только транзакции и блоки, но и состояния аккаунтов до и после транзакции, а также ячейки и библиотеки. Это удобно для эксплореров и аналитики, которым нужно “состояние аккаунта в конкретный момент времени”. При этом важно учитывать, что доказательства хранятся не полностью.
  • LT-buckets — специальная структура для быстрой пагинации истории транзакций по адресу и logical time без тяжелых scan-запросов.
  • Распределенный импорт — при работе с архивами несколько воркеров, то есть archimport и tximport, координируются через базу данных, что позволяет распараллеливать первичную загрузку.

Режимы работы

Индексер поддерживает два основных сценария:
  1. Онлайн-синхронизация (archsync) — подключается к TON через Lite Client, то есть lite servers, синхронизирует новые блоки в реальном времени и записывает данные в ScyllaDB.
  2. Импорт из архива (archimport + tximport) — читает готовые дампы блоков с диска, то есть архивные пакеты, а также транзакции, после чего импортирует их в ту же ScyllaDB. Этот режим используется для первоначальной загрузки истории или обработки офлайн-дампов.