Plasma — решение по масштабированию Ethereum от Виталика Бутерина

289
Просмотры

Почему требуется масштабирование?

С принятием киптовалюты нагрузка на блокчейн постоянно растет. Причина в самой архитектуре сети. Она состоит из нескольких узлов, объединенных в нее. Ноды (узлы) ответствены за работу и управление сетью. Каждый из них участвует в консенсусе. Это помогает добиться децентрализации и безопасности, но сеть теряет в эффективности. В блокчейне есть определенные задачи, которые являются параллелизуемыми, но некоторые из них таковыми не являются.

Например, «параллелизуемая» задача — проверка цифровой подписи. Но уже транзакции не могут выполняться параллельно; это нужно делать по очереди, чтобы избежать ошибок, типа двойных расходов.

Подробно о проблемах масштабирования.

Ethereum не был готов для популярных DApp, одновременно используемые хайповые приложения засоряли блокчейн и нарушали стабильность. Например, на своем пике транзакции cryptokitty заняли 20% вычислительной мощности сети.

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

Плазма — это решение по масштабированию для блокчейна в соавторстве Lightning Network в лице Джозефа Пуна и соучредителя Ethereum Виталика Бутерина.

У проекта есть 47-страничный блокчейн с описание разработки.

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

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

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

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

Plasma — решение по масштабированию Ethereum от Виталика БутеринаЕсли бы кто-то образно изобразил архитектуру и структуру, то скорее всего, получилось бы дерево с отходящими от ствола ветвями или как система контроля версий Git (для тех кто знаком с программированием), она имеет такую же структуру.

Основной блокчейн с надстроенными плазма-контрактами.

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

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

Корневые и дочерние цепи образуют набор «вложенных блокчейнов»:

Plasma — решение по масштабированию Ethereum от Виталика Бутерина
О подписях синим цветом скажем ниже

Цели создания Плазмы для Эфириум

Чтобы эффективно реализовать плазму, Джозеф Пун и Виталик Бутерин спроектировали особый дизайн:

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

Функциональность плазмы зависит от MapReduce. Это модель программирования и связанная с ней реализация для обработки и создания больших наборов данных с параллельным распределенным алгоритмом в кластере.

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

MapReduce состоит из двух частей:

  • Карта (Map). В этой части данные делятся и передаются разным объектам.
  • Уменьшение (Reduce): сущности решают проблему и выполняют «итоговую» функцию, которая значительно снижает размер данных и возвращает суммарное значение.

Предположим, Алиса сказала Бобу подсчитать количество слов в книге. Затем Боб дает по несколько страниц Чарли и Дейву. Они одновременно подсчитывают количество слов на своих страницах и говорят результат Бобу. Боб складывает и говорит окончательный результат Алисе.

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

Map — шаг 1:

  • Первая плазма-цепь дает задачу второму уровню.
  • Плазма второго уровня — третьему.

Reduce — шаг 2:

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

Название «меркализованные» происходит от понятия Дерево Меркля, в русском языке — дерево хешей.

Plasma — решение по масштабированию Ethereum от Виталика Бутерина
https://commons.wikimedia.org/w/index.php?curid=64589878

 

На приведенной выше схеме показано, как выглядит дерево Merkle. В дереве каждый узел является хешем значений своих дочерних узлов («Hash 0-0» и «Hash 0-1» являются дочерними узлами узла с надписью «Hash 0»). Листовые узлы находятся в самом нижнем ярусе дерева. На схеме это L1, L2, L3. Единственным узлом на самом высоком уровне с надписью «Верхний хеш» является корневой узел.

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

Разрешение споров в Plasma Ethereum

Согласно Джозефу Пьюну, выходящие протоколы являются «основной новинкой плазмы». Итак, что означает «выход»? Одной из целей дизайна Plasma было удостовериться, что она не полагается на себя для безопасности. Это достигается так: когда какой-то узел подозревается в мошенничестве или скомпрометирован, все идет в обход его. Это доказательство мошенничества.

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