Найти в Дзене
TRON DAO Russian

Данные TRON в режиме реального времени с помощью The Graph Substreams

Этот гайд показывает, как интегрировать The Graph Substreams с сетью TRON, чтобы в реальном времени захватывать ончейн-активность, преобразовывать данные и передавать их в операционные системы. Мы поднимаем стек (Substreams + PostgreSQL), стримим отфильтрованные события USDT, сохраняем их в таблицы. Тот же поток можно использовать для ончейн-свипов или для отправки сообщений в Kafka. Почему Substreams для TRON? Substreams обеспечивает высокую пропускную способность и удобную композицию модулей для извлечения и трансформации данных блокчейна. Для TRON это особенно полезно в сценариях: платёжные потоки (депозиты/свипы USDT TRC-20), аналитика DeFi, и операционные и мониторинговые дашборды. Обзор архитектуры Конечные точки Substreams (StreamingFast): mainnet.tron.streamingfast.io:443 (нативные данные TRON), mainnet-evm.tron.streamingfast.io:443 (данные, совместимые с EVM). Пакет Substreams (SPKG): tron-foundational@v0.1.2 с такими модулями, как map_transactions и filtered_transactions. Ск
Оглавление

Этот гайд показывает, как интегрировать The Graph Substreams с сетью TRON, чтобы в реальном времени захватывать ончейн-активность, преобразовывать данные и передавать их в операционные системы. Мы поднимаем стек (Substreams + PostgreSQL), стримим отфильтрованные события USDT, сохраняем их в таблицы. Тот же поток можно использовать для ончейн-свипов или для отправки сообщений в Kafka.

Почему Substreams для TRON?

Substreams обеспечивает высокую пропускную способность и удобную композицию модулей для извлечения и трансформации данных блокчейна. Для TRON это особенно полезно в сценариях: платёжные потоки (депозиты/свипы USDT TRC-20), аналитика DeFi, и операционные и мониторинговые дашборды.

Обзор архитектуры

  • Конечные точки Substreams (StreamingFast): mainnet.tron.streamingfast.io:443 (нативные данные TRON), mainnet-evm.tron.streamingfast.io:443 (данные, совместимые с EVM).
  • Пакет Substreams (SPKG): tron-foundational@v0.1.2 с такими модулями, как map_transactions и filtered_transactions.
  • Скрипты для обработки данных: потребители на Node.js, которые анализируют файлы в формате JSONL и записывают данные в таблицы PostgreSQL.
  • База данных и API: PostgreSQL + PostGraphile для выполнения запросов через GraphQL после загрузки данных.
  • Дальнейшие действия: вы можете вызывать смарт-контракты (для перевода средств), публиковать данные в Kafka или запускать оповещения.

Структура проекта (пакет Substreams)

-2

Предварительные условия

  • Установлены Node.js и Yarn.
  • Docker запущен (для PostgreSQL).
  • Аккаунт StreamingFast и ключ API. Получите их в dashboard.

Однократная настройка

Клонируйте и перейдите в каталог пакета Substreams

git clone https://github.com/simbadMarino/scaffold-tron

cd scaffold-tron/packages/substreams

Установите Substreams CLI

MacOS

brew install streamingfast/tap/substreams

Linux

git clone https://github.com/streamingfast/substreams

cd substreams

go install -v ./cmd/substreams

Примечание: Для получения более подробной информации, пожалуйста, обратитесь к официальной документации по substreams.

Аутентификация с помощью StreamingFast

Вставьте и запустите следующие строки в консоли:

export STREAMINGFAST_KEY=”YOUR_STREAMINGFAST_API_KEY”

