Объединение блокчейнов: мгновенные кросс-чейн транзакции на базе Lightning

Объединение блокчейнов: мгновенные кросс-чейн транзакции на базе Lightning

После активации SegWit, всё чаще всплывает вопрос об атомарных свопах между блокчейнами. Несколько месяцев назад были представлены старые свопы для обмена 1000 биткойнов (стоимостью около $8 млн ) на ныне несуществующий альткойн. Атомарные свопы были весьма удачно реализованы некоторыми блокчейнами, которые поддерживают SegWit. Lightning Labs рада сообщить, что удалось успешно протестировать первый  атомарный кросс-чейн своп от Lightning, который соединил биткойн и тестнет Лайткойна!

И все же, что такое своп? Атомарные свопы между блокчейнами используются для того, чтобы две стороны, скажем Алиса и Боб, могли при необходимости обменяться средствами, даже если их активы находятся на разных блокчейнах. Для этого, Алисе и Бобу нужно соблюсти протокол, который обеспечит атомарность перевода.

В данном случае, атомарность свопа сводится к двум результатам: либо Алиса и Боб успешно обменяются активами, либо ничего не произойдет. Эта особенность очень важна, поскольку она гарантирует, что ни одна сторона не будет обманута, а обмен криптовалютами пройдет без участия третьих сторон.

Возможность мгновенных переводов валюты через Lightning несёт множество положительных последствий – от повышения конфиденциальности, до уменьшения торговых сборов. Нас особенно интересует новая технология, как проекция будущей свободной инфраструктуры бирж, основанных на примере Lightning.

Свопы «по блокчейну»

Для начала мы представляем диаграмму, на которой показан обычный протокол блокчейн-свопа (полное первоначальное описание можно найти здесь). Для полноты картины, стоит отметить, что существуют и более гибкие протоколы, но нужно сосредоточить внимание на простых, ведь наша цель – понять основные принципы.

Соединение блокчейнов: мгновенные кросс-чейн транзакции на Lightning

На изображении выше, показана взаимозависимость между транзакциями, которые генерируются для облегчения свопа. Стоит отметить, что порядковые номера означают не порядок создания, а то, в какой очередности они подписываются. Если следовать стрелкам снизу вверх, то можно увидеть порядок, в котором транзакции обрабатываются и используются конкретными цепями. Сплошные стрелки показывают, как происходит удачный своп. Для того, чтобы объясниться разные типы транзакций, можно использовать терминологию Lightning, к которой мы будем прибегать в дальнейшем.

В начале работы по протоколу, у Алисы в транзакции финансирования есть 1 BTC, а у Боба — 10 LTC. Если всё пройдет по плану, Алиса получит по транзакции-требованию (6) 10 LTC, а Боб получит свой 1 BTC (7).

Протокол атомарного свопа состоит из двух этапов: первый этап мы будем называть этапом установки (1–5), а второй – этапом требования (6–7). До момента, а точнее этапа требования, каждая из сторон может отменить сделку, и все активы вернутся изначальным владельцам. Но тогда, когда начался этап требования, Алиса и Боб могут получить лишь монеты с блокчейна друг у друга, а не с собственной платформы.

Этап установки

На этапе установки создается безопасная сеть, которая отвечает за надежность сделки, и защищает Алису и Боба во время трансфера. Как инициатор, Алиса сначала создает случайный 32-байтовый прообраз, x, и знает его только она. В нашем случае, мы будем обозначать хэш прообраза через H(x), а хэш-функцию, как SHA256.

После этого, она создает специальную фиксированную транзакцию, которая содержит H(x). Эта транзакция будет действовать как временная учетная запись, которая переведет её 1 BTC, если произойдет одно из двух: либо Боб сможет представить x, либо Алиса подождет 48 часов для возврата. Таким образом, потребовать 1 BTC Боб сможет только тогда, когда Алиса скажет ему об x, и это должно произойти до дэдлайна. Операция финансирования Алисы подписывается обеими сторонами до совершения сделки, с целью гарантировать, что она не переведет свои BTC на счет, с которого она потом не сможет их получить обратно. Без этой функции, Боб смог бы не ставить мультиподпись и удержать деньги Алисы.

