Rollup - это решение для масштабирования Ethereum Layer 2, направленное на повышение пропускной способности Ethereum за счет обработки транзакций вне цепи. Optimistic Rollup, как следует из названия, использует оптимистичный механизм. Optimistic Rollup предполагает, что все транзакции Layer 2 являются действительными, и сжимает несколько транзакций в одну передачу в Ethereum. После отправки существует недельный период, в течение которого любой пользователь цепочки может оспорить подлинность транзакций. Если во время обновления состояния будет обнаружено мошенничество, претендент может получить вознаграждение. Несомненно, Optimistic Rollup является наиболее практичным и инновационным решением для Ethereum Layer 2, и его технические детали заслуживают дальнейшего изучения. В этой статье будет дан краткий анализ деталей реализации Optimistic Rollup и рассмотрены его технические принципы.
На Layer 2 Optimistic Rollup транзакции пользователей отправляются операторам узлов Optimistic Rollup. Эти узлы выступают в роли "валидаторов" и "агрегаторов", отвечающих за объединение и проверку транзакций. Они сжимают данные нескольких транзакций в одну транзакцию, которая после сжатия попадает в пул транзакций Ethereum Layer 1, как и любая другая транзакция. Наконец, узлы получают и обрабатывают транзакции и публикуют блоки в блокчейне Ethereum. Стать узлом Optimistic Rollup может любой желающий, однако, подобно механизму Proof-of-Stake (PoS), узлы должны предоставить сети Ethereum залог безопасности в качестве гарантии своей целостности.
Во время отправки блока узлы не проверяют легитимность переходов состояний. Однако они предоставляют блоку недельный период "доказательства мошенничества". Если в течение этого периода ни один узел или пользователь не оспорит легитимность блока, блок будет подтвержден. В случае успешного оспаривания "доказательства мошенничества" узел, опубликовавший блок, теряет свой гарантийный депозит. Чтобы стимулировать обнаружение мошеннического поведения, гарантийный депозит вознаграждается пользователю, который успешно докажет факт мошенничества. Благодаря этому подходу Optimistic Rollup использует меры стимулирования криптографической экономики для обеспечения честности и надежности узлов.
Обычная транзакция Ethereum, например, отправка ETH, обычно занимает около 110 байт. Однако при отправке ETH на Optimistic Rollup потребляется всего около 12 байт. Чтобы достичь этого, Optimistic Rollup использует более простые передовые методы кодирования.
В транзакциях уровня 2 Optimistic Rollup Nonce полностью опущен и вместо этого восстанавливается из предварительного состояния. Информация, связанная с газом, такая как Gasprice и Gas, вынесена за пределы транзакций Layer 2. Для полей Кому (To) и От кого (From) больше не требуются адреса Ethereum; вместо этого в состояние добавляется поддерево для хранения сопоставления индексов с адресами. Значение может храниться с использованием научной нотации, требуя только 3 цифры для переводов. Что касается подписей, то транзакции в рамках пакета могут быть объединены с помощью агрегатных подписей BLS, что сокращает потребление памяти для каждой отдельной подписи транзакции. Эта агрегированная подпись может пакетно проверять весь набор сообщений и отправителей. Кроме того, данные о транзакциях хранятся в поле Calldata on-chain, которое имеет относительно низкую стоимость газа.
Загружаемые данные включают не только вышеупомянутые данные и содержимое транзакций, но и корень дерева Меркла до и после пакетных транзакций (включая данные о состоянии, такие как счет, баланс и код контракта, таким образом, известные как корень состояния). Он также включает данные, используемые для доказательства (или проверки) легитимности переходов состояния. Эти методы сжатия имеют решающее значение для достижения масштабируемости при использовании Optimistic Rollup. В настоящее время, после сжатия, Optimistic Rollup может обеспечить пропускную способность, которая более чем в 30 раз выше, чем у Ethereum.
Optimistic Rollup развертывает специальный смарт-контракт под названием Rollup contract на Ethereum Layer 1. Этот контракт отвечает за управление состоянием Rollup, включая отслеживание балансов пользователей, обработку депозитов, снятие средств и разрешение споров. В Optimistic Rollup транзакции собираются и агрегируются узлами вне цепи, объединяя несколько транзакций в "блок Rollup". Этот блок содержит содержимое транзакций и корень дерева Меркла нового состояния счета.
Позже узлы публикуют агрегированные данные как calldata на Ethereum. Calldata - это немодифицируемая и непостоянная область внутри смарт-контрактов, аналогичная внутреннему хранилищу. Будучи частью журнала истории блокчейна, calldata не хранится как часть состояния Ethereum. Поскольку calldata не связана с частью состояния Ethereum, хранить данные на цепочке с помощью calldata экономически выгоднее.
Как упоминалось ранее, загруженные данные включают не только содержание транзакции, но и корень дерева Меркла до и после транзакции. Корень дерева Меркла представляет собой состояние Optimistic Rollup в любой момент времени, включая счета, остатки, коды контрактов и т.д. Оно также известено как "дерево состояния" и служит организационной формой состояния Optimistic Rollup. Листовые узлы дерева Меркла представляют состояния счетов, а корневой узел - конечное значение. Изменения в транзакциях уровня 2 Optimistic Rollup приводят к обновлению состояний счета, которые, в свою очередь, влияют на информацию листовых узлов, что в конечном итоге приводит к изменениям в корневом хэш-значении. Оператор Layer 2 поддерживает дерево состояний счетов Layer 2 локально, записывая корневое хэш-значение до и после выполнения пакетных транзакций, и загружает это корневое хэш-значение при загрузке пакетных транзакций.
Этот корень дерева Меркла (корень состояния) ссылается на последнее состояние Rollup, подвергается хэшированию и хранится в контракте Rollup. Каждый переход состояния в цепи генерирует новое состояние Rollup, и узлы представляют это состояние, вычисляя новый корень состояния.
Когда узлы публикуют блок, они должны предоставить как старый корень состояния, так и новый корень состояния. Если старый корень состояния совпадает с существующим корнем состояния в цепочечном контракте, последний отбрасывается и заменяется новым корнем состояния. Узлы также должны предоставить корень дерева Меркла для самого пакета транзакций. Это позволяет любому доказать, что транзакции включены в блок, предоставив доказательство дерева Меркла. Корень дерева Меркла имеет решающее значение для доказательства изменения состояния в оптимистическом роллинге.
Optimistic Rollup позволяет любому желающему предоставлять информацию о транзакциях и информацию о переходах состояний, а также публиковать блоки без предоставления доказательств достоверности. Чтобы обеспечить безопасность блокчейна Ethereum, Optimistic Rollup установил недельное окно, в течение которого пользователи могут высказывать сомнения по поводу блоков (включая информацию о переходах состояний и другую информацию).
Если кто-то высказывает сомнение, протокол Optimistic Rollup инициирует вычисление доказательства мошенничества. Путем воспроизведения транзакций, которые привели к переходам состояний в цепочке, вычисляется новый корень состояний. Этот вычисленный корень состояния затем сравнивается с корнем состояния, предложенным секвенсором. Если другие узлы или пользователи обнаруживают расхождение между конечным состоянием блока и состоянием, предложенным узлом, то проверка доказательства мошенничества успешна, и переход состояния отменяется. В то же время узел, бросивший вызов, наказывается, его залог конфискуется и передается претенденту.
Повторное выполнение транзакций на Ethereum для выявления мошенничества требует публикации обязательств состояния для отдельных транзакций и добавления данных, которые должны быть опубликованы на цепочке. Повторное выполнение транзакций также требует значительных затрат на газ. В настоящее время период вызова для Optimistic Rollup составляет одну неделю, но из-за проблем с эффективностью капитала сообщество активно обсуждает возможность сокращения периода вызова.
Optimistic Rollup не только поддерживает масштабируемость Ethereum, но и включает всю функциональность смарт-контрактов Ethereum в структуру Layer2, обеспечивая полную по Тьюрингу виртуальную машину OVM для разработки и развертывания dApps.
Виртуальная машина OVM представляет собой многофункциональную среду исполнения, полностью совместимую с виртуальной машиной Ethereum EVM и предназначенную для систем Layer2. С помощью виртуальной машины OVM разработчики могут выполнять все операции Ethereum на цепочке Rollup и взаимодействовать с блокчейном через API. Кроме того, виртуальная машина OVM упрощает процесс переноса dApps на Layer2. Вместо развертывания различных решений для масштабирования Layer2 проектные команды могут просто интегрироваться с OVM и использовать ее различные структуры Layer2.
Существует две сети Layer2, разработанные на основе протокола Optimistic Rollup: Optimism и Arbitrum. В настоящее время Optimism и Arbitrum являются крупнейшими экосистемами Layer 2 в пространстве Ethereum, общая стоимость блоков которых составляет 4 млрд. долларов США, и они все еще переживают значительный рост. Многие известные проекты также присоединились к Optimistic Rollup, такие как UniSwap, SushiSwap и другие.
Однако Optimistic Rollup - не единственный игрок на этом поле и сталкивается с конкуренцией со стороны ZK Rollup. Как упоминалось ранее, Optimistic Rollup полагается на доказательства мошенничества, где система оптимистично верит в правильность данных о транзакциях и обеспечивает действительность транзакций с помощью экономической логики противодействия мошенничеству. С другой стороны, ZK Rollup - это масштабируемое решение, основанное на доказательствах нулевого знания, где внецепочечные транзакции обрабатываются партиями, а для проверки подлинности каждой партии транзакций генерируются криптографические доказательства достоверности. Превосходство одного из этих решений над другим требует дальнейшего изучения в течение длительного периода времени.