Как технически происходит миграция?
В сети Mainnet применяется процедура «заморозка, а затем сброс»:
- Фиксация L1 на выбранном блоке-снэпшоте, чтобы он больше не генерировал новые блоки. Этот последний блок и является блоком-снэпшотом.
- Экспорт полного состояния на момент этого блока и проверка его на соответствие корневому состоянию блоков и известному общему объему эмиссии.
- Преобразование этого состояния в генезисное состояние OP Stack L2, чтобы L2 начинался с уже сформированного полного состояния L1.
В чём заключаются технические различия между L1 и L2?
| L1 | L2 | |
| Архитектура | Выполнение, консенсус и данные в одном сервисе | OP Stack: разделение выполнения, данных и расчетов |
| Консенсус | Proof of Authority (единсвтенный валидатор) | OP Stack sequencer, управляемый WhiteBIT на этапе запуска |
| Токен газа | WBT | WBT |
| Модель газа | Фиксированная: 10 gwei | EIP-1559 плюс комиссия L1 data |
| Время блока | 2 секунды | 1 секунда |
| Данные и расчеты | Автономные | Опубликовано и зафиксировано в сети Ethereum с помощью “blobs” |
| Bridging | Только сторонний bridge | Нативный OP canonical bridge, Portal, и сторонние bridges |
Поскольку EVM остаётся неизменным, код смарт-контракта выполняется точно так же. Различия заключаются в двух моментах: модель комиссии меняется с фиксированной суммы в 10 gwei на модель EIP-1559 плюс комиссия за передачу данных на L1, а блоки поступают каждые 1 секунду вместо каждых 2. Рекомендуется пересмотреть любую логику, в которой жестко задана цена газа или предполагается определённый интервал между блоками.
Обращаем ваше внимание, что байт-код, storage, nonces и адреса сохраняются, поэтому контракты на L2 находятся по тем же адресам. Это означает, что повторное развертывание не требуется; просто измените URL-адрес RPC и идентификатор цепочки, а затем повторно проверьте исходный код вашего смарт-контракта в браузере L2, чтобы пользователи могли его там прочитать.