Leçon 2

Технология, скрывающаяся за графиком

Вникая в архитектуру The Graph, мы обнаруживаем сложную, но элегантно структурированную систему, которая лежит в основе децентрализованного механизма запросов в экосистеме блокчейн. Эта сложная структура, в центре которой находится Графический узел, обеспечивает беспрепятственную интеграцию различных компонентов, каждый из которых играет важную роль в эффективном функционировании сети.

Графический узел: Индексирующий узел

Сердцем архитектуры The Graph является узел Graph Node. Этот ключевой компонент отвечает за индексирование подграфов и обеспечение доступа к полученным данным через GraphQL API. Это ядро стека индексатора, и его эффективная работа имеет решающее значение для успешной работы индексатора. Graph Node отличается универсальностью и может работать как на "голом" металле, так и в облачных средах, что отражает адаптивность, необходимую в динамичном ландшафте технологии блокчейн.

Хранение данных в базах данных PostgreSQL

Неотъемлемой частью работы Graph Node является база данных PostgreSQL, которая выступает в качестве основного хранилища. В этой базе данных хранятся не только данные о подграфах, но и метаданные о них, а также важные сетевые данные, такие как кэши блоков и eth_call. Организация и управление этой базой данных жизненно важны для бесперебойной работы Graph Node, обеспечивая целостность и доступность данных.

Сетевые клиенты и Firehoses

Для индексирования сетей блокчейн Graph Node соединяется с сетевыми клиентами через EVM-совместимый JSON-RPC API. Такая настройка может варьироваться от подключения к одному клиенту до более сложной схемы с распределением нагрузки между несколькими клиентами. Кроме того, компания The Graph разработала Network Firehoses - gRPC-сервис, который предоставляет упорядоченный поток блоков с учетом вилок. Хотя в настоящее время индексаторы не являются обязательным требованием, Firehose представляет собой значительное достижение в поддержке производительного индексирования в масштабе.

Метаданные на узлах IPFS и мониторинг с помощью Prometheus

Взаимодействие Graph Node с сетью IPFS имеет решающее значение для хранения метаданных развертывания подграфов. Узел IPFS, размещенный на сетевом уровне, упрощает этот процесс для индексаторов. Кроме того, дополнительная интеграция с сервером метрик Prometheus для мониторинга и отчетности добавляет еще один уровень сложности, позволяя индексаторам отслеживать и оптимизировать производительность Graph Node.

Масштабируемость и расширенные конфигурации

Гибкая настройка Graph Node, от вариантов установки до возможностей масштабирования, подчеркивает стремление The Graph удовлетворить различные операционные потребности. Систему можно горизонтально масштабировать с помощью нескольких Графических узлов и баз данных, удовлетворяя растущие потребности сети. Опытные пользователи могут использовать параметры конфигурации Graph Node, управляемые через файл TOML или переменные среды, для оптимизации обработки данных и распределения рабочей нагрузки.

Индексирование и обработка данных: Firehose и Substreams Redefined

Firehose: Переосмысление извлечения данных из блокчейна

Firehose, концепция и разработка компании StreamingFast, знаменует собой революцию в извлечении данных из узлов блокчейна. Этот инновационный инструмент разбивает каждую транзакцию в блоке блокчейна на мельчайшие элементы, сохраняя их в виде простых плоских файлов. Эти плоские файлы - не просто формат хранения данных; они воплощают смену парадигмы в индексировании данных. Они облегчают параллельную обработку, что значительно ускоряет операции индексирования. Эта технология доставляет богатые данные о вилках, полученные с помощью блокчейн-узлов, непосредственно потребителям. На практике Firehose продемонстрировал свое мастерство, обеспечив скорость захвата и обработки данных, которая раньше считалась недостижимой, установив тем самым новые стандарты извлечения данных в экосистеме The Graph.

Substreams: Пионер эффективной обработки данных

Substreams, расширение возможностей Firehose, предназначены для высокопроизводительной обработки данных параллельным потоковым способом. Эти модули, написанные на языке Rust, позволяют разработчикам составлять, сортировать, хранить и преобразовывать данные блокчейна для различных целей. Изобретательность Substreams заключается в их способности использовать плоские файлы Firehose для индексирования данных с исключительно высокой скоростью. Такой подход гарантирует, что Substreams не только высокоэффективно обрабатывают данные, но и распространяют их сразу же, как только они становятся доступными, а не полагаются на постоянные запросы.

Сочетание Firehose и Substreams

Интеграция Firehose и Substreams в экосистему The Graph обеспечивает мощную комбинацию для обработки данных. Firehose обеспечивает быструю доставку данных блокчейна в оптимизированном формате, в то время как Substream'ы продолжают уточнять и обрабатывать эти данные. Такое синергетическое взаимодействие приводит к беспрецедентной эффективности в работе с большими объемами данных блокчейна, значительно расширяя возможности The Graph.

Подграфы: Отраслевой стандарт индексирования данных

