Node Times

Cover image for Что такое модульная блокчейн-сеть?
Newsroom
Newsroom

Posted on

Что такое модульная блокчейн-сеть?

Модульный блокчейн разделяет одну машину на отдельные роли, которые можно заменять независимо друг от друга: выполнение (execution), расчет (settlement), консенсус (consensus) и доступность данных (data availability). Монолитная цепочка выполняет все четыре функции в одном процессе, что упрощает систему, но связывает её блоки, состояние и путь обновлений вместе. Практическая разница заключается не в ярлыке, а в том, что вы можете изменить, не переписывая остальную часть системы, и каждое утверждение о модульности можно проверить с помощью одного вопроса.

Одна машина или четыре роли

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

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

Монолитная цепочка объединяет эти четыре функции в одном процессе, потому что это сохраняет одно общее правило для всей системы: одни и те же валидаторы упорядочивают блоки, выполняют их и хранят данные, поэтому транзакция либо попадает в блок, либо нет. Модульность заменяет это единое правило набором интерфейсов между слоями. Там, где эти интерфейсы стабильны, слой может быть заменен; там, где они нестабильны, дизайн является монолитным с дополнительными шагами. То, как L0, L1 и L2 соотносятся после разделения этих слоев, – это отдельный вопрос, рассмотренный в руководстве по уровням.

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

Четыре слоя и то, что можно заменить в каждом

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

Слой Что он делает Что можно заменить
Выполнение запускает транзакции и изменяет состояние виртуальная машина или исполнитель
Расчет завершает споры и доказательства площадка расчета
Консенсус упорядочивает блоки и согласовывает их механизм упорядочивания
Доступность данных делает данные блока доступными для получения и проверки место публикации данных

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

Монолитная против модульной: реальный компромисс

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

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

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

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

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

Где находятся роллапы

Роллап – это выполнение, перемещенное из основной цепочки, и он заимствует другие роли извне, а не предоставляет их сам.

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

Модульный L1 идет дальше, потому что сама цепочка построена так, что эти роли могут быть заменены внутри неё, а не только заимствованы извне. То, как достигается согласие относительно результирующего состояния, в любой из форм, освещено в объяснении о консенсусе.

Совместное упорядочивание и его компромисс

Совместный последователь (shared sequencer) упорядочивает транзакции для нескольких роллапов одновременно, что дает им общее упорядочивание и требует одного оператора, от которого теперь зависят все они.

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

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

Как отличить реальную модульность от ребрендинга

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

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

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

Частые вопросы

Является ли модульный блокчейн просто роллапом?

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

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

Делает ли модульность транзакции дешевле?

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

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

Является ли монолитная цепочка устаревшей?

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

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

Что меняет совместный последователь?

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

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

Как я могу проверить, действительно ли цепочка модульна?

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

Запросите спецификацию интерфейса и одно развертывание, где замена действительно произошла.

Top comments (0)