The Graph - децентрализованные базы данных.

in graph •  4 years ago 

Любой, кто когда-либо пытался создать распределенное приложение (dApp) на блокчейне (Ethereum), согласится: хотя блокчейны концептуально довольно близки к базам данных, запросы к базам данных кажутся совершенно другим миром по сравнению с запросами к блокчейну.

the-graph-the-path-to-web3.jpg

Проблематика запросов к блокчейну

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

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

The Graph - быстрый доступ к блокчейну

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

Когда Graph был впервые представлен в июле 2018 года, руководитель проекта Янив Таль упомянул, что они запустят локальный узел, а затем полностью децентрализованную гибридную сеть Graph. Гибридная сеть - это вариант конструкции API, который устраняет разрыв между централизованными и децентрализованными протоколами. Это позволяет облегчить использование блокчейна в качества базы данных.

Открытый исходный код Graph

The Graph - это открытая торговая площадка, которая не взимает плату за использование. The Graph имеет открытый исходный код для всех своих основных компонентов, включая: Graph Node (реализация узла индексации, встроенного в Rust), Graph TS (помощники AssemblyScript для построения сопоставлений) и Graph CLI (инструменты командной строки для ускорения разработки).

По словам Янива Таля, суть проекта The Graph, - это определение детерминированного способа индексирования. Graph Node определяет абстракцию хранилища, которую они реализуют с помощью одной из самых обширных баз данных с открытым исходным кодом PostgreSQL.

В одном из своих интервью Янив Таль заметил:

«Все, что вам нужно для запуска подграфа, это иметь открытый исходный код. Прямо сейчас в качестве механизма хранения мы используем базу Postgres. Graph Node определяет абстракцию хранилища, которую мы реализуем с помощью Postgres. Мы написали много кода, но сделали его открытым, поэтому все это не является проприетарным».

Подграф, на который здесь ссылается Тал, - это просто часть цепочки блоков, используемая для хранения данных для определенных приложений dApp. Определение подграфа - это первый шаг к использованию Graph. Подграфы для популярных протоколов и dApps уже используются, и их можно просматривать с помощью Graph Explorer, который представляет собой простой пользовательский интерфейс внутри сервиса.

Modeling-Cryptoeconomic-Protocols-as-Complex-Systems-Part1-Large.jpg

Graph Explorer

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

  • Площадка для поиска доступных данных с помощью интроспекции и выполнения запросов
  • Журналы для просмотра обработанных событий и ошибок
  • Атомарные обновления без простоев
  • Панель управления для просмотра подграфов и управления токенами
  • Переключатель версий для перехода между ожидаемой и текущей версиями во время синхронизации подграфа
  • Аутентификация GitHub с поддержкой индивидуальных и корпоративных учетных записей

Graph Explorer делает значительно упрощает работу с децентрализованными приложениями. С запуском размещенной службы и Graph Explorer сообщество Ethereum получило более удобный и быстрый доступ к организованным данным из Ethereum и IPFS.

Использование языка GraphQL в dApps

Доступ к данным блокчейна затруднен по трем фундаментальным причинам: децентрализация, непрозрачность и последовательное хранение данных. Для упрощения блокчейна есть два варианта:

Написание пользовательского кода для поиска данных, и повторение этих (весьма дорогих) операций каждый раз, когда данные снова понадобятся

Одноразовое получение данных и сохранение их в базе вне сети с построением индекса, указывающего на оригинал данные блокчейна.

Здесь на помощь приходит The Graph. Как мы обозначили выше, The Graph - это децентрализованный протокол для индексации и запроса данных блокчейна. Но это больше, чем просто протокол: у Graph также есть API с открытым исходным кодом, использующая GraphQL.

GraphQL - это язык с открытым исходным кодом для API, разработанный Facebook. Сейчас GraphQL популярен, и он определенно лучше, чем отсутствие языка запросов вообще. Значительная часть GraphQL, добавленная относительно недавно, - это SDL (язык определения схемы).

Лучший опыт разработки

Разработчики могут создать свою модель предметной области в SDL, а затем использовать ее не только для проверки JSON, возвращаемого GraphQL, но и для генерации кода в стиле MDD (Model Driven Development). В любом случае использование GraphQL не устраняет «волшебным образом» сложность сопоставления многих API. Используя этот язык, вы просто абстрагируете и переносите код в преобразователь GraphQL.

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

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

The-Graph-Network-desktop@2x.png

Заключение: Будущее The Graph

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

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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!