Подграфы стали отраслевым стандартом индексирования данных блокчейна с тех пор, как их представила компания The Graph в 2018 году. По сути, это открытые API, которые извлекают, обрабатывают и хранят данные из блокчейн, тем самым делая их легко доступными для запросов через интерфейс GraphQL. Благодаря поддержке более 85 000 подграфов в более чем 40 цепочках, подграфы стали незаменимыми для разработчиков web3. Они позволяют быстро развернуть базу данных Postgres, заполненную индексированными данными, готовыми к запросам с помощью слоя GraphQL. Подграфы позволяют разработчикам организованно и эффективно отображать в своих DApps широкий спектр данных блокчейна, от транзакций DeFi до происхождения NFT.

В постоянно развивающемся ландшафте технологии блокчейн подграфы стали ключевой концепцией, изменив способ взаимодействия с данными блокчейн и их использования. Эти открытые API выступают в роли посредников, легко преодолевая разрыв между децентрализованным миром блокчейн и привычной сферой структурированных данных. Извлекая, обрабатывая и организуя данные блокчейна в формат, пригодный для запросов, сабграфы дают разработчикам возможность создавать инновационные приложения, основанные на данных.

Подграфы обладают множеством преимуществ, что делает их привлекательным выбором как для разработчиков, так и для пользователей. Их децентрализованная природа обеспечивает устойчивость к цензуре и простоям, способствуя созданию безопасной и надежной экосистемы данных. Кроме того, подграфы по своей природе масштабируемы и способны обрабатывать огромные объемы данных без ущерба для производительности. Еще одним ключевым преимуществом является экономичность: подграфы часто оказываются более доступными, чем традиционные API данных.

Архитектура подграфа

Подграфы состоят из трех основных компонентов, которые работают в гармонии, обеспечивая их преобразующие возможности:

  1. Манифест: Манифест служит чертежом подграфа, описывая его источники данных, схему и код AssemblyScript. Он определяет границы данных, которые будет индексировать подграф, гарантируя, что будет захвачена только релевантная информация.

  2. Схема: Схема определяет структуру данных, подобно чертежу здания. Он описывает сущности, поля и отношения между ними, обеспечивая четкий и организованный способ представления данных.

  3. Код AssemblyScript: Этот исполняемый код выступает в качестве рабочей лошадки подграфа, переводя необработанные данные из блокчейн в формат, понятный движку GraphQL. Он также занимается индексированием и хранением данных, обеспечивая их доступность и надежность.

Процесс разработки подграфа

Создание подграфа включает в себя ряд шагов, каждый из которых тщательно продуман, чтобы обеспечить функциональность и эффективность подграфа:

  1. Разработка концепции и дизайна: Путешествие начинается с четкого представления о данных, которые будут индексироваться, и о приложениях, которые будут работать с ними. Это включает в себя определение сущностей, полей и отношений между ними, гарантируя, что структура подграфа соответствует его назначению.

  2. Разработка манифеста и схемы: Манифест и схема тщательно разрабатываются, обеспечивая основу для архитектуры данных подграфа. В манифесте указываются источники данных, а в схеме описывается структура данных, обеспечивающая их целостность и непротиворечивость.

  3. Реализация кода AssemblyScript: Написан код AssemblyScript, переводящий необработанные данные блокчейна в формат, понятный GraphQL. Он управляет индексированием, хранением и поиском данных, обеспечивая эффективный доступ к индексированным данным.

Развертывание и публикация подграфов

Как только подграф разработан, он проходит процесс развертывания, который знакомит его с миром:

  1. Интеграция Subgraph Studio: Subgraph Studio служит централизованной платформой для управления подграфами. Он облегчает процесс развертывания, позволяя разработчикам публиковать свои подграфы в децентрализованной сети.

  2. Индексирование и курирование: Индексаторы, отвечающие за получение и хранение данных блокчейна, необходимы для того, чтобы сделать подграфы доступными для разработчиков. Курирование, обычно осуществляемое с помощью токенов GRT, стимулирует индексаторов отдавать предпочтение подграфам с высоким спросом.

  3. Запросы и использование: Разработчики теперь могут запрашивать развернутый подграф с помощью запросов GraphQL, получая конкретные данные, отвечающие потребностям их приложений. Эта бесшовная интеграция дает разработчикам возможность использовать данные блокчейна для инноваций.

Будущее: Новая эра графики

По мере того, как The Graph вступает в свою новую эру (мы рассмотрим ее в Уроке 5), мы с нетерпением ждем дальнейшего развития этих основных технологий - подграфов, Firehose и Substreams. Эти компоненты будут расширяться и развиваться, играя жизненно важную роль во внедрении новых сервисов данных и обеспечении более быстрых и модульных потоков данных. Например, Verifiable Firehose может стать революционным решением для доступа к историческим данным Ethereum и решить проблемы, связанные с развивающимися стандартами блокчейна.

Различение подграфов и подпотоков

