graphprotocol/graph-node: индексация блокчейн-данных для GraphQL

graphprotocol/graph-node: индексация блокчейн-данных для GraphQL

graphprotocol/graph-node — это инструмент для индексации данных из блокчейнов, таких как Ethereum, и их подачи через GraphQL. Он позволяет разработчикам быстро получать доступ к блокчейн-данным, организуя их в удобном формате, что особенно полезно для создания децентрализованных приложений.

Главное отличие от альтернатив заключается в том, что graph-node поддерживает Subgraphs, которые позволяют извлекать и структурировать данные с вашей блокчейн-сети. Этот проект пригодится разработчикам, работающим с Web3, а также тем, кто хочет вносить улучшения в сам graph-node. Для запуска можно использовать Docker-образы или собирать проект из исходников, требуемые инструменты включают Rust и PostgreSQL.

Имей в виду, что проект активно развивается, и рекомендуется ознакомиться с официальной документацией перед началом работы. Убедись, что используешь последнюю стабильную версию Rust, так как она критична для работы.

Проект graphprotocol/graph-node является компонентом протокола The Graph, который занимается организацией и распределением данных из блокчейнов на ведущих Web3-сетях. Основное назначение Graph Node — это индексирование и выполнение запросов к данным, хранящимся в блокчейнах.

Этот проект интересен разработчикам Subgraph — вспомогательных структур, организующих данные из блокчейна. Также он полезен для тех, кто хочет внести изменения в сам graph-node. Для более подробной информации рекомендуется ознакомиться с официальной документацией по Subgraphs.

Установка и запуск

Существует несколько способов запуска graph-node: с использованием Docker и из исходников.

Запуск из Docker

Для разработчиков субграфов рекомендуется использовать предсобранные Docker-образы. Установку и настройку можно произвести следуя этим инструкциям.

Запуск из исходников

Для этого необходимо установить следующие компоненты:

  • Rust (последняя стабильная версия).
  • PostgreSQL — база данных, необходимая для хранения данных graph-node.
  • IPFS для хранения данных.
  • Protobuf Compiler для работы с сериализацией данных.

После установки PostgreSQL необходимо создать базу данных с нужной конфигурацией, выполнив следующие команды в psql:

psql -U <SUPERUSER> <<EOF
create user graph with password '<password>';
create database "graph-node" with owner=graph template=template0 encoding='UTF8' locale='C';
create extension pg_trgm;
create extension btree_gist;
create extension postgres_fdw;
grant usage on foreign data wrapper postgres_fdw to graph;
EOF

Затем нужно задать строку подключения к базе данных в переменной окружения:

export POSTGRES_URL=postgresql://graph:<password>@localhost:5432/graph-node

После этого можно собрать и запустить graph-node с помощью следующей команды:

cargo run -p graph-node --release -- \
  --postgres-url $POSTGRES_URL \
  --ethereum-rpc NETWORK_NAME:[CAPABILITIES]:URL \
  --ipfs 127.0.0.1:5001

При старте graph-node выведет порты, на которых доступен API, включая основной GraphQL HTTP сервер, который по умолчанию работает на http://localhost:8000.

Развертывание Subgraph

После запуска graph-node можно развернуть Subgraph, следуя руководству по развертыванию. Для этого потребуется установить graph-cli.

Дополнительные возможности

graph-node поддерживает различные конфигурации хранения логов, включая локальные файлы, Elasticsearch и другие. Пример настройки логирования через файлы приведен ниже:

cargo run -p graph-node --release -- \
  --postgres-url $POSTGRES_URL \
  --ethereum-rpc mainnet:archive:https://... \
  --ipfs 127.0.0.1:5001 \
  --log-store-backend file \
  --log-store-file-dir ./graph-logs

Запросы к логам можно делать через GraphQL на http://localhost:8000/graphql.

Лицензия

Проект лицензирован под MIT и Apache License, Version 2.0. Программное обеспечение предоставляется "как есть" без каких-либо гарантий.

Радар проекта: 66 из 100 — крепкий проект

ИмпульсТемпЗрелостьСообществоСвежестьСтартПродакшенДовериеДокументацияЭкосистема66
  • Импульс 13 ≈ 1 звезда в день
  • Темп разработки 28 4 коммита за 12 недель
  • Зрелость 100 проекту 8 лет, 75 релизов
  • Сообщество 88 137 участников, 1070 форков
  • Свежесть 99 последний коммит — 2 дня назад
  • Быстрый старт 15 есть: сайт/демо
  • Готовность к продакшену 75 релиз v0.45.0, автосборка, тесты
  • Безопасность и доверие 75 лицензия Apache-2.0, организация
  • Документация 95 README 7.2 тыс. знаков, 11 разделов, папка docs
  • Экосистема 73 86 подписчиков на обновления, 8 тем
Как считаем

Только открытые данные GitHub на 10.11.2026, без оценок нейросети. Каждая ось — от 0 до 100, итог — среднее.

  • Импульс — звёзд в день: за время наших замеров, а пока их нет — за всю жизнь проекта; 200 в день — максимум.
  • Темп разработки — коммитов за последние 12 недель; 300 — максимум. Пока GitHub не досчитал статистику, ось не учитывается.
  • Зрелость — возраст проекта (3 года — максимум) и число релизов (30 — максимум), поровну.
  • Сообщество — участников с коммитами (200 — максимум) и форков (5000 — максимум), поровну.
  • Свежесть — дней с последнего коммита: сегодня — 100, полгода и больше или архив — 0.
  • Быстрый старт — в README есть команда установки, раздел «быстрый старт» или примеры использования, в репозитории — Docker и папка примеров, у проекта есть сайт или демо.
  • Готовность к продакшену — релизы, версия 1.0 и выше, автосборка (GitHub Actions), тесты, лицензия, журнал изменений.
  • Безопасность и доверие — открытая лицензия (своя — половина балла), политика безопасности (SECURITY.md), проект организации, правила для участников, не в архиве.
  • Документация — объём и структура README, папка docs или сайт, оценка «здоровья сообщества» GitHub.
  • Экосистема — звёзды (50 тыс. — максимум), подписчики на обновления (1000 — максимум), темы репозитория.

Открыть на GitHub: graphprotocol/graph-node →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте