
The Graph — это децентрализованный протокол для индексирования и запроса данных из блокчейнов.
Сейчас он работает только с Ethereum, но в планах команды реализовать его и на других блокчейнах. Граф создан для того, чтобы помочь dApps запрашивать данные, которые не могут быть просто получены с помощью блокчейн-узла.
Запросы выполняются благодаря API GraphQL.
API GraphQL
Запросы выполняются с помощью API GraphQL. Протестируем на примере Uniswap подграфа V2: https://thegraph.com/explorer/subgraph/uniswap/uniswap-v2.
Давайте попробуем выполнить некоторые запросы в подграфе Uniswap.
Пример:
Выводятся первые пять uniswapFactories и его поля: id, pairCount, pairs, и первые пять токенов полей: id, symbol, name, decimals. Но если мы попытаемся его выполнить, то получим ошибку
Да, пример неверен! Скорее всего, команда скоро это исправит. В чем же проблема? С правой стороны вы можете увидеть схему подграфа
Давайте нажмем на UniswapFactory:
Мы видим сущности UniswapFactory, и, как вы можете видеть, там нет поля «pairs». Но мы попросили subgraph вывести эту сущность для UniswapFactory. Вот в чем проблема. Если мы попытаемся выполнить запрос:
мы увидим правильный результат:
Итак, в общем случае, если вы хотите запросить что-то с помощью подграфа, сначала вы должны посмотреть на схему подграфа и его сущности. Возьмите интересующую вас сущность, например «token», и добавьте ее в схему запроса. Если вы хотите запросить один токен, вы используете «token», но если вы хотите запросить все сущности токенов, вы должны использовать «tokens».
Вот и все! Вперед, космонавты!