Очень важно различать подграфы и подпотоки, поскольку они служат разным целям. Подграфы идеально подходят для стандартного поиска и управления данными, предлагая простоту настройки и использования с помощью слоя запросов GraphQL. И наоборот, Substreams предназначены для более сложной аналитики и работы с большими данными, предлагая распараллеленную обработку данных и большую гибкость в обработке и хранении данных. Потоки позволяют разработчикам преобразовывать данные из базовых форматов файлов в более удобные формы, отвечающие сложным требованиям обработки данных.

Организация данных вне цепочки: Подход Graph и его влияние на конвейеры данных Web3

Компания Graph, традиционно известная своим мастерством в организации данных о цепочках, теперь расширяет свои горизонты, осваивая сферу данных о внецепочках. Такой подход согласуется с долгосрочной миссией The Graph - обеспечить легкий доступ к мировым общественным знаниям и информации.

Web3 и компромиссы в управлении данными

В архитектуре Web3, хотя пользователи могут напрямую взаимодействовать с блокчейном через промежуточные сервисы, существует компромисс, особенно когда речь идет о стоимости. Стоимость транзакций в цепочке, часто называемая "газовой комиссией", может быть непомерно высокой для сложных вычислений или хранения большого объема данных. Это ограничение исторически сдерживало сложность приложений или заставляло разработчиков создавать собственные API вне цепочки, отходя от моделей с открытым исходным кодом.

Уникальное решение Graph для внецепочечных данных

The Graph представляет собой уникальное решение этой проблемы, позволяя организовывать и обслуживать данные вне цепочки с помощью своей децентрализованной сети. Этот метод включает в себя рабочий процесс, в котором традиционные данные вне цепочки размещаются в IPFS (InterPlanetary File System), а хэши IPFS затем записываются в цепочку. Впоследствии эти данные могут быть проиндексированы по подграфам и доступны для запросов. Этот подход предлагает масштабируемый и экономичный способ публикации и предоставления сложных динамических данных без необходимости создавать и поддерживать собственные API.

Рабочий процесс: Трехэтапный процесс

Рабочий процесс состоит из трех ключевых компонентов:

  1. Задания Cron для вычисления и публикации данных: Задание cron вне цепочки выполняет сложные вычисления и публикует результаты в permaweb-источнике, например, в IPFS, индексируемом The Graph. Это задание также генерирует внутрицепочечную транзакцию для размещения хэша файла IPFS и любых соответствующих метаданных.

  2. Публикация подграфа для индексирования: Следующим шагом будет публикация подграфа, который проиндексирует эти файлы IPFS на основе хэшей файлов, размещенных в цепочке. Когда подграф опубликован, его могут подхватить и обслужить индексаторы в сети The Graph, что позволит сторонним разработчикам и пользователям запрашивать данные.

  3. Прочный и надежный доступ к данным: Благодаря использованию распределенной сети индексаторов The Graph доступ к данным остается надежным и прочным без дополнительных усилий со стороны издателя данных. Такая децентрализованная структура значительно повышает доступность и целостность данных.

Практическая реализация и экономическая эффективность

Практическим примером в экосистеме The Graph является оракул, разработанный компанией Edge & Node для публикации показателей стоимости и качества обслуживания в сети. Этот оракул публикует агрегированные данные в IPFS каждые пять минут и записывает хэш файла IPFS в цепочку Gnosis. Затем эти данные индексируются в подграфе, который может быть использован участниками протокола. Стоимость, связанная с этим рабочим процессом, удивительно мала, что делает его привлекательным вариантом для издателей данных.

Новые возможности с динамическими данными

Этот метод использования The Graph для динамических данных открывает новые захватывающие возможности для сайтов permaweb, в том числе бережливые бэкграунды для блогов, алгоритмическое курирование контента и системы мониторинга в реальном времени. Он представляет собой значительный сдвиг в способах публикации, индексирования и доступа к данным, способствуя созданию более открытой и совместной экосистемы Web3.

Организация данных вне цепочки: Инновационный подход The Graph

Расширение возможностей Graph по управлению данными вне цепочки открывает новые возможности в экосистеме Web3, создавая мост между децентрализованной и традиционной сферами данных. Эта инициатива отражает миссию The Graph - сделать более широкий спектр информации доступным децентрализованным образом, устраняя ограничения, присущие хранению данных и вычислениям на цепочке.

Баланс между потребностями в данных в цепочке и вне ее

График признает компромисс между стоимостью хранения данных и вычислений в цепочке в архитектурах Web3. Хотя прямое взаимодействие с блокчейном является простым, сложные вычисления и хранение больших объемов данных могут стать непомерно дорогими. Чтобы обойти эти ограничения, The Graph представляет метод, сочетающий хранение данных вне цепи с обращением к данным на цепи, что позволяет сохранить децентрализованную этику и одновременно повысить функциональность.

Методика работы с данными вне цепочки

