Перевод статьи https://cexplorer.io/article/advantages-of-determinism-for-zk-rollups-on-cardano
Транзакции Cardano редко завершаются неудачно, поскольку проверка не зависит от общего глобального состояния. Это ключевое различие между моделью UTxO Cardano и аккаунт моделью Ethereum. Подход Cardano обеспечивает предсказуемую и детерминированную проверку транзакций и выполнение скриптов. Результат известен заранее, что особенно полезно при внедрении роллапов ZK. Они могут быть реализованы без необходимости в централизованном отслеживании. В этой статье мы сначала рассмотрим детерминизм и причины, по которым транзакции в Ethereum могут завершаться неудачей. Затем мы объясним основные принципы роллапов ZK в Ethereum. После этого мы рассмотрим, как роллапы ZK могут отличаться в экосистеме Cardano.
Введение в роллапы ZK
Роллап с нулевым разглашением или с нулевым знанием (ZK роллап) - это решение для масштабирования на слое 2 (L2). Он может взять часть состояния (обычно балансы на счетах пользователей) со слоя 1 (L1) и перенести ее на слой 2. Это позволяет выполнять сложные вычисления в L2, которые в противном случае были бы медленными и ресурсоемкими, если бы выполнялись ончейн (т.е. в L1). Другими словами, вычисления выполняются оффчейн, обеспечивая эффективное решение для масштабирования.
Изменения состояния, такие как проверка транзакции и выполнение смарт контракта, осуществляются оффчейн и впоследствии проверяются ончейн с использованием доказательств с нулевым разглашением (ZK доказательства или ZKP). Роллапы ZK значительно повышают пропускную способность транзакций и минимизируют транзакционные издержки, сохраняя при этом безопасность сети базового слоя, к которой они подключены для расчетов.
Роллапы ZK периодически передают небольшой объем данных на слой 1 (L1). Эти данные являются результатом обработки большого объема данных на слое 2 (L2). Таким образом, роллапы ZK эффективно повышают устойчивость к цензуре и безопасность базового слоя для окончательного расчета транзакций.
Необходимость в контексте при проверке транзакций
В любой финансовой системе для подтверждения транзакции — перевода денежных средств между двумя или более участниками — требуется определенный контекст или состояние для проверки. Система, помимо прочего, должна убедиться, что на счету отправителя достаточно средств. Она также должна гарантировать, что пользователи не потратят одни и те же средства более одного раза, тем самым решая хорошо известную проблему двойного расходования.
Входом для проверки являются транзакция и состояние. Выходом является решение о том, является ли транзакция действительной в контексте состояния или нет.
Блокчейн - это распределенная финансовая система, в которой обработка транзакций или переходы состояний осуществляются путем добавления новых блоков в конец цепочки блоков. Каждый блок содержит несколько транзакций.
Как показано на рисунке, глобальное состояние меняется с каждым новым добавленным блоком. Последнее изменение состояния произошло после добавления блока N+4, в результате чего текущее глобальное состояние стало N+4.
Cardano и Ethereum используют разные контексты для проверки транзакций.
В случае Ethereum проверка транзакций или смарт контрактов зависит от глобального состояния на определенный момент. Это глобальное состояние охватывает текущее состояние всех аккаунтов, включая их балансы и состояние любых существующих смарт контрактов. Транзакции внутри блока расположены в фиксированной последовательности, и каждая транзакция потенциально может изменить глобальное состояние. Следовательно, на результат выполнения транзакции могут влиять транзакции, которые были выполнены до нее в том же блоке.
Как показано на рисунке, последним добавленным блоком является N+3, что приводит к глобальному состоянию N+3. Сеть пытается перейти в новое состояние, N+4, и, таким образом, создается новый блок N+4. Важно отметить, что проверка транзакции в блоке N+4 (обозначенном зеленым прямоугольником) зависит от глобального состояния. Как только транзакция будет включена в блок N+4, последующая транзакция может быть подтверждена, и будет зависеть как от глобального состояния, так и от предыдущей транзакции.
Одна из причин, по которой транзакции Ethereum могут завершаться неудачно, заключается в непредсказуемости глобального состояния во время проверки транзакции. Когда транзакция создается, невозможно предсказать ее выход. Глобальное состояние во время проверки транзакции может отличаться от состояния во время создания транзакции. В промежутке между отправкой транзакции и ее подтверждением балансы на аккаунтах участников транзакции могут измениться. Эти изменения в балансах аккаунтов могут помешать выполнению транзакции в соответствии с первоначальными намерениями отправителя.
На рисунке показан период между отправкой транзакции TX 10, которая произошла в блоке N+2 (состояние +2), и последующей проверкой транзакции, следующей за проверкой транзакции TX 9. В течение этого периода произошли многочисленные изменения в глобальном состоянии. Проверка транзакции TX 10 зависит как от глобального состояния, так и от изменений, внесенных транзакцией TX 9. Транзакция TX 9 или любое предшествующее изменение потенциально могут привести к сбою транзакции TX 10.
Транзакции Ethereum можно охарактеризовать как транзакции имеющие состояние.
В отличие от этого, Cardano работает без глобального состояния и использует модель UTxO. В этой модели проверка транзакции основана на ее входах и выходах, что устраняет необходимость в привязке к глобальному состоянию. Каждая транзакция использует определенные значения UTXO в качестве входов и генерирует новые значения UTXO в качестве выходов. Действительность транзакции зависит исключительно от того, являются ли расходуемые UTXO действительными и неизрасходованными, а также от того, соответствует ли общее значение входов общему значению выходов.
Проверки транзакций не зависят друг от друга. UTXO являются неизменяемыми объектами, и к ним может быть обеспечен эксклюзивный доступ. В рамках проверки блоков легко гарантировать, что каждый вход UTxO расходуется только один раз и полностью. Порядок транзакций внутри блока Cardano не имеет значения в контексте состояния.
На рисунке изображена сеть, которая генерирует новый блок N+4, содержащий транзакции TX 9 и TX 10. Новые транзакции, TX 9 и TX 10, используют старые выходы UTXO (обозначенные зелеными прямоугольниками) для формирования входов UTXO (обозначенных красными прямоугольниками). Порядок транзакций в блоке не имеет значения, поскольку транзакции независимы и не влияют друг на друга. Транзакция TX 10, отправленная вскоре после создания блока N+2, может использовать UTxO из транзакции внутри этого блока. Добавление нового блока N+4 приводит к созданию новых UTXO из входов UTXO, что означает изменение состояния.
Транзакции Cardano по своей сути не имеют состояния. Как входы, так и выходы известны на момент отправки транзакции. Это позволяет провести локальную проверку транзакции перед отправкой, гарантируя, что она, скорее всего, пройдет проверку в сети. Возможность расходования входов UTXO (их наличие и возможность расходования с правильной подписью) может быть проверена локально, так же как и результат выполнения скрипта (который зависит от входов, добавленных отправителем в транзакцию). Это дает отправителю высокую степень уверенности в том, что транзакция не завершится неудачей.
В отличие от Ethereum, Cardano работает предсказуемо и детерминированно. Это фундаментальное отличие существенно влияет на использование ZK-доказательств.
Важно пояснить, что Ethereum выполняет детерминистическую проверку транзакций в том смысле, что при одинаковых входах (данные транзакции) и одинаковом состоянии (текущее глобальное состояние блокчейна Ethereum) EVM всегда будет выдавать один и тот же выход. Однако результат проверки транзакции не является детерминированным. Результат проверки может отличаться от ожиданий пользователя.
Во время отправки транзакции пользователь не может предсказать, каким будет глобальное состояние на момент проверки транзакции. Поэтому невозможно оценить результат проверки с высокой степенью достоверности. Это можно только предположить.
Роллап ZK поддерживает состояние
В решениях слоя 2, таких как роллапы ZK, проверка транзакций имеет решающее значение для поддержания целостности системы. Они включают в себя защиту от двойного расходования средств и несанкционированного создания новых токенов.
Как и в случае со слоем 1 Ethereum, роллапы ZK (L2) также сохраняют глобальное состояние. Это глобальное состояние обновляется с каждой транзакцией, что делает последовательность транзакций важной.
Поддержка состояния в роллапах ZK значительно менее сложна, чем в блокчейне Ethereum, в первую очередь потому, что за ней обычно следит централизованная организация, известная как секвенсор. В результате один сервер может управлять балансами на аккаунтах пользователей.
Пользователи, желающие использовать роллап ZK, должны заблокировать токены, которые были выпущены на Ethereum. Для этого они используют смарт контракт Ethereum, который блокирует токены и генерирует эквивалентную сумму на втором слое.
На втором слое пользователи могут отправлять транзакции. Эти транзакции изменяют балансы аккаунтов пользователей на слое 2. Однако важно отметить, что все изменения состояния, происходящие на слое 2, не влияют на глобальное состояние Ethereum в данный конкретный момент.
Глобальное состояние сети Ethereum меняется независимо от состояния слоя 2.
Если пользователи захотят выйти из слоя 2 и разблокировать токены, защищенные смарт контрактом Ethereum, они должны инициировать вывод средств из роллапа ZK. В результате этого действия их токены будут сожжены на слое 2 и разблокировано эквивалентное количество токенов на слое 1. На протяжении всего этого процесса должным образом отражаются любые изменения во владении токенами, произошедшие на слое 2.
Чтобы вывести токены из роллапа ZK, необходимо предоставить доказательство ZK.
Когда пользователь хочет перевести свои токены из роллапа ZK обратно в Ethereum, он инициирует запрос на вывод средств. В этом запросе указывается количество токенов, которые он намерен вывести, и адрес Ethereum, на который токены должны быть отправлены.
Впоследствии роллап ZK генерирует доказательство с нулевым разглашением (ZK), которое подтверждает этот запрос на вывод средств.
Это доказательство, по сути, подтверждает, что “пользователь действительно владеет этими токенами на слое 2, и они не были израсходованы”.
Это доказательство ZK затем передается в смарт контракт на Ethereum. Если смарт контракт подтверждает, что доказательство действительно, запрошенное количество токенов разблокируется с помощью смарт контракта и переводится на адрес пользователя в Ethereum.
Подводя итог:
Ethereum блокирует токены пользователей в результате депозитной операции, что влияет как на глобальное состояние Ethereum, так и на состояние роллапа ZK одновременно. Пользователи могут использовать токены только на слое 2. Транзакции, совершенные в рамках роллапа ZK, в первую очередь влияют на состояние слоя 2. Далее мы проиллюстрируем, как изменения состояния в роллапе ZK также влияют на состояние слоя 1. Если пользователи хотят перевести токены со слоя 2 обратно в Ethereum, они должны отправить транзакцию вывода, которая разблокирует токены слоя 1. Это действие еще раз изменяет состояния как слоя 1, так и слоя 2.
Хотя балансы в Ethereum и роллапе ZK взаимосвязаны, они не всегда эквивалентны и работают в некоторой степени независимо.
Как работает роллап ZK?
На слое 2 у каждого пользователя есть аккаунт с балансом. Пользователи отправляют транзакции, которые могут включать перевод средств между аккаунтами. Эти транзакции собираются и упорядочиваются централизованным подразделением, известным как секвенсор.
Секвенсор формирует новый пакет транзакций, представляющий собой группу отдельных транзакций, которые были обработаны оффчейн.
Пользовательские транзакции не включаются в новое корневое состояние или в доказательство ZK. Вместо этого они хранятся отдельно на слое доступности данных, в оффчейн хранилище. Эти данные имеют решающее значение для восстановления состояния роллапа, а их хранение оффчейн повышает масштабируемость.
На основе пакета секвенсор вычисляет новое глобальное состояние, также известное как корневое состояние, и ZK-доказательство.
В контексте ZK-криптографии слой 1 выполняет функцию верификации, а слой 2 - доказательства.
Секвенсор периодически отправляет новую транзакцию в Ethereum. Каждая транзакция включает в себя доказательство ZK и новое корневое состояние (глобальное состояние).
Корневое состояние - это криптографическое подтверждение нового состояния роллапа ZK после обработки пакета транзакций. Он показывает суммарный эффект от всех транзакций в пакете.
Доказательство ZK - это криптографическое доказательство, которое подтверждает достоверность перехода состояния, представленного пакетом. Оно подтверждает, что пакет транзакций был обработан правильно и привел к новому глобальному состоянию.
Как доказательство ZK, так и новое глобальное состояние зависят от пакета транзакций и криптографически выводятся из него. Они предлагают безопасный и эффективный способ представления пакета транзакций в основной цепочке без необходимости обработки каждой транзакции ончейн.
Смарт контракт Ethereum (верификатор) не требует пакет транзакций для проверки. Для этого требуется только доказательство ZK и новый корневое состояние. Ethereum нужно только подтвердить, что пакет в целом действителен (что подтверждается доказательством ZK), и понять сетевой эффект т на баланс каждого аккаунта.
На рисунке в самом верху вы можете видеть пользовательские транзакции. Секвенсер (доказыватель роллапа ZK) собирает последние пользовательские транзакции, упорядочивает их и создает пакет транзакций. Он генерирует доказательство ZK и новое глобальное состояние (корневое состояние) из пакета (красные стрелки обозначают криптографическую зависимость от пакета) и отправляет их в Ethereum для проверки в транзакции. Ethereum (ZK верификатор) проверит и сохранит транзакцию в блокчейне, тем самым изменив его глобальное состояние.
Ethereum сохраняет доказательство ZK и новое глобальное состояние, передаваемое секвенсором, тем самым обеспечивая целостность роллапа ZK.
Виртуальная машина Ethereum (EVM) может работать в рамках роллапа ZK. Это означает, что разработчики могут создавать смарт контракты таким же образом, как и для основной сети Ethereum. Такая совместимость с EVM облегчает перенос децентрализованного приложения (DApp) с Ethereum на роллап ZK.
Это существенным образом переносит выполнение смарт контрактов DApp с Ethereum на роллап ZK. Хотя смарт контракты продолжают соответствовать правилам EVM, их выполнение становится более масштабируемым и эффективным, поскольку оно происходит на слое 2.
Простота переноса смарт контрактов на решения слоя 2 является одной из причин, по которой роллапы ZK (и другие решения слоя 2) используют аккаунт модель, аналогичную той, которая используется в Ethereum.
Преимущества детерминизма Cardano
Сообщество Ethereum активно изучает различные методы повышения масштабируемости и эффективности, при этом технология ZK является одним из перспективных решений, находящихся на стадии изучения. Внедрение секвенсоров в роллапах ZK является ключевым механизмом для управления транзакциями и упорядочивания транзакций в сети слоя 2.
Секвенсоры служат решением проблемы упорядочения транзакций и детерминизма, играя ключевую роль в функционировании роллапов ZK. Однако использование секвенсоров повышает уровень централизации, что вызывает опасения в контексте принципа децентрализации блокчейна. Секвенсор, являясь единым субъектом, обладающим полномочиями упорядочивать транзакции, потенциально может стать причиной сбоя или манипулирования.
Проверка транзакций в Cardano является детерминированной, что позволяет создавать транзакции, результат которых известен и предсказуем на момент создания транзакции. Это возможно потому, что проверка транзакций в Cardano основана исключительно на входах и выходах транзакции, а не на каком-либо глобальном состоянии.
В контексте ZK доказательств такой детерминированный характер является преимуществом. Создавая ZK доказательство, вы, по сути, доказываете, что вам известны секретные входы, которые при определенных вычислениях приводят к известному выход. Поскольку вычисления являются детерминированными, вы можете предсказать выход при создании доказательства ZK.
Учитывая, что все данные о расходовании UTXO, создании UTXO и запуске валидаторов (смарт контрактов) известны во время построения транзакции, возможно создать доказательство ZK, чтобы доказать, что валидатор (закодированный в виде арифметической схемы) успешно выполнен.
Проверяемое ZK доказательство может быть создано оффчейн в результате более сложных вычислений. Ончейн валидатор содержит арифметическую схему, которая проверяет правильность любого предоставленного ZK доказательства.
Вот почему потребность в секвенсоре может быть уменьшена или даже потенциально устранена. Оффчейн вычисления потенциально могут выполняться без секвенсора из-за детерминированности транзакций. В роллапе ZK Cardano каждой транзакции необходимо знать только о своих конкретных входах и выходах, и ей не нужно взаимодействовать с глобальным состоянием. Другими словами, преимущества модели UTxO в L1 могут быть перенесены в L2.
В Ethereum решения для масштабирования на ZK доказательствах используют секвенсоры для упорядочивания пакетов транзакций детерминированным образом, чтобы можно было узнать состояние для создания требуемого доказательства (ZK доказательства).
При построении транзакций Ethereum точное знание соответствующего состояния недоступно. Это, в первую очередь, делает практически невозможным создание доказательства без надежных секвенсоров (операторов), поскольку состояние контракта неизвестно на момент обработки транзакции.
Однако в Cardano нет необходимости знать, где транзакция появится в блоке, потому что ее появление в блоке не влияет на состояние смарт контракта. Только одна транзакция может взаимодействовать с состоянием - UTxO Datum - для каждого блока.
Такая детерминированная природа Cardano позволяет создавать доказательства ZK без использования секвенсора. Теоретически даже возможно обойтись без внешнего слоя доступности данных.
В сети L2 должен быть субъект (ZK доказыватель), который будет создавать транзакции для L1. Состояние L2 не будет глобальным состоянием, как в Ethereum, а скорее состоянием всех независимых транзакций.
В роллапе ZK UTXO могут работать независимо друг от друга, как и на слое 1. Это обеспечивает высокий уровень параллелизма и независимости транзакций.
Даже при отсутствии секвенсора и пакетной обработки транзакций, вероятно, необходимо каким-либо образом передавать состояние слоя 2 на слой 1, чтобы обеспечить целостность и согласованность системы. Хотя Cardano не требует секвенсора для достижения детерминизма, L2 по-прежнему полагается на L1 для обеспечения безопасности.
Роллапы ZK, использующие модель UTxO, могут быть более легко децентрализованы, в отличие от тех, что используются в экосистеме Ethereum. Детерминированный характер и модель UTxO открывают путь для реализации новых возможностей. Возможно, было бы значительно проще разработать реализацию роллапа ZK, которая была бы более эффективной и децентрализованной, чем то, что может быть достигнуто с помощью аккаунт модели.
Еще неизвестно, удастся ли какой-либо команде создать роллап ZK, который будет работать без секвенсора и поддерживать целостность системы с помощью скриптов проверки и ZK доказательств.
Вывод
Модель UTxO от Cardano обладает рядом преимуществ, включая детерминированные транзакции, большой потенциал для использования ZK доказательств, отсутствие необходимости в секвенсорах и теоретическую возможность создания роллапа ZK без слоя доступности данных. Эти преимущества делают его более предпочтительным выбором для роллапов ZK по сравнению с аккаунт моделью Ethereum. Предстоящий хардфорк Chang представит криптографию ZK в Cardano, что ознаменует начало новой главы для всей экосистемы.
// От переводчика: для получения дополнительных переведенных на русский язык статей о Cardano посетите русскоязычный раздел на форуме Cardano. Видеоролики о Cardano на русском языке можно найти на YouTube канале нашего замечательного амбасадора Тимура Сахабутдинова, а также на канале Чарльз Хоскинсон на русском. Хотите поговорить или задать вопрос о Cardano? Тогда приглашаем в наше уютное русскоязычное сообщество Cardano в Telegram. Оставайтесь на связи, все только начинается!