diff --git a/website/pages/ru/cookbook/grafting.mdx b/website/pages/ru/cookbook/grafting.mdx index 981786acb0cb..e74d9a5a084a 100644 --- a/website/pages/ru/cookbook/grafting.mdx +++ b/website/pages/ru/cookbook/grafting.mdx @@ -2,55 +2,55 @@ title: Замените контракт и сохраните его историю с помощью Grafting --- -В этом руководстве вы узнаете, как создавать и развертывать новые подграфы путем графтинга существующих подграфов. +Из этого руководства Вы узнаете, как создавать и развертывать новые субграфы путем графтинга (переноса) существующих субграфов. ## Что такое Grafting? -При графтинге повторно используются данные из существующего подграфа и начинается их индексация в более позднем блоке. Это может быть полезно в период разработки, чтобы быстро устранить простые ошибки в маппинге или временно восстановить работу существующего подграфа после его сбоя. Кроме того, его можно использовать при добавлении в подграф функции, индексация которой с нуля занимает много времени. +При графтинге (переносе) повторно используются данные из существующего субрафа и начинается их индексация в более позднем блоке. Это может быть полезно в период разработки, чтобы быстро устранить простые ошибки в мэппинге или временно восстановить работу существующего субграфа после его сбоя. Кроме того, его можно использовать при добавлении в субграф функции, индексация которой с нуля занимает много времени. -Подграф может использовать схему GraphQL, которая не идентична схеме базового подграфа, а просто совместима с ней. Это должна быть автономно действующая схема подграфа, но она может отличаться от схемы базового подграфа следующим образом: +Перенесённый субграф может использовать схему GraphQL, которая не идентична схеме базового субграфа, а просто совместима с ней. Это должна быть автономно действующая схема субграфа, но она может отличаться от схемы базового субграфа следующим образом: - Она добавляет или удаляет типы объектов - Она удаляет атрибуты из типов объектов -- Она добавляет nullable атрибуты к типам объектов -- Она превращает non-nullable атрибуты в nullable атрибуты -- Она добавляет определенные значения в энное число +- Она добавляет обнуляемые атрибуты к типам объектов +- Она превращает необнуляемые атрибуты в обнуляемые +- Она добавляет значения в перечисления - Она добавляет или удаляет интерфейсы - Она изменяется в зависимости от того, под какой тип объектов реализован интерфейс -Для получения дополнительной информации вы можете перейти: +Для получения дополнительной информации Вы можете перейти: - [Grafting](/developing/creating-a-subgraph#grafting-onto-existing-subgraphs) -В этом руководстве мы рассмотрим базовый вариант использования. Мы заменим существующий договор на идентичный договор (с новым адресом, но тем же кодом). Затем привяжем существующий подграф к «базовому» подграфу, который отслеживает новый контракт. +В этом руководстве мы рассмотрим базовый вариант использования. Мы заменим существующий договор на идентичный договор (с новым адресом, но тем же кодом). Затем привяжем существующий субграф к «базовому» субграфу, который отслеживает новый контракт. -## Important Note on Grafting When Upgrading to the Network +## Важное примечание о Grafting при обновлении до сети -> **Caution**: It is recommended to not use grafting for subgraphs published to The Graph Network +> **Внимание**: Не рекомендуется использовать Grafting для субграфов, опубликованных в The Graph Network -### Why Is This Important? +### Почему это важно? -Grafting is a powerful feature that allows you to "graft" one subgraph onto another, effectively transferring historical data from the existing subgraph to a new version. While this is an effective way to preserve data and save time on indexing, grafting may introduce complexities and potential issues when migrating from a hosted environment to the decentralized network. It is not possible to graft a subgraph from The Graph Network back to the hosted service or Subgraph Studio. +Grafting является мощной функцией, которая позволяет Вам «прививать» один субграф на другой, эффективно передавая исторические данные существующего субграфа на новую версию. Хотя это эффективный способ сохранения данных и экономии времени на индексации, Grafting может создавать сложности и потенциальные проблемы при миграции из хостинговой среды в децентрализованную сеть. Невозможно произвести перенос субграфа из сети The Graph Network обратно в хостинговый сервис или Subgraph Studio. -### Best Practices +### Лучшие практики -**Initial Migration**: when you first deploy your subgraph to the decentralized network, do so without grafting. Ensure that the subgraph is stable and functioning as expected. +**Первоначальная миграция**: когда вы впервые развертываете свой субграф в децентрализованной сети, делайте это без Grafting. Убедитесь, что субграф стабилен и функционирует должным образом. -**Subsequent Updates**: once your subgraph is live and stable on the decentralized network, you may use grafting for future versions to make the transition smoother and to preserve historical data. +**Последующие обновления**: как только Ваш субграф станет активным и стабильным в децентрализованной сети, Вы сможете использовать Grafting для будущих версий, чтобы сделать переход более плавным и сохранить исторические данные. -By adhering to these guidelines, you minimize risks and ensure a smoother migration process. +Соблюдая эти рекомендации, Вы минимизируете риски и обеспечите более плавный процесс миграции. -## Создание существующего подграфа +## Создание существующего субграфа -Building subgraphs is an essential part of The Graph, described more in depth [here](/quick-start/). To be able to build and deploy the existing subgraph used in this tutorial, the following repo is provided: +Создание субграфов — важная часть The Graph, более подробно описанная [здесь](/quick-start/). Чтобы иметь возможность создать и развернуть существующий субграф, используемый в этом руководстве, предоставляется следующий репозиторий: -- [Репозиторий в качестве примера](https://github.com/t-proctor/grafting-tutorial) +- [Репозиторий субграфа в качестве примера](https://github.com/t-proctor/grafting-tutorial) -> Примечание: контракт, использованный в подграфе, был взят отсюда [Hackathon Starterkit](https://github.com/schmidsi/hackathon-starterkit). +> Примечание: контракт, использованный в субграфе, был взят из [Hackathon Starterkit](https://github.com/schmidsi/hackathon-starterkit). -## Определение манифеста подграфа +## Определение манифеста субграфа -Манифест подграфа `subgraph.yaml` определяет источники данных для подграфа, релевантные триггеры и функции, которые должны выполняться в ответ на эти триггеры. Ниже приведен пример манифеста подграфа, который вы будете использовать: +Манифест субграфа `subgraph.yaml` определяет источники данных для субграфа, релевантные триггеры и функции, которые должны выполняться в ответ на эти триггеры. Ниже приведен пример манифеста субграфа, который Вы будете использовать: ```yaml specVersion: 0.0.4 @@ -83,29 +83,29 @@ dataSources: - Сеть должна соответствовать запрашиваемой индексированной сети. Поскольку мы работаем в тестовой сети Goerli, это сеть `goerli` - Раздел `mapping` определяет интересующие нас триггеры и функции, которые должны запускаться в ответ на эти триггеры. В этом случае мы уделяем внимание событию `Withdrawal` и вызываем функцию `handleWithdrawal` при его возникновении. -## Определение grafting манифеста +## Определение Манифеста Grafting -Графтинг требует добавления двух новых элементов в исходный манифест подграфа: +Grafting требует добавления двух новых элементов в исходный манифест субграфа: ```yaml --- features: - - grafting # feature name + - grafting # имя функции graft: - base: Qm... # subgraph ID of base subgraph - block: 1502122 # block number + base: Qm... # ID субграфа базового субграфа + block: 1502122 # номер блока ``` -- `features:` is a list of all used [feature names](/developing/creating-a-subgraph/#experimental-features). -- `graft:` это карта подграфа `base` и блока, к которому применяется графтинг. `block` - это номер блока, с которого начинается индексация. The Graph скопирует данные базового подграфа до указанного блока включительно, а затем продолжит индексацию нового подграфа, начиная с этого блока. +- `features` — это список всех используемых [названий функций](/developing/creating-a-subgraph/#experimental-features). +- `graft:` — это карта субграфа `base` и блока, к которому применяется графтинг (перенос). `block` — это номер блока, с которого начинается индексация. The Graph скопирует данные базового субграфа до указанного блока включительно, а затем продолжит индексацию нового субграфа, начиная с этого блока. -Значения `base` и `block` можно найти, развернув два подграфа: один для базовой индексации, а другой с grafting +Значения `base` и `block` можно найти, развернув два субграфа: один для базовой индексации, а другой с графтингом (переносом) -## Развертывание базового подграфа +## Развертывание базового субграфа -1. Go to [Subgraph Studio](https://thegraph.com/studio/) and create a subgraph on Goerli testnet called `graft-example` -2. Следуйте инструкциям в `AUTH & DEPLOY` на странице подграфа в `graft-example` из репозитория -3. После завершения убедитесь, что подграф правильно индексируется. Если вы запустите следующую команду в тестовой среде The Graph +1. Перейдите в [Subgraph Studio](https://thegraph.com/studio/) и создайте в тестовой сети Goerli субграф под названием `graft-example` +2. Следуйте инструкциям в `AUTH & DEPLOY` на странице субграфа в `graft-example` из репо +3. После завершения убедитесь, что субграф правильно индексируется. Если Вы запустите следующую команду в The Graph Playground ```graphql { @@ -138,16 +138,16 @@ graft: } ``` -Убедившись, что подграф индексируется правильно, вы можете быстро обновить его с помощью графтинга. +Убедившись, что субграф индексируется правильно, Вы можете быстро обновить его с помощью графтинга. -## Развертывание grafting подграфа +## Развертывание grafting субграфа -Замененный subgraph.yaml будет иметь новый адрес контракта. Это может произойти, когда вы обновляете свое децентрализованное приложение, повторно развертываете контракт и т. д. +Замененный subgraph.yaml будет иметь новый адрес контракта. Это может произойти, когда Вы обновите свое децентрализованное приложение, повторно развернете контракт и т. д. -1. Go to [Subgraph Studio](https://thegraph.com/studio/) and create a subgraph on Goerli testnet called `graft-replacement` -2. Create a new manifest. The `subgraph.yaml` for `graph-replacement` contains a different contract address and new information about how it should graft. These are the `block` of the [last event emitted](https://goerli.etherscan.io/tx/0x800c92fcc0edbd26f74e19ad058c62008a47c7789f2064023b987028343dd498) you care about by the old contract and the `base` of the old subgraph. The `base` subgraph ID is the `Deployment ID` of your original `graph-example` subgraph. You can find this in Subgraph Studio. -3. Следуйте инструкциям в `AUTH & DEPLOY` на странице подграфа в `graft-replacement` из репозитория -4. После завершения убедитесь, что подграф правильно индексируется. Если вы запустите следующую команду в тестовой среде The Graph +1. Перейдите в [Subgraph Studio](https://thegraph.com/studio/) и создайте в тестовой сети Goerli субграф под названием `graft-replacement` +2. Создайте новый манифест. `subgraph.yaml` для `graph-replacement` содержит другой адрес контракта и новую информацию о том, как его следует переносить. Это `block` [последнего события](https://goerli.etherscan.io/tx/0x800c92fcc0edbd26f74e19ad058c62008a47c7789f2064023b987028343dd498), созданного старым контрактом, и `base` старого субграфа. Идентификатор субграфа `base` — это `Deployment ID` Вашего исходного субграфа `graph-example`. Вы можете найти эту информцию в Subgraph Studio. +3. Следуйте инструкциям в `AUTH & DEPLOY` на странице субграфа в `graft-replacement` из репозитория +4. После завершения убедитесь, что субграф правильно индексируется. Если Вы запустите следующую команду в The Graph Playground ```graphql { @@ -185,9 +185,9 @@ graft: } ``` -Вы можете видеть, что подграф `graft-replacement` индексируется из старых данных `graph-example` и более новых данных из нового адреса контракта. Исходный контракт генерировал два события `Withdrawal`: [Событие 1](https://goerli.etherscan.io/tx/0x800c92fcc0edbd26f74e19ad058c62008a47c7789f2064023b987028343dd498) и [Событие 2](https:/ /goerli.etherscan.io/address/0x4ed995e775d3629b0566d2279f058729ae6ea493). Новый контракт выдал один `Withdrawal` после [События 3](https://goerli.etherscan.io/tx/0xb4010e4c76f86762beb997a13cf020231778eaf7c64fa3b7794971a5e6b343d3). Две ранее проиндексированные транзакции (События 1 и 2) и новая транзакция (Событие 3) были объединены в подграфе `graft-replacement`. +Вы можете видеть, что субграф `graft-replacement` индексируется из старых данных `graph-example` и более новых данных из нового адреса контракта. Исходный контракт генерировал два события `Withdrawal`: [Событие 1](https://goerli.etherscan.io/tx/0x800c92fcc0edbd26f74e19ad058c62008a47c7789f2064023b987028343dd498) и [Событие 2](https:/ /goerli.etherscan.io/address/0x4ed995e775d3629b0566d2279f058729ae6ea493). Новый контракт выдал один `Withdrawal` после [События 3](https://goerli.etherscan.io/tx/0xb4010e4c76f86762beb997a13cf020231778eaf7c64fa3b7794971a5e6b343d3). Две ранее проиндексированные транзакции (События 1 и 2) и новая транзакция (Событие 3) были объединены в субграфе `graft-replacement`. -Congrats! You have successfully grafted a subgraph onto another subgraph. +Поздравляем! Вы успешно перенесли один субграф в другой. ## Дополнительные ресурсы @@ -197,6 +197,6 @@ Congrats! You have successfully grafted a subgraph onto another subgraph. - [ERC-721](https://github.com/messari/subgraphs/blob/master/subgraphs/erc721-metadata/subgraph.yaml) - [Uniswap](https://github.com/messari/subgraphs/blob/master/subgraphs/uniswap-v3-forks/protocols/uniswap-v3/config/templates/uniswapV3Template.yaml), -To become even more of a Graph expert, consider learning about other ways to handle changes in underlying datasources. Alternatives like [Data Source Templates](/developing/creating-a-subgraph/#data-source-templates) can achieve similar results +Чтобы стать еще большим экспертом по Graph, рассмотрите возможность узнать о других способах обработки изменений в базовых источниках данных. Такие альтернативы, как [Data Source Templates](/developing/creating-a-subgraph/#data-source-templates), могут дать аналогичные результаты > Примечание: многие материалы этой статьи были взяты из ранее опубликованной [статьи по Arweave](/cookbook/arweave/)