tl;dr

  • L2 должны иметь такую же цензурную стойкость, как и L1, на которых они основаны
  • На BOB пользователи уже могут принудительно выводить свои активы из BOB в Ethereum с помощью транзакции Ethereum
  • Для своего моста BitVM компания BOB работает над интеграцией Bitcoin в качестве способа обеспечения транзакций на BOB.
  • Пользователи биткойнов смогут выводить свои BTC из BOB без необходимости отправлять транзакцию в BOB

Одно из основных свойств L2 заключается в том, что их состояние должно обновляться, даже когда секвенсор находится в автономном режиме. L2 достигают этого путем чтения и записи своего состояния с уровня доступности данных (DA), который может обновляться независимо от того, находится ли L2 в сети. Таким образом, пользователи могут принудительно включать свои транзакции, даже когда секвенсор находится в автономном режиме, или секвенсор не принимает их транзакции напрямую.

Для моста BOB BitVM это представляет собой интересную проблему. В настоящее время BOB использует блокчейн Ethereum EIP-4844 в качестве DA-уровня. Пользователи Ethereum могут легко запускать вывод средств обратно в Bitcoin через мост BitVM. Однако для этого необходимо, чтобы у пользователей были ETH на Ethereum.

Этого нам недостаточно: Пользователям Bitcoin должны быть нужны только BTC на Bitcoin, чтобы принудительно вывести свои BTC из BOB обратно в Bitcoin. Мы работаем над гибридным решением: по умолчанию используем Ethereum в качестве DA, но при этом позволяем пользователям принудительно включать транзакции на BOB через специальную транзакцию на Bitcoin. Мы рады поделиться нашими наработками в этом блоге.

Общие сведения о ПДР и деривации

Процесс деривации очень важен для L2: все состояние L2 BOB должно быть сконструировано из L1 и слоя DA. Это позволяет L2 пользоваться такой же устойчивостью к цензуре, как и уровень DA, в нашем случае Ethereum.

Упрощенно говоря, в рулонах (в частности, в цепочках OP Stack) у нас есть два типа данных на L1:

  • Депозитные операции совершенные по контракту "OptimismPortal". Это транзакции, которые совершаются пользователями на Ethereum, как правило, для внесения своих активов в BOB. Эти депозитные транзакции также могут быть использованы для выполнения других операций на BOB.
  • Батчи, отправляемые секвенсором (или, точнее, оп-батчером) из транзакций L2. Они включают в себя все транзакции, совершенные непосредственно пользователями на BOB, и в конечном итоге включаются обратно в блокчейн Ethereum.

Биткойн как уровень DA

Если мы хотим использовать биткоин в качестве DA-уровня, почему бы полностью не перейти на использование биткоина в качестве DA-уровня? Ответ в основном заключается в стоимости. Биткойн имеет очень мало доступного хранилища (около 4 МБ примерно каждые 10 минут), и поэтому стоимость хранения высока.

Однако в нашем случае BOB может по-прежнему использовать Ethereum в качестве "основного" уровня DA, на котором размещаются все данные о транзакциях, но добавить Bitcoin в качестве резервного уровня с высокой устойчивостью к цензуре, если Ethereum DA недоступен. По сути, Ethereum становится оптимистичным уровнем DA, а Bitcoin - дорогим, но отказоустойчивым последним средством.

Гибридный конвейер деривации

Основное решение - добавить Bitcoin в BOB как часть конвейера деривации, чтобы BOB (и конкретно "op-node") обрабатывал входные данные в таком порядке:

  1. Транзакции принудительного вывода биткоинов (добавлены специально для BOB)
  2. Депозиты Ethereum на контракт BOB's OptimismPortal (стандарт OP Stack)
  3. Батчи Ethereum из op-batcher (стандарт OP Stack)

Давайте перейдем к возможному решению по кодированию транзакций принудительного вывода биткоинов в конвейер выработки BOB. Обратите внимание, что этот вопрос все еще изучается, поэтому возможны изменения.

Транзакции принудительного снятия средств с биткоина

Для создания транзакции принудительного снятия средств нам понадобятся три части:

  1. Создайте транзакцию принудительного вывода средств в Bitcoin.
  2. Храните транзакцию принудительного вывода средств на Bitcoin в пределах размера Bitcoin.
  3. Возьмите на себя расходы на газ для транзакции принудительного вывода средств на Bitcoin.

1. Создайте транзакцию принудительного снятия средств

Депозитная транзакция стека OP имеет следующую структуру:

  • bytes32 sourceHash: хэш источника, однозначно идентифицирующий происхождение депозита.
  • адрес от: Адрес учетной записи отправителя.
  • address to: Адрес счета получателя или нулевой адрес (нулевая длина), если депонируемая транзакция является созданием контракта.
  • uint256 mint: Значение ETH для майнинга на L2.
  • Значение uint256: Значение ETH для отправки на счет получателя.
  • uint64 gas: Предел газа для транзакции L2.
  • bool isSystemTx: Если значение равно true, транзакция не взаимодействует с пулом газовых блоков L2.
  • данные в байтах: Данные калибровки.

Принудительная транзакция вывода средств требует включения закодированной транзакции вывода средств в поле данных транзакции ввода средств. Это делается путем создания транзакции на BOB, которая запускает вывод средств из BOB в Bitcoin, и будет работать точно так же, как если бы транзакция была отправлена из Ethereum.

