Масштабирование чтения и записи в блокчейне – решение TheGraph Protocol

Блокчейн — это уникальная база данных со свойствами минимизации рисков. Подобно всем другим базам данных ей свойственны два вида операций: считывание и запись.

Graph

На сегодняшний день большинство дискуссий по поводу масштабирования блокчейнов связано с операциями записи. Часто для этого процесса используют единицу измерения, равную количеству транзакций в секунду (Т/с). Например:

  • Ethereum поддерживает 15-30 Т/с;
  • Binance Smart Chain — до 160 Т/с;
  • Solana — до 50 000 Т/с.

Инвесторы вложили миллиарды долларов в масштабирование операций записи блокчейна.

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

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

Почему такие большие расхождения в соотношении? Допустим, у вас есть 10 000 подписчиков в Инстаграме, и когда вы загружаете фото, 10% подписчиков просматривают его. В этом случае получается, что одна единственная операция записи, произведенная загрузкой фото, приводит к 1000 операциям считывания.

Если у вас есть 10 000 человек, торгующих каким-либо активом, и вы производите одну сделку на децентрализованной бирже, тогда эти 10 000 человек должны просмотреть эту сделку и обновить цену актива.

Операции записи ограничиваются масштабируемостью первого уровня. По мере появления решений второго уровня, таких как optimistic- и zk-rollups, а также сетей с высокой пропускной способностью (таких как Solana), количество операций записи будет резко возрастать, что приведет к экспоненциальному увеличению запросов на операции считывания по причинам, указанным выше.

Проблемы масштабирования

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

Для примера рассмотрим такой мессенджер, как Telegram. Представим, что вся система Телеграма состоит из одной гигантской таблицы с четырьмя столбцами. Ее заголовками будут:

  • идентификатор пользователя;
  • идентификатор потока;
  • временная метка;
  • содержимое сообщения.

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

Можно представить другую альтернативную структуру. Допустим, что каждый поток хранится в отдельной таблице с тремя колонками:

  • идентификатор пользователя;
  • временная метка;
  • содержимое сообщения.

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

Проблема масштабирования операций считывания в блокчейне заключается в том, что блокчейн, по определению, не устанавливает формат транзакции. Блокчейн — это просто последовательность транзакций. Любой человек в любое время может провести любую транзакцию, и она может быть любого формата и любого уровня сложности.

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

Go Ethereum (GETH) — это стандартный Эфириум Go-клиент, который имеет некоторые базовые возможности запросов. Например, вы можете сделать запрос о количестве Эфириума, содержащегося на том или ином адресе. А структура данных дерева Меркла Эфириума позволит Go-клиенту легко ответить на этот запрос.

Теперь давайте рассмотрим более сложный пример. Например, вас интересует какое количество TVL содержится в 50 пулах Uniswap, и какова полная сумма TVL во всех пулах ликвидности. Ответ на этот вопрос требует понимания того, что из себя представляет пул Uniswap, и какая цена активов в этих пулах.

По умолчанию GETH не может ответить на этот вопрос, так как сам этот Go-клиент даже не знает, что из себя представляет пул Uniswap.

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

  1. Масштабирование операций считывания.
  2. Понимание структур данных для знания того, что необходимо запрашивать.
  3. Предоставление результатов запросов сопротивления цензуре.

Решение

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

Подробнее читайте в нашей статье: В чем важность the Graph для концепции Web3.

Хедж-фонд Multicoin Capital инвестировал в проект The Graph еще в 2018 году, утверждая, что при растущем уровне запросов он станет одним из наиболее важных слоев стека Web3. Сейчас этот проект находится в критической поворотной точке своей истории, и всей отрасли в целом.

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

Запуск децентрализации — это одно, а процесс масштабирования — это совсем другое. За прошлый год The Graph вырос более чем в 20 раз и только за май 2021 года обработал более 25 миллиардов запросов. Компания The Graph Foundation выделила недавно два крупных гранта, чтобы помочь решить проблему масштабирования операций считывания.

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

