Перейти к основному содержимому

Архитектура Optimism

· 4 мин. чтения
Tian Pan
Community Hacker

Optimism — это EVM-эквивалентный протокол optimistic rollup, разработанный для масштабирования Ethereum. Масштабирование Ethereum означает увеличение количества полезных транзакций, которые может обрабатывать сеть Ethereum. Optimistic rollup — это техника масштабирования второго уровня (Layer 2), которая увеличивает вычислительную мощность и емкость хранения Ethereum без ущерба для безопасности или децентрализации. EVM-эквивалентность — это полное соответствие функции перехода состояний, описанной в желтой книге Ethereum, которая является формальным определением протокола.

Optimistic rollup работает путем объединения нескольких транзакций в одну, которая затем проверяется смарт-контрактом в сети Ethereum. Этот процесс называется «свертыванием» (rolling up), потому что отдельные транзакции объединяются в более крупную транзакцию, которая отправляется в сеть Ethereum. Термин «оптимистический» (optimistic) относится к тому факту, что система предполагает валидность транзакций, если не доказано обратное, что обеспечивает более быструю и эффективную обработку транзакций.

Общая архитектура

Архитектура Optimism

op-node + op-geth

Узел rollup может работать либо в режиме валидатора, либо в режиме секвенсора:

  1. валидатор (он же верификатор): Подобно работе узла Ethereum, он локально симулирует транзакции L2 без ограничения скорости. Он также позволяет валидатору проверять работу секвенсора, повторно выводя корни вывода и сравнивая их с теми, что были отправлены секвенсором. В случае несоответствия валидатор может выполнить доказательство ошибки.
  2. секвенсор: Секвенсор — это привилегированный участник, который получает транзакции L2 от пользователей L2, соответствующим образом создает блоки L2, а затем отправляет их поставщику доступности данных (через батчер). Он также отправляет корни вывода в L1. В настоящее время во всем стеке есть только один секвенсор, и именно здесь люди критикуют, что стек OP не децентрализован.

op-batcher

Отправитель пакетов (batch submitter), также называемый батчером, — это сущность, отправляющая данные секвенсора L2 в L1, чтобы сделать их доступными для верификаторов.

op-proposer

Пропоузер генерирует и отправляет контрольные точки вывода L2 в контракт оракула вывода L2 на Ethereum. После прохождения периода финализации эти данные позволяют осуществлять вывод средств.

И батчер, и пропоузер отправляют состояния в L1. Почему они разделены?

Батчер собирает и отправляет данные транзакций в L1 в виде пакета, в то время как пропоузер отправляет коммитменты (корни вывода) в состояние L2, что финализирует представление состояний учетных записей L2. Они разделены, чтобы работать параллельно для повышения эффективности.

contracts-bedrock

Различные контракты для взаимодействия L2 с L1:

  • OptimismPortal: Поток транзакций L2, которые возникли как вызовы смарт-контрактов в состоянии L1.
  • Batch inbox: Адрес L1, на который Batch Submitter отправляет пакеты транзакций.
  • Оракул вывода L2: Смарт-контракт, который хранит корни вывода L2 для использования при выводе средств и доказательствах ошибок.

Компоненты Optimism

Как внести депозит?

Как вывести средства?

Отзыв о документации Optimism

Понимание стека OP может быть сложной задачей из-за ряда факторов. Одним из таких факторов является множество компонентов, которые упоминаются несколько раз под немного разными именами в коде и документации. Например, термины «op-batcher» и «batch-submitter» / «верификаторы» и «валидаторы» могут использоваться взаимозаменяемо, что приводит к путанице и затрудняет понимание точной функции каждого компонента.

Еще одна проблема в понимании стека OP — это развивающаяся архитектура, которая может привести к тому, что некоторые элементы дизайна со временем устареют. К сожалению, документация не всегда обновляется, чтобы отражать эти изменения. Это может привести к дальнейшей путанице и затруднениям в понимании системы, поскольку пользователи могут работать с устаревшей или неточной информацией.

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