function sftoken {

export SUBSTREAMS_API_TOKEN=$(curl https://auth.streamingfast.io/v1/auth/issue-s — data-binary ‘{“api_key”:”’$STREAMINGFAST_KEY’”}’ | jq -r .token)

echo “Token set in SUBSTREAMS_API_TOKEN”

}

sftoken

Запустите PostgreSQL + PostGraphile

Перейдите в каталог packages/substreams и выполните следующее:

docker-compose up -d (legacy)

docker compose up -d

docker ps # expected: substreams-postgres-1, substreams-postgraphile-1

Загрузите базовый пакет TRON (один раз)

mkdir -p bin

substreams pack tron-foundational@v0.1.2 -o bin/tron-foundational-v0.1.2.spkg

substreams info bin/tron-foundational-v0.1.2.spkg

Быстрая демонстрация «Это работает»

Вспомогательные функции Yarn (быстрый путь)

yarn substreams:cleandb # optional

yarn substreams:demo # small range

yarn substreams:streamdb # fuller stream

Исходная команда CLI → Скрипт Node.js (явный)

substreams run ./bin/tron-foundational-v0.1.2.spkg map_transactions -emainnet.tron.streamingfast.io:443 -s 55000200 -t +100 | node scripts/stream-direct-to-db.js

Проверьте, что данные были успешно получены

docker exec -it substreams-postgres-1 psql -U tron_user -d tron_transactions -c “SELECT COUNT(*) FROM tron_transactions;”

Таргетированный захват данных по USDT (TRC-20)

Используйте серверные фильтры, чтобы ограничить поток только нужными вам событиями. Ниже приведены два примерных запроса, использованных в этом проекте — один для отправителя (from), второй для получателя (to). Просто подставьте свои адреса в поля from и to по необходимости.

Фильтр по отправителю — записываем списания (debits) в filtered_usdt_transactions

substreams run ./bin/tron-foundational-v0.1.2.spkg filtered_transactions -emainnet.tron.streamingfast.io:443 -s -1 -p ‘filtered_transactions=contract_type:TriggerSmartContract && contract_address:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t && from:TLj5jNLzaoR94c5WUH9uxpQAY3RZT6gh2y’ -o jsonl | node — max-old-space-size=8192 — expose-gc scripts/store-filtered-to-table.js

Фильтр по получателю — записываем поступления (credits) в filtered_usdt_to

substreams run -emainnet-evm.tron.streamingfast.io:443 ethereum-common@v0.3.3 filtered_events -s -1 -p

‘filtered_events=evt_addr:0xa614f803b6fd780986a42c78ec9c7f77e6ded13c &&

evt_sig:0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef’ -o jsonl | node — max-old-space-size=8192 — expose-gc scripts/store-filtered-to-table-credit.js TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf

Обе команды передают данные в формате JSONL скриптам Node.js, которые анализируют выходные данные Substreams и вставляют строки в таблицы PostgreSQL. Репозиторий содержит два скрипта: scripts/store-filtered-to-table.js и scripts/store-filtered-to-table-credit.js.

Запрос к вашим данным

Примеры SQL-запросов

  • docker exec -it substreams-postgres-1 psql -U tron_user -d tron_transactions -c “SELECT tx_hash,from_address,to_address,amount FROM filtered_usdt_transactions;”
  • docker exec -it substreams-postgres-1 psql -U tron_user -d tron_transactions -c “SELECT * FROM filtered_usdt_to;”
  • docker exec -it substreams-postgres-1 psql -U tron_user -d tron_transactions -c “SELECT COUNT(*) FROM tron_transactions;”

За пределами таблиц: действия в потоке данных

  • Ончейн-свип: после того как зафиксирован нужный депозит, вызываем смарт-контракт, который свипает средства на омнибусный кошелёк.
  • Kafka: публикуем каждое событие в Kafka-топик для антифрода, сверки (reconciliation) или сервисов алертинга.
  • Алерты: шлём уведомления в Slack/по e-mail при срабатывании порогов или появлении аномалий.

В рамках этого проекта мы приводим конкретный пример сохранения отфильтрованных событий в таблицах PostgreSQL, но тот же поток данных может использоваться для выполнения действий как в блокчейне, так и вне его, в зависимости от ваших потребностей.

Операционные аспекты

  • Идемпотентность: Substreams могут повторно отдавать блоки при реоргах или бэкфилле — используйте UPSERT и стабильные ключи.
  • Бэкфиллы: обрабатывайте исторические окна с чекпойнтами.
  • Пропускная способность: увеличивайте память Node.js(` — max-old-space-size`) и используйте пакетные вставки (batch inserts).
  • Безопасность: храните API-ключи и доступы к БД как секреты; ограничивайте роли и права в базе.
  • Ресурсы TRON: любой ончейн-свип или выплата потребляет энергию/пропускную способность — заранее планируйте спонсорство или стейкинг ресурсов.

Устранение неполадок

  • Unauthorized: обновите токен с помощью `sftoken` перед запуском `substreams run`.
  • Нет данных: ослабьте фильтры — для начала оставьте только `contract_address`.
  • Проблемы с БД: используйте готовый docker-compose; для полного ресета выполните `docker-compose down -v && docker-compose up -d`.
  • Неверный endpoint: проверьте, что используете правильный endpoint — нативный TRON или TRON EVM, в зависимости от кейса.

Заключение

С The Graph Substreams в сети TRON вы получаете реальный-тайм, масштабируемый доступ к ончейн-данным и понятный путь интеграции с продуктивными системами. Будь то телеметрия платежей, автоматические свипы или комплаенс-пайплайны — один и тот же поток данных может: сохраняться в базы, отправлять алерты командам, подпитывать аналитические системы, или запускать ончейн-действия. Единый стрим — множество боевых сценариев.

Ресурсы

Repository

Substreams

The Graph API Key