Этот подход включает в себя трехэтапный рабочий процесс:

  1. Вычисления вне цепи и размещение данных в IPFS: Сложные вычисления выполняются вне цепи, а полученные данные размещаются в IPFS, децентрализованном хранилище. Этот шаг гарантирует, что данные, находясь вне цепи, хранятся верифицируемым и децентрализованным образом.

  2. Цепочечное связывание с помощью транзакций: Наряду с хранением данных на IPFS, выполняется соответствующая транзакция на цепи для регистрации хэша IPFS и других соответствующих метаданных. Этот метод привязывает данные вне цепочки к блокчейну, обеспечивая уровень доверия и отслеживаемости.

  3. Индексирование подграфов для обеспечения доступности: Последний шаг включает в себя индексирование данных, хранящихся в IPFS, с помощью подграфов. Этот процесс делает данные вне цепи легко запрашиваемыми и доступными через децентрализованную сеть The Graph.
    Практическая реализация: Edge & Node's Oracle

Практическим применением этой методологии в экосистеме The Graph является оракул, разработанный компанией Edge & Node. Этот оракул публикует показатели стоимости и качества обслуживания сети каждые пять минут следующим образом:

  • Агрегированные данные размещаются в IPFS.

  • Соответствующий хэш файла IPFS затем записывается в цепочку Gnosis через контракт DataEdge.

  • Эти файлы IPFS индексируются в подграфе, что делает данные доступными для заинтересованных сторон децентрализованным образом.
    Эта реализация демонстрирует недорогой, масштабируемый и эффективный подход к публикации и обслуживанию сложных данных без необходимости использования собственных API. Он демонстрирует, как метод The Graph можно использовать для создания динамических источников данных для различных приложений.

Экономическая эффективность и масштабируемость

Затраты, связанные с этим рабочим процессом, удивительно малы, что делает его привлекательным решением для издателей данных. Например, реализация оракула на узле Edge & Node несет минимальные расходы на транзакции в цепи и прикрепление узла IPFS, а расходы на обслуживание ложатся на потребителя данных. Эта модель эффективно снижает эксплуатационные расходы издателей данных, обеспечивая при этом надежный и безопасный доступ к данным.

Создание новых сценариев использования Web3

Этот метод открывает новые возможности для приложений permaweb, таких как динамические бэкграунды для блогов, алгоритмическое курирование контента и системы мониторинга в реальном времени. Он позволяет разделить издателей данных и операторов приложений/внешнего интерфейса, поощряя специализацию и разделение труда в сообществе с открытым исходным кодом. Этот подход многообещающе подходит для децентрализованных социальных приложений и протоколов, предлагая новый путь для децентрализованной публикации и потребления данных.

Язык запросов и API в The Graph: Использование GraphQL

Интеграция GraphQL в качестве языка запросов. Это решение существенно меняет способ доступа к данным и взаимодействия с ними через API The Graph, предоставляя упрощенный и эффективный метод запроса данных блокчейна.

Понимание роли GraphQL в графике

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

  1. Индивидуальные запросы к данным: В основе привлекательности GraphQL лежит его способность позволять клиентам точно определять структуру данных, которые им требуются. Эта возможность значительно отличается от традиционных ответов с фиксированной структурой, позволяя более целенаправленно и эффективно взаимодействовать с данными.

  2. Улучшение взаимодействия в режиме реального времени: Помимо простых запросов, GraphQL в The Graph поддерживает подписку на данные в режиме реального времени. Эта функция жизненно важна для блокчейн-приложений, где своевременные обновления и быстрота реагирования являются ключевыми для удобства пользователей.

  3. Децентрализованный и бездоверительный доступ к данным: Использование GraphQL в The Graph распространяет философию децентрализации на сферу доступа к данным. Благодаря взаимодействию с сетью децентрализованных узлов запросы на GraphQL гарантируют, что данные останутся открытыми, прозрачными и устойчивыми к цензуре.
    Сближение API и GraphQL

В экосистеме The Graph объединение API с GraphQL создает гармоничную и мощную систему поиска данных:

  1. Определение схемы и отображение данных: Разработчики определяют схему GraphQL в своем подграфе, описывая структуру данных, которые можно запросить. Затем эта схема замысловато сопоставляется с событиями блокчейна, переводя действия на цепи в структурированные данные.

  2. Выполнение запросов через индексаторы: Когда GraphQL-запрос отправляется в API подграфа, он обрабатывается децентрализованной сетью индексаторов The Graph. Этот процесс демонстрирует, как запросы выполняются распределенным образом, поддерживая принципы технологии блокчейн.

  3. Работа со сложными отношениями данных: Поскольку сложные взаимосвязи данных являются обычным явлением в блокчейне, способность GraphQL обрабатывать сложные запросы, включая различные формы фильтрации и сортировки данных, особенно полезна.

Преимущества для разработчиков и конечных пользователей

Интеграция GraphQL в The Graph дает множество преимуществ:

  • Гибкость для разработчиков: Разработчики могут использовать всю мощь GraphQL для создания запросов, которые точно соответствуют требованиям их приложений.
  • Эффективная выборка данных: Сокращение времени выборки данных повышает производительность приложений, что напрямую отражается на удобстве работы конечных пользователей.
  • Бесшовная интеграция данных: Стандартизированный характер запросов GraphQL упрощает процесс интеграции различных источников данных блокчейна в приложения.
Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.
Catalogue
Leçon 2

