Что такое Taiko?

Taiko - решение уровня 2 на основе zkEVM и полностью совместимое с Ethereum

Taiko — это блокчейн уровня 2, базовый накопительный пакет, построенный на основе zkEVM Type 1, что обеспечивает полную совместимость с Ethereum. Это масштабируемая и эффективная платформа как для разработчиков, так и для пользователей децентрализованных приложений (dApps).

Обзор Taiko

Taiko — это безопасный, децентрализованный и не требующий разрешений накопительный пакет с нулевым разглашением (zk-Rollup), ориентированный на масштабирование базовой сети Ethereum.

Рассмотрим основные преимущества данного решения:

  • Эквивалент Ethereum. Использование zkEVM Type 1 (полный эквивалент Ethereum) обеспечивает максимально возможную совместимость на уровне кодов операций, что значительно упрощает процесс разработки децентрализованных приложений в сети Taiko.
  • Полностью децентрализованный. Любой желающий пользователь, может запустить узел любого типа в сети Taiko, как предлагающий, так и проверяющий.
  • Начальные слои Layer 3. Taiko позволяет разворачивать L3 поверх L2 в виде точной копии кодовой базы, что открывает возможности для чрезвычайно высокой масштабируемости.

Как работает протокол Taiko?

Протокол Taiko определяет и обеспечивает соблюдение правил объединения, а также определяет потенциальных участников. Смарт-контракты, развернутые на Ethereum L1, действуют как механизм доступности данных и средство проверки доказательств с нулевым разглашением (zk-Proof). Смарт-контракт, развернутый на Taiko L2, выполняет определенные важные функции протокола, о которых будет написано ниже.

Узлы в Taiko выполняют три основных роли:

  1. Предлагающие (Proposers). Занимаются созданием блоков из транзакций пользователей L2 (Taiko) и предлагают их в L1 (Ethereum).
  2. Проверяющие (Provers). Генерируют доказательства zk-SNARK, подтверждающие достоверность транзакций L2 и блоков предложенных Предлагающими узлами.
  3. Бегуны (Node Runners). Выполняют транзакции на основе ончейн-данных, чтобы оставаться синхронизированными состоянием блокчейна.
* Запускать узлы может любой желающий участник сети.

Работа протокола Taiko состоит из трех этапов: предложение, проверка и доказательство.

Схема работы Taiko
Схема архитектуры Taiko.

Этап 1: предложение блока

Предлагающий узел (Prover) отслеживает мемпул сети Taiko на предмет подписанных и отправленных транзакций. Любой может предлагать блоки в Taiko. 

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

Предложение блока в Taiko

Предлагающий узел определяет последовательность транзакций в блоке. Когда блок создан, предлагающий отправляет блок OfferBlock (содержающий список транзакций + метаданные) непосредственно в Ethereum через контракт TaikoL1. Другие предлагающие узлы также могут отслеживать мемпул транзакций и идентифицировать предлагаемые блоки Taiko в ожидающих транзакциях OfferBlock. Между узлами Layer 2 нет консенсуса, но существует некая связь (синхронизация, совместное использование транзакций и т. д.). Порядок блоков Taiko в Ethereum определяется узлом Ethereum.

Блоки предлагаются параллельно и становятся в список ожидания в мемпуле Ethereum, но Taiko поддерживает только ограниченное количество слотов для непроверенных блоков на уровне выполнения Ethereum и повторно использует их, чтобы минимизировать комиссию за предложение блока. Исполнение блока является детерминированным (не требующим внешнего вмешательства). Когда блок предлагается, данные блока публикуются в Ethereum, а сам блок добавляется к предлагаемому списку блоков, хранящемуся в контракте TaikoL1. После этого все свойства блока становятся неизменяемыми.

Абсолютно все узлы сети Taiko подключаются к узлам Ethereum и подписываются на события блоков Ethereum. Когда предложение блока Taiko подтверждается, блок добавляется в очередь в контракте TaikoL1. Затем узлы Taiko могут загружать эти блоки и выполнять действительные транзакции в каждом блоке. Узлы отслеживают, какие блоки L2 проверены.

Этап 2: проверка блоков

На этом этапе в работу включаются проверяющие узлы (Provers), задача которых убедиться, что блок достоверен.

Блок считается действительным, если он соответствует следующим критерям:

  • Имеет размер в байтах не более определенного значения.
  • Может быть декодирован с помощью RLP.
  • Содержит не больше транзакций (действительных и недействительных), чем определенное значение (константа).
  • Имеет общий лимит газа для всех действительных транзакций, не превышающий определенного значения + лимит газа якорной транзакции.

Блок считается не действительным, если:

  • Имеет недействительную подпись транзакции.
  • Имеет недействительный одноразовый номер транзакции.
  • На счету недостаточно ETH для оплаты транзакции.
  • В учетной записи отправителя развернут код контракта (EIP-3607).
  • Имеет лимит газа, меньший, чем собственный газ, используемый транзакцией.

Этап 3: доказательство

Блок может быть доказан, как только:

  • Все вложенные действительные транзакции в этом блоке выполнены.
  • Состояние родительского блока известно.

Блок может быть подтвержден, когда:

  • Его родительский блок проверен.
  • Существует действительное доказательство с нулевым разглашением (zkProof), подтверждающее переход из родительского состояния в текущее состояние блока.

Начальные слои (Incetion Layers)

Начальные слои подразумевают использование Taiko в качестве слоя Layer 2 и развертывание поверх точной копии кодовой базы в качестве слоя Layer 3. Учитывая, что Taiko полностью эквивалентен Ethereum, взаимодействия между L3 и L2 тесно связаны с взаимодействия между L2 и L1, обеспечивая максимальную возможность повторного использования и простоту решения.

Такое решение применяется потому что один накопительный пакет в состоянии масштабироваться только до тех пор, пока увеличение состояния не станет проблемой. Начальные слои (повторное использование одной и той же кодовой базы zkEVM 1) открывают чрезвычайно расширяемую масштабируемость для Ethereum.

Кроме того, полная эквивалентность Ethereum на слоях L2, L3 и за их пределами позволяет нативную передачу произвольных сообщений, благодаря возможности одной виртуальной машины, читать доказательство Меркла другой. Благодаря такому подходу, различные слоя (соседние или верхние) могут легко взаимодействовать друг с другом, что позволяет избежать фрагментации сети.