Затем мы можем сохранить (сжатую) версию транзакции принудительного вывода средств в Bitcoin, которая включает все вышеперечисленные данные.

2. Сохраните транзакцию принудительного вывода средств в Bitcoin

Поскольку данные для транзакции принудительного снятия средств больше, чем обычно хранится в выводе OP_RETURN, мы, вероятно, будем использовать вывод Taproot для хранения данных.

Если в Ethereum легко определить транзакцию пополнения счета (которая может включать вывод средств), поскольку она отправляется на контракт BOB OptimismPortal, то в Bitcoin не так просто определить транзакцию принудительного вывода средств.

Сериализация данных: Транзакция принудительного вывода средств сериализуется с помощью скриптов Taproot в структуре "envelope". Эти структуры являются нопами в сети Биткойн и используются, например, для ординаров. Мы настраиваем структуру в соответствии с нашими потребностями.

Не установленный

OP_FALSE OP_IF

 OP_PUSH "bob"

 OP_1

 OP_PUSH "транзакция"

 OP_0

 OP_PUSH $WITHDRAWAL_TRANSACTION_DATA

OP_ENDIF

Двухфазная схема коммит/ревал:

Как и в случае с ординарами, пользователям придется отправить в Bitcoin две транзакции:

  • Транзакция фиксации: Создает вывод Taproot, фиксирующий скрипт, содержащий содержимое надписи. Эта транзакция еще не раскрывает данные, и нам понадобится вторая транзакция для полных узлов BOB и секвенсоров, чтобы включить транзакцию вывода.
  • Транзакция Reveal: Расходует выход из транзакции фиксации, раскрывая надпись на цепи, то есть раскрывая транзакцию вывода средств пользователя для включения в BOB.

3. Обработка расходов на газ для операции принудительного отбора

Это самая открытая проблема, и в настоящее время рассматриваются два варианта:

  • Установите значение "газ" на 0 для транзакции принудительного вывода на Bitcoin и вычтите стоимость газа из баланса ETH пользователя на BOB. Таким образом, принудительно выводить средства смогут только те пользователи, у которых есть ETH на BOB. Однако это не самый лучший вариант, поскольку для принудительного снятия средств пользователям потребуется иметь ETH на BOB, т. е. пользователи, имеющие BTC на Bitcoin, не смогут принудительно снимать средства.
  • Газ оплачивается пользователями в BTC на Bitcoin. Сеть BOB должна иметь адрес в Bitcoin, который может принимать BTC, и эффективно обменивать полученные пользователем BTC на ETH в BOB для оплаты L1 части стоимости газа плюс расходы на исполнение. Этот вариант возможен при использовании BOB Gateway и установке адреса EVM BOB DAO в качестве получателя BTC.

Мы также экспериментируем с другими идеями, так что следите за обновлениями!

Собираем все воедино

Любой желающий может определить состояние BOB, всего лишь проверив данные по Bitcoin и Ethereum:

  1. Прочитайте все транзакции по выводу средств из Bitcoin. Они кодируются как две транзакции для каждого вывода, т. е. одна фиксация и одна транзакция раскрытия. Это то дополнение, которое мы вносим в стек OP, и то, где мы улучшаем конвейер деривации.
  2. Считывайте все транзакции, совершенные с контрактом BOB's OptimismPortal на Ethereum. Это уже является частью стандартного конвейера деривации стека OP.
  3. Считывайте все транзакции, совершенные непосредственно на BOB и интегрированные в батчи на Ethereum. Важно отметить, что полные узлы не считывают данные непосредственно из секвенсора для получения подтвержденных транзакций, а считывают их из блобов Ethereum. Это уже является частью стандартного конвейера вывода OP Stack.

Технические проблемы

Согласованность данных: Хотя обеспечение согласованности данных между цепочками Ethereum и Bitcoin очень важно, само по себе присутствие данных о транзакциях в обеих цепочках не гарантирует их достоверность. Чтобы считаться легитимными, транзакции должны представлять собой корректные переходы состояний в соответствии с функцией перехода состояний роллапа. Решение требует внедрения логики проверки внутри op-node (или других реализаций уровня консенсуса), которая сначала проверяет, приводит ли транзакция к корректному изменению состояния, прежде чем принять ее.

Доказательства мошенничества и валидность: Система доказательств мошенничества для BitVM и Ethereum должна быть усовершенствована, чтобы обрабатывать данные из обеих цепочек, что может усложнить разрешение споров. Для решения этой проблемы нам необходимо точно учитывать возможные транзакции из Bitcoin и Ethereum в рамках моста BitVM и расчетов BOB на Ethereum.

Увеличение объема памяти: Кроме того, узлы BOB в сети сталкиваются с повышенными требованиями к хранению и пропускной способности, поскольку им необходимо обрабатывать и хранить данные из Bitcoin и Ethereum. Однако мы можем смягчить эту проблему, потребовав, чтобы транзакции BOB, совершенные в Bitcoin, были включены в блокчейн Ethereum со ссылкой на последние блоки Bitcoin. Таким образом, узлам нужно будет синхронизировать только последние блоки Bitcoin.

Следующие шаги

Мы с нетерпением ждем возможности расширить границы гибридных роллапов, сочетающих безопасность Bitcoin и инновации Ethereum. В данной конкретной задаче мы заинтересованы в том, чтобы противодействие цензуре транзакций Биткойна сочеталось со стеком роллапов BOB. Мы будем обновлять эту запись в блоге по мере достижения прогресса.