Технология, скрывающаяся за графиком

Вникая в архитектуру The Graph, мы обнаруживаем сложную, но элегантно структурированную систему, которая лежит в основе децентрализованного механизма запросов в экосистеме блокчейн. Эта сложная структура, в центре которой находится Графический узел, обеспечивает беспрепятственную интеграцию различных компонентов, каждый из которых играет важную роль в эффективном функционировании сети.

Графический узел: Индексирующий узел

Сердцем архитектуры The Graph является узел Graph Node. Этот ключевой компонент отвечает за индексирование подграфов и обеспечение доступа к полученным данным через GraphQL API. Это ядро стека индексатора, и его эффективная работа имеет решающее значение для успешной работы индексатора. Graph Node отличается универсальностью и может работать как на "голом" металле, так и в облачных средах, что отражает адаптивность, необходимую в динамичном ландшафте технологии блокчейн.

Хранение данных в базах данных PostgreSQL

Неотъемлемой частью работы Graph Node является база данных PostgreSQL, которая выступает в качестве основного хранилища. В этой базе данных хранятся не только данные о подграфах, но и метаданные о них, а также важные сетевые данные, такие как кэши блоков и eth_call. Организация и управление этой базой данных жизненно важны для бесперебойной работы Graph Node, обеспечивая целостность и доступность данных.

Сетевые клиенты и Firehoses

Для индексирования сетей блокчейн Graph Node соединяется с сетевыми клиентами через EVM-совместимый JSON-RPC API. Такая настройка может варьироваться от подключения к одному клиенту до более сложной схемы с распределением нагрузки между несколькими клиентами. Кроме того, компания The Graph разработала Network Firehoses - gRPC-сервис, который предоставляет упорядоченный поток блоков с учетом вилок. Хотя в настоящее время индексаторы не являются обязательным требованием, Firehose представляет собой значительное достижение в поддержке производительного индексирования в масштабе.

Метаданные на узлах IPFS и мониторинг с помощью Prometheus

Взаимодействие Graph Node с сетью IPFS имеет решающее значение для хранения метаданных развертывания подграфов. Узел IPFS, размещенный на сетевом уровне, упрощает этот процесс для индексаторов. Кроме того, дополнительная интеграция с сервером метрик Prometheus для мониторинга и отчетности добавляет еще один уровень сложности, позволяя индексаторам отслеживать и оптимизировать производительность Graph Node.

Масштабируемость и расширенные конфигурации

Гибкая настройка Graph Node, от вариантов установки до возможностей масштабирования, подчеркивает стремление The Graph удовлетворить различные операционные потребности. Систему можно горизонтально масштабировать с помощью нескольких Графических узлов и баз данных, удовлетворяя растущие потребности сети. Опытные пользователи могут использовать параметры конфигурации Graph Node, управляемые через файл TOML или переменные среды, для оптимизации обработки данных и распределения рабочей нагрузки.

Индексирование и обработка данных: Firehose и Substreams Redefined

Firehose: Переосмысление извлечения данных из блокчейна

Firehose, концепция и разработка компании StreamingFast, знаменует собой революцию в извлечении данных из узлов блокчейна. Этот инновационный инструмент разбивает каждую транзакцию в блоке блокчейна на мельчайшие элементы, сохраняя их в виде простых плоских файлов. Эти плоские файлы - не просто формат хранения данных; они воплощают смену парадигмы в индексировании данных. Они облегчают параллельную обработку, что значительно ускоряет операции индексирования. Эта технология доставляет богатые данные о вилках, полученные с помощью блокчейн-узлов, непосредственно потребителям. На практике Firehose продемонстрировал свое мастерство, обеспечив скорость захвата и обработки данных, которая раньше считалась недостижимой, установив тем самым новые стандарты извлечения данных в экосистеме The Graph.

Substreams: Пионер эффективной обработки данных

Substreams, расширение возможностей Firehose, предназначены для высокопроизводительной обработки данных параллельным потоковым способом. Эти модули, написанные на языке Rust, позволяют разработчикам составлять, сортировать, хранить и преобразовывать данные блокчейна для различных целей. Изобретательность Substreams заключается в их способности использовать плоские файлы Firehose для индексирования данных с исключительно высокой скоростью. Такой подход гарантирует, что Substreams не только высокоэффективно обрабатывают данные, но и распространяют их сразу же, как только они становятся доступными, а не полагаются на постоянные запросы.

Сочетание Firehose и Substreams

Интеграция Firehose и Substreams в экосистему The Graph обеспечивает мощную комбинацию для обработки данных. Firehose обеспечивает быструю доставку данных блокчейна в оптимизированном формате, в то время как Substream'ы продолжают уточнять и обрабатывать эти данные. Такое синергетическое взаимодействие приводит к беспрецедентной эффективности в работе с большими объемами данных блокчейна, значительно расширяя возможности The Graph.

Подграфы: Отраслевой стандарт индексирования данных