Далее, создается безопасная сеть для 10 LTC Боба. В этом процессе участвует тот же H(x), и подписывается транзакция финансирования так же, как и Алисина. Единственная разница заключается в том, что для транзакции Боба дэдлайн будет составлять не 48 часов, а лишь 24. Безопасность протокола обеспечивается именно этой взаимосвязью, в чем нам еще предстоит убедиться.

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

Этап требования

В этот момент, только Алиса знает x. Таким образом, она может потребовать 10 LTC у Боба с помощью транзакции-обязательства, но только в течение 24 часов. С другой стороны, Боб не знает x, но у него есть 48 часов, чтобы потребовать свой 1 BTC. Задумка в том, что обе транзакции закодированы при помощи одного H(x), поэтому Алисе, чтобы получить LTC придется поделиться значением x с Бобом.

Всё, что Алиса может сделать, чтобы получить её 10 LTC это передать свою транзакцию-требование. Если она не сделает ничего, то обе стороны получат свои активы обратно, и мы вернемся к началу. Остается один вопрос: когда она передает эту транзакцию (и делится x)?

Как вы уже знаете, финансирование Боба действительно только в течение 24 часов. Если Алиса откроет x Бобу позже, то он не только вернет свои LTC, но и по условиям сделки, сможет претендовать на BTC Алисы! То есть, если Алиса хочет получить LTC, она вынуждена поделиться значением x не позднее 24 часов с момента инициации сделки. Так, чтобы Боб успел потребовать 1 BTC у Алисы, используя x. После этого, они оба расходятся в разные стороны, удачно обменяв свои BTC и LTC.

Как же это связано с Lightning?

Каким образом завершится протокол блокчейн свопа, определяется в тот момент, когда Алиса сообщает Бобу x. Этап требования может затянуться после отправки x, однако Алиса и Боб вынуждены завершить своп, поскольку рискуют остаться ни с чем. Если использовать предварительный подход к транзакции, то период ожидания, необходимый для отправки атомарного платежа может быть снижен с часа или больше (если он проходит on-chain), до минимального времени, необходимого Алисе, чтобы отправить 32 байта информации Бобу.

Я знаю, о чем вы подумали. Было бы круто, если бы люди построили быструю, децентрализованную сеть для анонимной отправки платежных прообразов?😏

Под капотом, у Lightning Network есть собственная технология, в которой используется особый вид платежей, под названием Hashed Time-Locked Contract (HTLC). По своей структуре, контракты HTLC очень схожи с теми контрактами, которые демонстрировались в предыдущем примере. Они тоже используют безопасные операции финансирования с временными ограничениями, и атомарно переводят активы через открытие прообразов. На уровне скриптов, HTLC отличается лишь одной особенностью: в кооперативных целях, существование канала можно использовать сколь угодно долго, без каких-либо временных ограничений.

Соединение блокчейнов: мгновенные кросс-чейн транзакции на Lightning

Чтобы не усложнять все ещё больше, не будем рассматривать как работает эта функция, а остановимся на простом платеже и свопе Lightning. Запомните, что в реальной жизни не отображаются результаты Lightning-платежа на блокчейне, но сейчас мы сделаем это, чтобы визуализировать и помочь обнаружить зависимости между транзакциями.  Каждая из сторон может «вывести» деньги в любое время, всего лишь отобразив фиксированную транзакцию на блокчейне. В таком случае, программное обеспечение реагирует на произошедшее, и требует возврата средств, запертых под уже известным нам x, либо ожидания возврата средств по истечении времени.

Упрощенные Lightning-платежи

