Ускорение внедрения Web 3.0 с помощью The Graph

Stake Service
5 min readDec 20, 2020

--

Обзор базовой инфраструктуры запросов

Будущее децентрализованных приложений и Web 3 будет определяться базовым уровнем инфраструктуры, который их поддерживает. Тот факт, что раньше децентрализованным приложениям приходилось создавать собственную логику запросов и создавать хранилище для вывода (в блокчейне) сдерживал развитие таких приложений.

www.thegraph.com

The Graph предоставляет возможность для разработчиков децентрализованных приложений быстрее вывести на рынок их продукт.

Хотя некоторые данные можно легко запросить из блокчейна, например Ethereum, этот процесс усложняется, если запросы становятся более специализированными / детализированными. В некоторых случаях запрашиваемые данные могут требовать определенного уровня преобразования / объединения, достижение которого может занять много времени и быть дорогим по своей сути, причем этот процесс может повторяться снова и снова (несколькими независимыми группами).

The Graph и его сабграфы обеспечивают решение этой проблемы.

В основе их решения лежит «Узел Graph».

Узел Graph

https://thegraph.com/docs/introduction#what-the-graph-is

Узел Graph работает в тандеме с узлом блокчейна (например, Geth, Parity в контексте Ethereum) и предоставляет информацию, точно извлеченную из каждого блока, используя для этого т.н. “сабграф”.

Так же как Google курирует наиболее релевантные результаты поиска при данном запросе, так и курирование протокола Graph позволяет Индексаторам (участникам, которые запускают узлы Graph) индексировать только наиболее актуальные сабграфы. Однако, в отличие от Google, The Graph нацелен на децентрализацию, и курирование будет осуществляться не центральным органом, а большим количеством Кураторов, которые (как и их коллеги Индексаторы) будут получать вознаграждение за свои роли.

Сабграф определяет, какие данные Graph будет индексировать из Ethereum и как их следует хранить. Сабграфы могут быть созданы для каждого проекта или приложения (например, Uniswap / Compound), которые работают на блокчейне Ethereum.

Graph опубликовал исчерпывающий набор документации, доступ к которым можно получить с их веб-сайта (например manifest, mappings).

Запрос к узлу Graph можно послать с помощью GraphQL endpoint.

GraphQL

www.graphql.com

GraphQL — это язык запросов и обработки данных с открытым исходным кодом. Мобильные приложения Facebook работают на GraphQL с 2012 года.

Вся спецификация языка GraphQL была открыта в 2015 году и теперь доступна во многих средах и используется командами разного уровня.

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

GraphQL имеет среду разработки на основе браузера, пригодную для изучения запросов GraphQL. Это отличный инструмент по написанию запросов для извлечения и преобразования данных. Синтаксис языка отличается от SQL тем, что они больше похожи на объекты JavaScript.

Запросы GraphQL быстрые, стабильные и всегда выдают предсказуемые результаты

API-интерфейсы GraphQL организованы по типам и полям, где вы можете получить полный доступ ко всем возможностям ваших данных из единой конечной точки (endpoint). GraphQL использует типы, для того чтобы децентрализованные приложения запрашивали только то, что возможно получить или выдавали ясные и полезные ошибки.

Приложения могут использовать типы, чтобы избежать написания parsing кода вручную.

GraphQL создает единый API для всего вашего приложения, не ограничиваясь конкретным механизмом хранения, оставляя вам процесс, который настолько прост, что может быть описан как:

Опишите свои данные

Спросите, что вы хотите

Получите предсказуемые результаты

Используя GraphQL, протокол Graph Protocol вводит понятие «сабграфы».

Сабграфы

Сабграфы обеспечивают быстрое время отклика из-за того, что вычисления на необработанных данных блокчейна выполняются до запроса; что позволяет быстро обслуживать индексированные данные по запросу. Благодаря предварительным вычислениям и надежной инфраструктуре сабграфы могут выполнять сложные и детализированные запросы (позволяя по мере необходимости индексировать определенные контракты, методы и события). Они также предоставляют возможность начинать индексацию с любого заданного блока, позволяя сократить время, необходимое для синхронизации и индексации сабграфа.

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

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

Сабграфы состоят из трех основных компонентов, они включают:

Manifest — файл (YAML), который определяет смарт-контракты, события, блоки и вызовы. Кроме того, он также сопоставляет данные событий с сущностями (entities) и теми объектами, которые содержат данные.

Manifest — отличное место для оценки достоверности сабграфа, убедившись в правильности ссылок на контракты, правильные обработчики событий / вызовов (event/call handlers) и в том что использованы самые последние файлы ABI. Он также дает представление о том, как необработанные данные сопоставляются с определенным набором сущностей и легко ли понимается это сопоставление.

Schema — файл (GraphQL), который упорядочивает данные, хранящиеся в сущностях, и позволяет указать способ, с помощью которого данные будут представлены.

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

Mappings — файл, который преобразует данные Ethereum нижнего уровня в желаемые сущности, указанные в файле GraphQL Schema.

Для тех, кто знаком с языком AssemblyScript файл Mappings дает представление о сложности и полезности сабграфа на основе необработанных данных и того, как они преобразуется в результате.

Теперь о том, как может выглядеть «сабграф» и где нам его найти…

Поиск сабграфа в его среде обитания

Начните с посещения https://thegraph.com/explorer/

В проводнике выберите сабграф из предоставленного списка, для нашего примера давайте выберем сабграф Compound Protocol.

https://thegraph.com/explorer/subgraph/graphprotocol/compound-v2

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

Основные моменты на странице сабграфа включают:

· сеть Ethereum, в которой он находится (например Mainnet)

· последнее обновление

· дата создания

· количество сущностей (то есть объектов, содержащих данные) в сабграфе

· полностью ли он синхронизирован с самой последней высотой блока Ethereum

· ссылка на Github

· ID IPFS

· Адрес запроса (HTTP)

На изображении выше вы можете увидеть различные сущности на игровой площадке (playground) сабграфа и протестировать простые запросы. Часто несколько примеров запросов уже доступны. Это позволяет вам получить представление о данных, их функциональности и ограничениях. Кроме того, вы можете узнать, какие сущности доступны и с какими атрибутами из схемы (т.е. модели данных).

Дальше можно перейти к исследованию «игровой площадки» сабграфа…

Заключение

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

Данная статья является переводом, оригинал доступен по ссылке:

https://levelup.gitconnected.com/accelerating-web-3-0-with-the-graph-afb29aa078ee

автор оригинала Andrew Margetts

--

--

Stake Service
Stake Service

Written by Stake Service

http://stakeservice.com/ StakeService is an experienced Proof-of-Stake validator for Celo, Graph, Solana, Plasm, Avalanche, Sentinel, Bitsong

No responses yet