Подграфы стали отраслевым стандартом индексирования данных блокчейна с тех пор, как их представила компания The Graph в 2018 году. По сути, это открытые API, которые извлекают, обрабатывают и хранят данные из блокчейн, тем самым делая их легко доступными для запросов через интерфейс GraphQL. Благодаря поддержке более 85 000 подграфов в более чем 40 цепочках, подграфы стали незаменимыми для разработчиков web3. Они позволяют быстро развернуть базу данных Postgres, заполненную индексированными данными, готовыми к запросам с помощью слоя GraphQL. Подграфы позволяют разработчикам организованно и эффективно отображать в своих DApps широкий спектр данных блокчейна, от транзакций DeFi до происхождения NFT.

В постоянно развивающемся ландшафте технологии блокчейн подграфы стали ключевой концепцией, изменив способ взаимодействия с данными блокчейн и их использования. Эти открытые API выступают в роли посредников, легко преодолевая разрыв между децентрализованным миром блокчейн и привычной сферой структурированных данных. Извлекая, обрабатывая и организуя данные блокчейна в формат, пригодный для запросов, сабграфы дают разработчикам возможность создавать инновационные приложения, основанные на данных.

Подграфы обладают множеством преимуществ, что делает их привлекательным выбором как для разработчиков, так и для пользователей. Их децентрализованная природа обеспечивает устойчивость к цензуре и простоям, способствуя созданию безопасной и надежной экосистемы данных. Кроме того, подграфы по своей природе масштабируемы и способны обрабатывать огромные объемы данных без ущерба для производительности. Еще одним ключевым преимуществом является экономичность: подграфы часто оказываются более доступными, чем традиционные API данных.

Архитектура подграфа

Подграфы состоят из трех основных компонентов, которые работают в гармонии, обеспечивая их преобразующие возможности:

  1. Манифест: Манифест служит чертежом подграфа, описывая его источники данных, схему и код AssemblyScript. Он определяет границы данных, которые будет индексировать подграф, гарантируя, что будет захвачена только релевантная информация.

  2. Схема: Схема определяет структуру данных, подобно чертежу здания. Он описывает сущности, поля и отношения между ними, обеспечивая четкий и организованный способ представления данных.

  3. Код AssemblyScript: Этот исполняемый код выступает в качестве рабочей лошадки подграфа, переводя необработанные данные из блокчейн в формат, понятный движку GraphQL. Он также занимается индексированием и хранением данных, обеспечивая их доступность и надежность.

Процесс разработки подграфа

Создание подграфа включает в себя ряд шагов, каждый из которых тщательно продуман, чтобы обеспечить функциональность и эффективность подграфа:

  1. Разработка концепции и дизайна: Путешествие начинается с четкого представления о данных, которые будут индексироваться, и о приложениях, которые будут работать с ними. Это включает в себя определение сущностей, полей и отношений между ними, гарантируя, что структура подграфа соответствует его назначению.

  2. Разработка манифеста и схемы: Манифест и схема тщательно разрабатываются, обеспечивая основу для архитектуры данных подграфа. В манифесте указываются источники данных, а в схеме описывается структура данных, обеспечивающая их целостность и непротиворечивость.

  3. Реализация кода AssemblyScript: Написан код AssemblyScript, переводящий необработанные данные блокчейна в формат, понятный GraphQL. Он управляет индексированием, хранением и поиском данных, обеспечивая эффективный доступ к индексированным данным.

Развертывание и публикация подграфов

Как только подграф разработан, он проходит процесс развертывания, который знакомит его с миром:

  1. Интеграция Subgraph Studio: Subgraph Studio служит централизованной платформой для управления подграфами. Он облегчает процесс развертывания, позволяя разработчикам публиковать свои подграфы в децентрализованной сети.

  2. Индексирование и курирование: Индексаторы, отвечающие за получение и хранение данных блокчейна, необходимы для того, чтобы сделать подграфы доступными для разработчиков. Курирование, обычно осуществляемое с помощью токенов GRT, стимулирует индексаторов отдавать предпочтение подграфам с высоким спросом.

  3. Запросы и использование: Разработчики теперь могут запрашивать развернутый подграф с помощью запросов GraphQL, получая конкретные данные, отвечающие потребностям их приложений. Эта бесшовная интеграция дает разработчикам возможность использовать данные блокчейна для инноваций.

Будущее: Новая эра графики

По мере того, как The Graph вступает в свою новую эру (мы рассмотрим ее в Уроке 5), мы с нетерпением ждем дальнейшего развития этих основных технологий - подграфов, Firehose и Substreams. Эти компоненты будут расширяться и развиваться, играя жизненно важную роль во внедрении новых сервисов данных и обеспечении более быстрых и модульных потоков данных. Например, Verifiable Firehose может стать революционным решением для доступа к историческим данным Ethereum и решить проблемы, связанные с развивающимися стандартами блокчейна.

Различение подграфов и подпотоков

