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 — крепкий проект
- Импульс 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 →
RepoRadar