Путь
деление по возрасту
Полный узелзафиксированные блоки как типизированные записи
Кешсвежее — из памяти
Файловое хранилищеистория — долговременно
Сервис данныхподаёт оба как один поток
Шлюз → REST · WebSocketдоступ, квоты, маршрутизация
Зачем это разделениеСлежение за головой чувствительно к задержке и невелико; исторические запросы велики и требуют пропускной способности. Одна дозагрузка по общему пути застопорила бы живой.
Слой отдачи данных, а не источник истиныЯдро выдаёт типизированные выходные данные с атрибуцией, поэтому индексатор переформатирует, а не домысливает. Расхождение с блокчейном — баг индексатора.
Зачем это разделение
Один сервис, который и следовал бы за головой цепочки, и отвечал бы на исторические запросы, не делал бы хорошо ни того ни другого. Слежение за головой чувствительно к задержке и невелико по объёму; исторические запросы чувствительны к пропускной способности и велики, и одна крупная дозагрузка застопорила бы живой путь. Разделение даёт вот что: дозагрузка нового потребителя данными многомесячной давности не портит поток маркет-мейкера, идущего за головой, и масштабировать эти два пути можно независимо — а это им нужно, потому что профили нагрузки у них не имеют ничего общего.На что можно полагаться
Можно. На всё, что индексатор отдаёт на основе зафиксированных блоков: исполнения, ордера, позиции, платежи финансирования, переводы, рыночные данные. Это переформатированные выходные данные блокчейна. Это другое. Всё, что ещё не зафиксировано. Ордер, принятый в мемпул, ещё не упорядочен, и индексатору о нём сказать нечего. Отсутствие в индексаторе означает «ещё не зафиксировано», а не «отклонено». Проверяемо. Если ответ достаточно важен — спор по расчётам, аудит, бухгалтерская сверка, — его можно сверить напрямую с блокчейном, а не брать из индексатора. Самая сильная форма этого — запустить собственный полный узел; именно так и следует поступать участнику, которому нельзя ошибаться. См. Запуск узла.Два потребителя, читающие один и тот же зафиксированный диапазон, должны получить один и тот же ответ. Если нет — расхождение сидит в пути отдачи данных, и о нём стоит сообщить как о баге, а не считать неизбежным свойством чтения блокчейна через индексатор.
Что дальше
Модель состояния
Что читает индексатор и какое представление авторитетно.
Разработчикам
Интерфейсы REST и WebSocket, SDK и инструменты.
Запуск узла
Как сверять с блокчейном самостоятельно и почему набор закрыт.
Программные сервисы
Кто потребляет этот поток, чтобы вычислять производное состояние счетов.