Очень важно различать подграфы и подпотоки, поскольку они служат разным целям. Подграфы идеально подходят для стандартного поиска и управления данными, предлагая простоту настройки и использования с помощью слоя запросов GraphQL. И наоборот, Substreams предназначены для более сложной аналитики и работы с большими данными, предлагая распараллеленную обработку данных и большую гибкость в обработке и хранении данных. Потоки позволяют разработчикам преобразовывать данные из базовых форматов файлов в более удобные формы, отвечающие сложным требованиям обработки данных.

Организация данных вне цепочки: Подход Graph и его влияние на конвейеры данных Web3

Компания Graph, традиционно известная своим мастерством в организации данных о цепочках, теперь расширяет свои горизонты, осваивая сферу данных о внецепочках. Такой подход согласуется с долгосрочной миссией The Graph - обеспечить легкий доступ к мировым общественным знаниям и информации.

Web3 и компромиссы в управлении данными

В архитектуре Web3, хотя пользователи могут напрямую взаимодействовать с блокчейном через промежуточные сервисы, существует компромисс, особенно когда речь идет о стоимости. Стоимость транзакций в цепочке, часто называемая "газовой комиссией", может быть непомерно высокой для сложных вычислений или хранения большого объема данных. Это ограничение исторически сдерживало сложность приложений или заставляло разработчиков создавать собственные API вне цепочки, отходя от моделей с открытым исходным кодом.

Уникальное решение Graph для внецепочечных данных

The Graph представляет собой уникальное решение этой проблемы, позволяя организовывать и обслуживать данные вне цепочки с помощью своей децентрализованной сети. Этот метод включает в себя рабочий процесс, в котором традиционные данные вне цепочки размещаются в IPFS (InterPlanetary File System), а хэши IPFS затем записываются в цепочку. Впоследствии эти данные могут быть проиндексированы по подграфам и доступны для запросов. Этот подход предлагает масштабируемый и экономичный способ публикации и предоставления сложных динамических данных без необходимости создавать и поддерживать собственные API.

Рабочий процесс: Трехэтапный процесс

Рабочий процесс состоит из трех ключевых компонентов:

  1. Задания Cron для вычисления и публикации данных: Задание cron вне цепочки выполняет сложные вычисления и публикует результаты в permaweb-источнике, например, в IPFS, индексируемом The Graph. Это задание также генерирует внутрицепочечную транзакцию для размещения хэша файла IPFS и любых соответствующих метаданных.

  2. Публикация подграфа для индексирования: Следующим шагом будет публикация подграфа, который проиндексирует эти файлы IPFS на основе хэшей файлов, размещенных в цепочке. Когда подграф опубликован, его могут подхватить и обслужить индексаторы в сети The Graph, что позволит сторонним разработчикам и пользователям запрашивать данные.

  3. Прочный и надежный доступ к данным: Благодаря использованию распределенной сети индексаторов The Graph доступ к данным остается надежным и прочным без дополнительных усилий со стороны издателя данных. Такая децентрализованная структура значительно повышает доступность и целостность данных.

Практическая реализация и экономическая эффективность

Практическим примером в экосистеме The Graph является оракул, разработанный компанией Edge & Node для публикации показателей стоимости и качества обслуживания в сети. Этот оракул публикует агрегированные данные в IPFS каждые пять минут и записывает хэш файла IPFS в цепочку Gnosis. Затем эти данные индексируются в подграфе, который может быть использован участниками протокола. Стоимость, связанная с этим рабочим процессом, удивительно мала, что делает его привлекательным вариантом для издателей данных.

Новые возможности с динамическими данными

Этот метод использования The Graph для динамических данных открывает новые захватывающие возможности для сайтов permaweb, в том числе бережливые бэкграунды для блогов, алгоритмическое курирование контента и системы мониторинга в реальном времени. Он представляет собой значительный сдвиг в способах публикации, индексирования и доступа к данным, способствуя созданию более открытой и совместной экосистемы Web3.

Организация данных вне цепочки: Инновационный подход The Graph

Расширение возможностей Graph по управлению данными вне цепочки открывает новые возможности в экосистеме Web3, создавая мост между децентрализованной и традиционной сферами данных. Эта инициатива отражает миссию The Graph - сделать более широкий спектр информации доступным децентрализованным образом, устраняя ограничения, присущие хранению данных и вычислениям на цепочке.

Баланс между потребностями в данных в цепочке и вне ее

График признает компромисс между стоимостью хранения данных и вычислений в цепочке в архитектурах Web3. Хотя прямое взаимодействие с блокчейном является простым, сложные вычисления и хранение больших объемов данных могут стать непомерно дорогими. Чтобы обойти эти ограничения, The Graph представляет метод, сочетающий хранение данных вне цепи с обращением к данным на цепи, что позволяет сохранить децентрализованную этику и одновременно повысить функциональность.

Методика работы с данными вне цепочки

