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

in #graph4 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 имеет больше стратегического смысла для достижения этой цели, поэтому они и дальше будут использовать этот язык обработки запросов.

Coin Marketplace

STEEM 0.28
TRX 0.12
JST 0.033
BTC 69746.86
ETH 3747.17
USDT 1.00
SBD 3.80