Cookbook > Upgrading an Existing Subgraph to The Graph Network

Upgrading an Existing Subgraph to The Graph Network

Reading time: 10 min

Введение

Ссылка на этот раздел

This is a guide on how to upgrade your subgraph from the hosted service to The Graph's decentralized network. Over 1,000 subgraphs have successfully upgraded to The Graph Network including projects like Snapshot, Loopring, Audius, Premia, Livepeer, Uma, Curve, Lido, and many more!

The process of upgrading is quick and your subgraphs will forever benefit from the reliability and performance that you can only get on The Graph Network.

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

Ссылка на этот раздел
  • Вы уже разместили подграф на базе hosted service.
  • The subgraph is indexing a chain available on The Graph Network.
  • You have a wallet with ETH to publish your subgraph on-chain.
  • You have ~10,000 GRT to curate your subgraph so Indexers can begin indexing it.

Upgrading an Existing Subgraph to The Graph Network

Ссылка на этот раздел

You can find specific commands for your subgraph in the Subgraph Studio.

  1. Установите последнюю версию graph-cli:
npm install -g @graphprotocol/graph-cli
yarn global add @graphprotocol/graph-cli

Make sure your apiVersion in subgraph.yaml is 0.0.5 or greater.

  1. Внутри основного репозитория проекта в подграфе выполните аутентификацию подграфа для развертывания и сборки в studio:
graph auth --studio <DEPLOY_KEY>
  1. Сгенерируйте файлы и создайте подграф:
graph codegen && graph build

If your subgraph has build errors, refer to the AssemblyScript Migration Guide.

  1. Sign into Subgraph Studio with your wallet and deploy the subgraph. You can find your <SUBGRAPH_SLUG> in the Studio UI, which is based on the name of your subgraph.
graph deploy --studio <SUBGRAPH_SLUG>
  1. Test queries on the Studio's playground. Here are some examples for the Sushi - Mainnet Exchange Subgraph:
{
users(first: 5) {
id
liquidityPositions {
id
}
}
bundles(first: 5) {
id
ethPrice
}
}
  1. На данный момент ваш подграф теперь развернут в Subgraph Studio, но еще не опубликован в децентрализованной сети. Теперь вы можете протестировать подграф, чтобы убедиться, что он работает должным образом, используя временный URL-адрес запроса, как показано в верхней части правой колонки выше. Как уже следует из этого названия, это временный URL-адрес, и его не следует использовать в рабочей среде.
  • Updating is just publishing another version of your existing subgraph on-chain.
  • Because this incurs a cost, it is highly recommended to deploy and test your subgraph in the Subgraph Studio, using the "Development Query URL" before publishing. See an example transaction here. Prices are roughly around 0.0425 ETH at 100 gwei.
  • Any time you need to update your subgraph, you will be charged an update fee. Because this incurs a cost, it is highly recommended to deploy and test your subgraph on Sepolia before deploying to mainnet. It can, in some cases, also require some GRT if there is no signal on that subgraph. In the case there is signal/curation on that subgraph version (using auto-migrate), the taxes will be split.
  1. Опубликуйте подграф в децентрализованной сети Graph, нажав кнопку "Publish".

You should curate your subgraph with GRT to ensure that it is indexed by Indexers. To save on gas costs, you can curate your subgraph in the same transaction that you publish it to the network. It is recommended to curate your subgraph with at least 10,000 GRT for high quality of service.

And that's it! After you are done publishing, you'll be able to view your subgraphs live on the decentralized network via The Graph Explorer.

Feel free to leverage the #Curators channel on Discord to let Curators know that your subgraph is ready to be signaled. It would also be helpful if you share your expected query volume with them. Therefore, they can estimate how much GRT they should signal on your subgraph.

Создание API ключа

Ссылка на этот раздел

You can generate an API key in Subgraph Studio here.

API key creation page