Этот подход включает в себя трехэтапный рабочий процесс:

  1. Вычисления вне цепи и размещение данных в IPFS: Сложные вычисления выполняются вне цепи, а полученные данные размещаются в IPFS, децентрализованном хранилище. Этот шаг гарантирует, что данные, находясь вне цепи, хранятся верифицируемым и децентрализованным образом.

  2. Цепочечное связывание с помощью транзакций: Наряду с хранением данных на IPFS, выполняется соответствующая транзакция на цепи для регистрации хэша IPFS и других соответствующих метаданных. Этот метод привязывает данные вне цепочки к блокчейну, обеспечивая уровень доверия и отслеживаемости.

  3. Индексирование подграфов для обеспечения доступности: Последний шаг включает в себя индексирование данных, хранящихся в IPFS, с помощью подграфов. Этот процесс делает данные вне цепи легко запрашиваемыми и доступными через децентрализованную сеть The Graph.
    Практическая реализация: Edge & Node's Oracle

Практическим применением этой методологии в экосистеме The Graph является оракул, разработанный компанией Edge & Node. Этот оракул публикует показатели стоимости и качества обслуживания сети каждые пять минут следующим образом:

  • Агрегированные данные размещаются в IPFS.

  • Соответствующий хэш файла IPFS затем записывается в цепочку Gnosis через контракт DataEdge.

  • Эти файлы IPFS индексируются в подграфе, что делает данные доступными для заинтересованных сторон децентрализованным образом.
    Эта реализация демонстрирует недорогой, масштабируемый и эффективный подход к публикации и обслуживанию сложных данных без необходимости использования собственных API. Он демонстрирует, как метод The Graph можно использовать для создания динамических источников данных для различных приложений.

Экономическая эффективность и масштабируемость

Затраты, связанные с этим рабочим процессом, удивительно малы, что делает его привлекательным решением для издателей данных. Например, реализация оракула на узле Edge & Node несет минимальные расходы на транзакции в цепи и прикрепление узла IPFS, а расходы на обслуживание ложатся на потребителя данных. Эта модель эффективно снижает эксплуатационные расходы издателей данных, обеспечивая при этом надежный и безопасный доступ к данным.

Создание новых сценариев использования Web3

Этот метод открывает новые возможности для приложений permaweb, таких как динамические бэкграунды для блогов, алгоритмическое курирование контента и системы мониторинга в реальном времени. Он позволяет разделить издателей данных и операторов приложений/внешнего интерфейса, поощряя специализацию и разделение труда в сообществе с открытым исходным кодом. Этот подход многообещающе подходит для децентрализованных социальных приложений и протоколов, предлагая новый путь для децентрализованной публикации и потребления данных.

Язык запросов и API в The Graph: Использование GraphQL

Интеграция GraphQL в качестве языка запросов. Это решение существенно меняет способ доступа к данным и взаимодействия с ними через API The Graph, предоставляя упрощенный и эффективный метод запроса данных блокчейна.

Понимание роли GraphQL в графике

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

  1. Индивидуальные запросы к данным: В основе привлекательности GraphQL лежит его способность позволять клиентам точно определять структуру данных, которые им требуются. Эта возможность значительно отличается от традиционных ответов с фиксированной структурой, позволяя более целенаправленно и эффективно взаимодействовать с данными.

  2. Улучшение взаимодействия в режиме реального времени: Помимо простых запросов, GraphQL в The Graph поддерживает подписку на данные в режиме реального времени. Эта функция жизненно важна для блокчейн-приложений, где своевременные обновления и быстрота реагирования являются ключевыми для удобства пользователей.

  3. Децентрализованный и бездоверительный доступ к данным: Использование GraphQL в The Graph распространяет философию децентрализации на сферу доступа к данным. Благодаря взаимодействию с сетью децентрализованных узлов запросы на GraphQL гарантируют, что данные останутся открытыми, прозрачными и устойчивыми к цензуре.
    Сближение API и GraphQL

В экосистеме The Graph объединение API с GraphQL создает гармоничную и мощную систему поиска данных:

  1. Определение схемы и отображение данных: Разработчики определяют схему GraphQL в своем подграфе, описывая структуру данных, которые можно запросить. Затем эта схема замысловато сопоставляется с событиями блокчейна, переводя действия на цепи в структурированные данные.

  2. Выполнение запросов через индексаторы: Когда GraphQL-запрос отправляется в API подграфа, он обрабатывается децентрализованной сетью индексаторов The Graph. Этот процесс демонстрирует, как запросы выполняются распределенным образом, поддерживая принципы технологии блокчейн.

  3. Работа со сложными отношениями данных: Поскольку сложные взаимосвязи данных являются обычным явлением в блокчейне, способность GraphQL обрабатывать сложные запросы, включая различные формы фильтрации и сортировки данных, особенно полезна.

Преимущества для разработчиков и конечных пользователей

Интеграция GraphQL в The Graph дает множество преимуществ:

  • Гибкость для разработчиков: Разработчики могут использовать всю мощь GraphQL для создания запросов, которые точно соответствуют требованиям их приложений.
  • Эффективная выборка данных: Сокращение времени выборки данных повышает производительность приложений, что напрямую отражается на удобстве работы конечных пользователей.
  • Бесшовная интеграция данных: Стандартизированный характер запросов GraphQL упрощает процесс интеграции различных источников данных блокчейна в приложения.
Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.