На предыдущем изображении можно увидеть упрощенную модель простого Lightning-платежа между Алисой и Кэрол, с посредничеством Боба. Путь платежа состоит из двух биткойн-каналов, которые автоматически отправляют платеж по каналу Алиса-Боб, а затем по каналу Боб-Кэрол. Предположим, что v – это сумма, которую нужно заплатить Кэрол. Тогда, в случае успешного платежа, Алиса потратит v биткойнов, Боб не получит ничего, а Кэрол достанется v биткойнов.

Для Lightning-платежа, сначала Кэрол необходимо создать прообраз x, и отправить H(x) Алисе. Дальше, для платежа наступает так называемый этап установки, который мы воспринимаем как расширение платежа. По мере того, как платеж расширяется, каналы по пути платежа устанавливают свои безопасные сети, с временными ограничениями, двигаясь по пути от Алисы к Кэрол, и используя H(x).

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

Как только безопасность будет соблюдена, можно будет закрыть платёж с выравниванием балансов, в соответствии с тем, как это происходило на этапе требования, который мы уже рассматривали. Для этого, Кэрол отправляет x обратно Алисе. Когда Алиса получает x, и он совпадает с H(x) Боба, она понимает, что платеж был проведен успешно, поскольку он мог получить правильный x только отправив деньги Кэрол.

Lightning свопы

Теперь, когда мы показали в чём аналогичны on-chain свопы и платежи Lightning, давайте разберёмся как Lightning может быть использован для офф-чейновых кросс-чейн свопов.

По платежу Lightning, который рассматривали ранее, Алиса никогда не получает никаких денег. В этом и состоит основная проблема, ведь сама идея свопа (обмена) в том, что две стороны обмениваются разными видами валют, и каждый получает определенное количество активов от противоположной стороны. Это можно устроить, если Алиса воссоздаст циркуляционный путь платежа, при том, что она окажется одновременно и его источником, и получателем. Это позволит ей оказаться и отправителем, и получателем одного и того же атомарного трансфера.

Соединение блокчейнов: мгновенные кросс-чейн транзакции на Lightning

Чтобы Алиса могла отправить биткойн, а получить лайткойн, у неё должен быть открыт канал на обеих цепях. Проще всего это сделать так (см. картинку выше): каналы Алисы и Боба открыты на обеих цепях. То есть, Алиса и Боб не должны соседствовать до тех пор, пока замкнутый цикл платежа не вернётся к Алисе, и они не покроют обе цепи.

Когда платеж уже находится в процессе исполнения, сначала биткойн переходит от Алисы к Бобу, и обратно, лайткойн переходит от Боба к Алисе. Соотношение количества биткойна которые Боб получает, и лайкойна, который он отправляет, показывает обменный курс свопа. Исходя из атомарной природы платежей Lightning, своп может пройти успешно — либо нет, для обоих партнеров одновременно.

Эксперимент

Ниже показан скриншот первого атомарного свопа в сети Lightning. Для каждой из сторон, начальным фиксированным обменным курсом был взят 100 LTC к 1 BTC. На изображении ниже можно наблюдать:

  1. Алиса запрашивает lnd для открытия свопа с Бобом. Она хочет получить 100 сатоши в обмен на литоши.
  2. Создается обратный маршрут свопа к функции sendtoroute lnd, которая может выполнять любой хорошо сформированный маршрут.
  3. Маршрут сформирован удачно, и сначала Алиса отправляет Бобу 10,000 литоши, а затем получает от него 100 сатоши.
  4. Состояние канала показывает, что своп выполнен успешно!

Соединение блокчейнов: мгновенные кросс-чейн транзакции на Lightning

Посмотреть видео второго эксперимента можно по этой ссылке, а новую версию использованного lnd можно найти на github.

Источник



Categories: Прилoжения, Разработчикам, Сервисы, Технологии, Технологии

Tags: , ,

Leave a Reply

1 Комментарий на "Объединение блокчейнов: мгновенные кросс-чейн транзакции на базе Lightning"

Notify of
avatar
anon
Гость

Воодушевляет.
Ждём запуска Lightning на Биткоине!

wpDiscuz