Как работает роллап стек от AltLayer?
Last updated
Last updated
AltLayer разработан как модульный масштабируемый фреймворк, позволяющий подстраиваться под различные нужды приложений с конфигурациями под разные требования. Система совместима как с EVM, так и с WASM и поддерживает все контракты, созданные на основе Ethereum или EVM/WASM-совместимых чейнов.
AltLayer разделяет жизненный цикл исполнения транзакции на несколько этапов: агрегацию транзакций, производство блоков и их верификацию.
Агрегаторы получают транзакции из различных источников, например, от браузерных расширений, мобильных кошельков и бэкендов dApp. Они организованы децентрализованно, чтобы избежать единой точки отказа. Они агрегируют транзакции и отправляют их партиями различным производителям блоков (например, балансировщикам нагрузки) вместо того, чтобы перегружать одного производителя блоков.
В зависимости от требований, предъявляемых к dApp, можно также настраивать конфигурацию агрегаторов. Например, если разработчик dApp не хочет обеспечивать балансировку нагрузки, можно упростить настройку системы, позволив блокчейн-производителям принимать транзакции непосредственно от конечных пользователей и тем самым сделав агрегаторы необязательными.
Агрегаторы также проставляют временные метки на получаемых транзакциях и упорядочивают их перед передачей на исполнение производителям блоков. Если агрегаторов несколько, то вместо того, чтобы пытаться синхронизировать глобальную последовательность по всем агрегаторам, мы предполагаем, что у каждого агрегатора есть источник достоверного времени. Тогда номера последовательностей, генерируемые каждым агрегатором, могут быть использованы для выявления отсутствующих транзакций. В результате отпадает необходимость в глобальном консенсусе относительно последовательности, а каждая нода должна лишь синхронизировать время в соответствующих контрольных точках и затем отслеживать его индивидуально.
Основная задача производителей блоков заключается в совместном выборе очередности транзакций на основе информации, полученной от агрегаторов и не подлежащей опровержению. Они также отвечают за выполнение транзакций и обновление состояния сети. Новый блок, созданный производителем блоков, представляет собой оптимистичный взгляд на продвижение блока, подобный оптимистичному исполнению в оптимистичных роллапах.
По умолчанию AltLayer работает с архитектурой с одним производителем для минимизации задержки транзакций. Однако если владелец роллапа предпочитает иметь более децентрализованную систему и готов пойти на компромисс в отношении задержки транзакций, можно добавить больше производителей блоков. Производители блоков работают по протоколу консенсуса GRANDPA.
Основная задача верификаторов - проверка достоверности блоков, созданных производителями блоков. Кроме того, они обновляют базовый Layer 1 блокчейн-продукции, периодически создавая пакеты. Перед созданием пакета верификатору необходимо подготовить дополнительную информацию, которая будет включена в пакет. Дополнительная информация необходима для оптимизации верификации на чейне. Например, чтобы сократить объем работы по верификации от блока к транзакции, необходимо генерировать хэши корней Меркла для требуемых состояний не для всего блока, а для каждой транзакции.
При создании блока производители блоков генерируют минимальный объем информации, необходимый верификаторам для работы. Это делается для обеспечения своевременности генерируемых блоков и повышения общей пропускной способности. Любая дополнительная информация (например, хэши состояний на уровне инструкций), необходимая для верификации на чейне, остается на усмотрение верификатора.
Аналогично, чтобы свести верификацию к одной инструкции, корневые хэши должны генерироваться для каждой инструкции, а не для каждой транзакции. Включение этих хэшей промежуточных состояний позволяет разбить пакет на части с соответствующей степенью детализации. Корневой хэш Меркла состояния инструкции будет включать все инструкции, которые должны быть выполнены для конкретного пакета.
Для того чтобы выявить и наказать злонамеренного верификатора, предоставившего недействительный корневой хэш состояния основного чейна, в AltLayer предусмотрен механизм доказательства мошенничества и разрешения споров. Для доказательства мошенничества и разрешения споров разрешение споров на чейне осуществляется с помощью бисекционного подхода путем нахождения точной спорной инструкции, что приводит к минимальным затратам на проверку доказательства мошенничества на чейне. По истечении периода оспаривания без успешных споров блок считается завершенным.
Важно отметить, что вместо того, чтобы ждать окончания периода оспаривания, отдельные пользователи могут самостоятельно проверить блок, чтобы убедиться в его окончательности, не дожидаясь окончания периода оспаривания.
Определения завершенного блока в разных блокчейнах могут различаться. Для некоторых блокчейнов завершенный блок является детерминированным или полностью завершенным. То есть завершенный блок не подлежит изменению, за исключением случаев вмешательства внешних по отношению к системе факторов, например, жесткого форка. Для других завершенный блок может быть просто вероятным, т.е. любой завершенный блок может быть отменен (хотя и с небольшой вероятностью) при появлении более длинного или более тяжелого чейна, хотя вероятность этого становится тем меньше, чем длиннее чейн.
Обычно блокчейн различает только завершенные и незавершенные блоки. В AltLayer, напротив, используется многоуровневый способ финализации блоков. Многоуровневый принцип позволяет конечному пользователю принимать решение о статусе завершенности транзакции в соответствии с его бюджетом безопасности. Финализация состоит из трех различных уровней: Уровень исполнения (для низкого бюджета безопасности), Уровень верификации (для среднего бюджета безопасности) и Уровень роллапа (для высокого бюджета безопасности).
По мере прохождения блока через различные уровни финализации растет уровень уверенности в окончательности блока. Самый низкий уровень уверенности наблюдается на уровне исполнения и самый высокий - на уровне роллапа.
Финализация на уровне исполнения: Как уже говорилось, транзакции собираются из пула транзакций и упаковываются в блоки производителями блоков. Затем блоки принимаются протоколом консенсуса, в котором участвуют производители блоков. Блоки и транзакции в них, принятые протоколом консенсуса, считаются завершенными на уровне исполнения.
Финализация на уровне верификации: После того как блоки были произведены производителями блоков и прошли протокол консенсуса, они проверяются верификаторами. Блоки, прошедшие верификацию в ходе этого процесса, считаются завершенными на уровне верификации.
Более надежная финализация достигается также в том случае, если дополнительные верификаторы могут подтвердить или отклонить обновление, сделанное другим верификатором. Чем больше подтверждений имеет блок, тем выше вероятность того, что он корректен. Отметим, что достижение консенсуса по верифицированным блокам с помощью группы верификаторов является необязательной функцией AltLayer.
Финализация на уровне роллапа: Блоки, прошедшие консенсус кворума, проходят период проверки. Это позволяет любому желающему запустить свой собственный верификатор и при желании принять участие в процессе проверки. В случае обнаружения расхождений между верификатором и предложением на чейне, верификатор может принять решение о вызове блока.
В случае успешной проверки любой блок, созданный после момента проверки, будет считаться недействительным. AltLayer также должен будет выполнить возврат состояния до точки последнего действительного блока. В случае неудачного вызова стейк, предоставленный оспаривателем, будет уменьшен.