В конце каждой недели будет формироваться счет на основе сборов за запрос, которые были понесены за этот период. Этот счет будет оплачен автоматически с использованием GRT, имеющейся на вашем балансе. Ваш баланс будет обновлен после того, как будут сняты сборы за ваш запрос. Плата за запрос оплачивается в GRT через сеть Arbitrium. Вам нужно будет добавить GRT в биллинговый контракт Arbitrum'а, чтобы включить ваш API-ключ, выполнив следующие действия:

  • Приобретите GRT на бирже по своему выбору.
  • Отправьте GRT на свой кошелек.
  • На странице выставления счетов в Studio нажмите Add GRT.

Add GRT in billing

  • Следуйте инструкциям, чтобы добавить токен GRT к платежному балансу.
  • Ваш GRT будет автоматически перенесен в сеть Arbitrum с помощью моста и добавлен к вашему платежному балансу.

Billing pane

Note: see the official billing page for full instructions on adding GRT to your billing balance.

Обеспечение безопасности вашего API ключа

Ссылка на этот раздел

Рекомендуется обеспечить безопасность доступа к API, ограничивая его использование двумя способами:

  1. Авторизованные подграфы
  2. Авторизованный домен

You can secure your API key here.

Subgraph lockdown page

Запрос вашего подграфа в децентрализованной сети

Ссылка на этот раздел

Now you can check the indexing status of the Indexers on the network in Graph Explorer (example here). The green line at the top indicates that at the time of posting 8 Indexers successfully indexed that subgraph. Also in the Indexer tab you can see which Indexers picked up your subgraph.

Rocket Pool subgraph

Как только первый индексатор полностью проиндексирует ваш подграф, вы можете начать делать запросы к нему в децентрализованной сети. Чтобы получить URL запроса для вашего подграфа, вы можете скопировать/вставить его, нажав на символ рядом с URL запроса. Вы увидите что-то вроде этого:

https://gateway.thegraph.com/api/[api-key]/subgraphs/id/S9ihna8D733WTEShJ1KctSTCvY1VJ7gdVwhUujq4Ejo

Important: Make sure to replace [api-key] with an actual API key generated in the section above.

Теперь вы можете использовать этот URL-адрес запроса в своем приложении для отправки своих запросов GraphQL.

Поздравляю! Теперь вы являетесь пионером децентрализации!

Note: Due to the distributed nature of the network it might be the case that different Indexers have indexed up to different blocks. In order to only receive fresh data you can specify the minimum block an Indexer has to have indexed in order to serve your query with the block: { number_gte: $minBlock } field argument as shown in the example below:

{
stakers(block: { number_gte: 14486109 }) {
id
}
}

More information about the nature of the network and how to handle re-orgs are described in the documentation article Distributed Systems.

Updating a Subgraph on the Network

Ссылка на этот раздел

If you would like to update an existing subgraph on the network, you can do this by deploying a new version of your subgraph to the Subgraph Studio using the Graph CLI.

  1. Внесите изменения в свой текущий подграф. Хорошая идея - протестировать небольшие исправления в Subgraph Studio, опубликовав их в сети Sepolia.
  2. Задеплойте следующее и укажите новую версию в команде (например, v0.0.1, v0.0.2 и т. д.):
graph deploy --studio <SUBGRAPH_SLUG>
  1. Протестируйте новую версию в Subgraph Studio, выполнив запрос на тестовой площадке
  2. Опубликуйте новую версию в сети Graph. Помните, что для этого требуется газ (как описано в разделе выше).

Owner Update Fee: Deep Dive

Ссылка на этот раздел

Note: Curation on Arbitrum has a flat bonding curve. Learn more about Arbitrum here.

An update requires GRT to be migrated from the old version of the subgraph to the new version. This means that for every update, a new bonding curve will be created (more on bonding curves here).

The new bonding curve charges the 1% curation tax on all GRT being migrated to the new version. The owner must pay 50% of this or 1.25%. The other 1.25% is absorbed by all the curators as a fee. This incentive design is in place to prevent an owner of a subgraph from being able to drain all their curator's funds with recursive update calls. If there is no curation activity, you will have to pay a minimum of 100 GRT in order to signal your own subgraph.

