GraphChain представляет собой комплексное решение для анализа, отслеживания и визуализации транзакций в блокчейне. Система позволяет получать данные о блоках и транзакциях, отслеживать цепочки вызовов между контрактами, хранить метаданные адресов и протоколов, а также выполнять проверки безопасности.
Система состоит из следующих компонентов:
- Прокси-сервер (Backend) - основной компонент, обрабатывающий запросы от клиентов и управляющий взаимодействием с другими сервисами.
- Сервер логики - отвечает за получение и обработку данных из блокчейна.
- Сервер безопасности - выполняет анализ безопасности адресов.
- База данных (PostgreSQL) - хранит метаданные адресов, протоколов и снимков состояния сети.
- Получение номера последнего блока
- Получение списка транзакций в блоке
- Получение цепочек вызовов для конкретного адреса
- Получение цепочек вызовов для блока
- Анализ связей между контрактами
- Хранение и получение информации об адресах
- Хранение и получение информации о протоколах
- Создание новых протоколов
- Создание и обновление снимков с координатами узлов
- Получение данных снимка вместе с трассировками между узлами
- Визуализация связей между адресами
- Анализ безопасности адресов
- Кэширование результатов проверок
- Клиент отправляет запрос на прокси-сервер.
- Прокси-сервер определяет тип запроса и перенаправляет его в соответствующий сервис:
- Запросы о блоках и трассировках направляются на сервер логики
- Запросы проверки безопасности направляются на сервер безопасности
- Запросы метаданных обрабатываются через базу данных
- Полученные данные объединяются, обогащаются метаданными и возвращаются клиенту.
Система предоставляет документированное API через Swagger UI, доступное по адресу /api-docs. Основные эндпоинты включают:
/api/blockNumber- получение номера последнего блока/api/block/:blockNumber- получение транзакций для указанного блока/api/trace- получение трассировок для адреса, транзакции или блока/api/metadata/address/:address- получение метаданных для адреса/api/metadata/protocols- получение списка всех протоколов/api/snapshot/:snapshotName- получение снимка состояния сети/api/security/check/:address- проверка безопасности адреса