Роль The Graph

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

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

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

The Graph является протоколом, который:

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

Что произойдет, если индексаторы (люди, выполняющие запросы) не смогут удовлетворить весь спрос?

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

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

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

Масштабирование структуры данных

Есть два технических способа решить проблему структуры данных:

  1. Запросить у GETH список всех пулов Uniswap и всех релевантных транзакций (депозиты, выводы и торговля), а затем рассчитывать TVL как программу, не относящуюся к Go-клиенту. Каждый раз, когда кто-либо задает вопрос, необходимо повторять вычисления, чтобы получать обновленный элемент списка.
  2. Вы определяете отдельную структуру данных так, что каждый раз, когда новая транзакция добавляется в конец огромной таблицы, представляющей собой список транзакций Эфириума, система определяет, связана ли эта транзакция с увеличением или уменьшением величины пула Uniswap. Если это так, то система обновляет соответствующие поля дополнительных данных в базе, находящейся за пределами GETH.

The Graph обеспечивает основу для точного определения структур данных — Subgraph manifests, которые позволяют реализовать решение второго уровня. «Граф» также предоставляет сервис индексирования базы данных, основанный на файлах манифеста, и систему запросов в режиме реального времени, которая функционирует в децентрализованной сети узлов.

Помимо этого, The Graph предоставляет разработчикам запросы, использующие язык запросов GraphQL, разработанный Facebook в 2015 году. Сейчас GraphQL считается золотым стандартом для разработчиков интерфейсов запросов, поскольку он очень прост в использовании.

Существуют и другие решения, которые пытаются решить эту проблему. Мы сегментируем рынок следующим образом:

Чарт The Graph

Сеть Pocket интересна тем, что она единственная находится в нижнем правом углу. Однако успех The Graph продемонстрировал, что разработчики предпочитают работать используя GraphQL и сабграфы, вместо удаленного вызова процедур (RPC) узлов GETH, так как это гораздо проще и быстрее.

Сопротивление цензуре и протокол безопасности

Крупнейший конкурент The Graph — Infura, являющийся более упрощенным сервисом. Буквально, это балансировщик нагрузки узлов GETH. Он даже не пытается предоставить абстракции более высокого уровня. Все остальные конкуренты занимают лишь малую долю от объема Infura.

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

Если индексатор «Графа» возвращает ложный ответ, он может быть серьезно наказан. Следовательно, если любой человек обнаруживает, что индексатор производит недостоверный результат, он может передать этот результат блокчейну, и блокчейн сам выступит в роли решающего арбитра. И в случае, если индексатор предоставил ложный ответ, блокчейн перережет связь индексатора, и вознаградит человека, сообщившего о злонамеренном поведении.

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

Маховик The Graph

Вывод

Для чего нужна децентрализация? Она позволяет сделать несколько вещей:

  1. По-настоящему бессерверные приложения, которые оказывают сопротивление цензуре и не могут быть закрыты.
  2. Перемещение данных ближе к «границе» для сокращения пинга и увеличения производительности.
  3. Намного более эффективный способ масштабирования, позволяющий совершать от нескольких миллионов до нескольких триллионов запросов в день.

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

В случае с The Graph, децентрализация приводит как к сопротивлению цензуре, так и к масштабированию. Любой человек может запустить Graph-сервер, и увидеть в режиме реального времени, какой запрос запрашивается для каждого основного компонента сабграфа.

Таким образом, инициативные разработчики из любой точки мира могут обнаружить, что тот или иной конкретный сабграф обслуживается недостаточным образом. Они могут быстро создать Graph-узел, начать обслуживать запросы и получать таким образом доход. Это ключевая способность, которая производит бесконечное масштабирование «Графа» и приводит к сопротивлению цензуре.

В этом и заключается сила децентрализации.

Подписывайтесь на наш Telegram канал. Будьте в курсе новых статей.

Banner Binance 700 90
Banner Binance 300 250
Ссылка на основную публикацию