Давайте приведем пример, это только в том случае, если ваш сабграф активно курируется на:

  • 100 000 GRT сигнализируемая с помощью автоматической миграции на v1 подграфа
  • Owner updates to v2. 100,000 GRT is migrated to a new bonding curve, where 97,500 GRT get put into the new curve and 2,500 GRT is burned
  • The owner then has 1250 GRT burned to pay for half the fee. The owner must have this in their wallet before the update, otherwise, the update will not succeed. This happens in the same transaction as the update.

While this mechanism is currently live on the network, the community is currently discussing ways to reduce the cost of updates for subgraph developers.

Поддержание стабильной версии подграфа

Ссылка на этот раздел

If you're making a lot of changes to your subgraph, it is not a good idea to continually update it and front the update costs. Maintaining a stable and consistent version of your subgraph is critical, not only from the cost perspective but also so that Indexers can feel confident in their syncing times. Indexers should be flagged when you plan for an update so that Indexer syncing times do not get impacted. Feel free to leverage the #Indexers channel on Discord to let Indexers know when you're versioning your subgraphs.

Subgraphs are open APIs that external developers are leveraging. Open APIs need to follow strict standards so that they do not break external developers' applications. In The Graph Network, a subgraph developer must consider Indexers and how long it takes them to sync a new subgraph as well as other developers who are using their subgraphs.

Обновление метаданных подграфа

Ссылка на этот раздел

Вы можете обновить метаданные своих подграфов без необходимости публиковать новую версию. Метаданные включают название подграфа, изображение, описание, URL веб-сайта, URL исходного кода и категории. Разработчики могут сделать это, обновив сведения о своих подграфах в Subgraph Studio, где вы можете редактировать все применимые поля.

Make sure Update Subgraph Details in Explorer is checked and click on Save. If this is checked, an on-chain transaction will be generated that updates subgraph details in the Explorer without having to publish a new version with a new deployment.

Рекомендации по развертыванию подграфа в сети Graph

Ссылка на этот раздел
  1. Использование имени ENS для разработки подграфа:
  • Set up your ENS here
  • Add your ENS name to your settings here.
  1. Чем более заполнены ваши профили, тем больше шансов, что ваши подграфы будут проиндексированы и обработаны куратором.

Удаление подграфа в сети Graph

Ссылка на этот раздел

Follow the steps here to deprecate your subgraph and remove it from The Graph Network.

Запрос подграфа + выставление счетов в сети Graph

Ссылка на этот раздел

The hosted service was set up to allow developers to deploy their subgraphs without any restrictions.

In order for The Graph Network to truly be decentralized, query fees have to be paid as a core part of the protocol's incentives. For more information on subscribing to APIs and paying the query fees, check out billing documentation here.

Оценка стоимости запросов в сети

Ссылка на этот раздел

Хотя это не реализовано в пользовательском интерфейсе продукта, вы можете установить максимальный бюджет для каждого запроса, взяв сумму, которую вы готовы платить в месяц, и разделив ее на ожидаемый объем запроса.

While you get to decide on your query budget, there is no guarantee that an Indexer will be willing to serve queries at that price. If a Gateway can match you to an Indexer willing to serve a query at, or lower than, the price you are willing to pay, you will pay the delta/difference of your budget and their price. As a consequence, a lower query price reduces the pool of Indexers available to you, which may affect the quality of service you receive. It's beneficial to have high query fees, as that may attract curation and big-name Indexers to your subgraph.

Помните, что это динамичный и растущий рынок, но то, как вы с ним взаимодействуете, контролируется вами. В протоколе или Gateways нет максимальной или минимальной цены. Например, вы можете посмотреть на цену, которую платят несколько dapps в сети (на недельной основе), ниже. Смотрите последний столбец, где указана плата за запрос в GRT.

QueryFee

Дополнительные источники

Ссылка на этот раздел

If you're still confused, fear not! Check out the following resources or watch our video guide on upgrading subgraphs to the decentralized network below:

Редактировать страницу

Предыдущий
Создание подграфов на Base
Следующий
Быстрая и простая отладка подграфа с использованием форков
Редактировать страницу