MMS

Строительный блок для взаимодействия L1-L2

В этом посте будет представлено решение, которое StarkEx предлагает для поддержки быстрого вывода средств: возможность вывода средств из L2 на любой адрес L1 во время блокчейна. Это решение не зависит от частоты, с которой L2-оператор генерирует доказательства достоверности.

Функция быстрого вывода средств уже работает в основной сети Ethereum в StarkEx (начиная со StarkEx 2.0, декабрь 2020 г.) и поддерживает биржи DeversiFi и dYdX .

Приведенное ниже решение может быть применено к широкому спектру вариантов использования, помимо быстрого вывода средств. Сначала опишем абстрактную потребность.

Необходимость

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

Внедрить CT на L1 несложно, поскольку смарт-контракт может обеспечить связь между событием и выполнением транзакции. При переходе на системы L2 это становится проблемой. Например, в StarkEx подписывающая сторона передает подписанную транзакцию оператору, который отвечает за ее выполнение, и якобы ничто не мешает оператору выполнить транзакцию до того, как будет выполнено запрошенное условие.

В этом посте мы сосредоточимся на CT, указанном на L2, который зависит от события L1 (т.е. L2 | L1). То есть CT гарантирует, что оператор может выполнить подписанную транзакцию только в том случае, если произошло какое -либо событие в цепочке . В будущем мы добавим CT, который зависит от события, связанного с другим событием L2 (например, L21 | L22), что обеспечит взаимодействие между экземплярами StarkEx и StarkNet .

Ниже мы формализуем понятие таких сетевых событий и посмотрим, как их можно использовать для CT в StarkEx.

Введение в условные транзакции

Регистрация On-chain-событий

CT используют контракты реестра фактов для отслеживания событий в сети. В частности, CT не может быть обусловлен событиями, если они не зарегистрированы в реестре фактов. Например, если Алиса переведет 1 ETH Бобу напрямую в Ethereum, нет события в цепочке, которое можно было бы использовать в качестве CT.

В приведенном выше примере для контракта с реестром фактов потребуется функция transfer(), которую Алиса вызывает с адресом Боба в качестве параметра получателя.
Transfer() делает две вещи: (а) отправляет переданный ETH получателю и (б) сохраняет запись о переводе, например, сохраняет хэш параметров перевода (отправитель, получатель и сумма) в контракте. хранилище.
В Fact Registry также есть функция isValid(), которая получает хэш в качестве параметра и возвращает логическое значение — True тогда и только тогда, когда это хеш транзакции, записанной этим контрактом. Хэш транзакции (параметры передачи в нашем примере выше) называется фактом, представляющим возникновение события. Процесс внесения нового факта в реестр фактов часто называют регистрацией фактов.

Ончейн-событие, подписанное в CT, содержит два поля (фактически их хэш), (а) адрес контракта реестра фактов и (б) факт, который необходимо зарегистрировать до выполнения транзакции.

Условные транзакции StarkEx

StarkEx группирует транзакции и рассчитывается по цепочке с помощью одного доказательства STARK. В случае, если одна из транзакций в пакете является CT, StarkEx гарантирует, что соответствующий Факт действительно зарегистрирован для расчета пакета; в противном случае возвращается вся партия.

Примеры условных транзакций

В этом разделе мы продемонстрируем варианты использования и то, как их можно реализовать с помощью CT.

Подробный пример — быстрый вывод средств

В любом решении L2 наивным способом перевода средств между L2 и L1 является завершение обновления состояния L2, включая транзакцию снятия на L1. В системах на основе Validity Proof, таких как StarkEx, завершение обновления состояния L2 происходит, когда действительное подтверждение, подтверждающее его, принимается в цепочке, что обычно занимает 10 секунд. Это означает, что если пользователь хочет перевести свои средства из L2 в L1, он вынужден ждать.

Целью Fast Withdrawals является разъединение этой зависимости и предоставление пользователям возможности ненадежно выводить свои средства на L1 во время «блокчейна», то есть в рамках одной транзакции Ethereum.

Как это будет работать? Если Алиса хочет вывести 1 ETH из L2 в L1, Алиса может подписать CT о переводе 1 ETH поставщику ликвидности (LP) на L2 при условии, что LP переведет 1 ETH (за вычетом комиссии) Алисе на L1. CT Алисы может быть выполнен только в том случае, если она сначала получит свои средства на L1, поэтому она не несет риска контрагента.
Давайте посмотрим на игрушечный контракт с Реестром фактов, который может облегчить такую ​​передачу -

Мы видим, что в контракте есть одна оплачиваемая функция transfer(), которая делает две следующие вещи:

  1. Переводит сумму eth на адрес
  2. Регистрирует keccack(количество, адрес, одноразовый номер) как истинный

CT, подписанный Алисой, может быть выполнен только в том случае, если в реестре фактов зарегистрирован кеккк фактов (1 ETH, Алиса, одноразовый номер). Этот Факт, в свою очередь, может быть зарегистрирован только в том случае, если ранее происходил перевод 1 ETH Алисе.
Алиса смогла вывести 1 ETH на свой адрес без доверия, и все, что для этого потребовалось, это ее подпись и одна транзакция Ethereum от LP.

Другие варианты использования

Аналогичный поток может захватывать следующие типы событий через транзакцию L2 CT, например:

  • Алиса хочет продать свой 1ETH на L2 за 1000DAI на L1, если цена ETH упадет до 1010 DAI (согласно регистрации в сети известным оракулом).
  • Алиса хочет дать Бобу 10 ETH на L2, если Боб внесет 9,5 ETH от имени Алисы в dApp по ее выбору (например, Aave или Compound).
  • Алиса хочет дать 10 ETH для Боба на L2 DeversiFi, если Боб внесет 9,5 ETH на счет Алисы в L2 dYdX.

Резюме

Первым вариантом использования CT является Fast Withdrawals, но операторы StarkEx могут реализовать множество взаимодействий L2-L1, используя этот строительный блок.

Майкл Рябзев , Охад Барта и Том Брэнд

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *