Что такое Atomic Swaps и как это реализовать

ACCS – Atomic cross-chain swap – позволяет двум сторонам производить обмен криптовалюты между двумя блокчейнами без посредников.

Мы описали реализацию ACCS на платежных каналах, проведение ACCS на блокчейне (Обмен Bitcoin с Litecoin / Обмен Ethereum с Bitcoin).

Поговорим о существующих и еще разрабатываемых продуктах.

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

Начнём

Технология находится в процессе развития. Только часть блокчейнов поддерживается в настоящий момент. Для реализации обмена поддержка блокчкейном классических смарт-контрактов не требуется.

Решается проблема совершения связанных операций в несвязанных блокчейнах, когда обе стороны должны выполнить свой набор действий по контракту, иначе вся сделка не состоится. Теоретически возможны реализации:

  • Непосредственно на блокчейне (on-chain) — часть блокчейнов уже поддерживается. (подробнее описано далее)
  • Используя какой-л. платежный канал (off-chain) — разработка сейчас идет только для Lightning Network и Raiden. Готовые реализации отсутствуют даже для тестовых сетей. (подробнее описано далее)

Технология базируется на инструменте, который называется Hashed Time-Locked Contract (HTLC). Это схема криптографического подтверждения легальности действий участников, при этом сами действия разнесены во времени. Как следует из названия, этот инструмент объединяет два механизма блокировки выхода транзакции: по времени (time lock) и по секретному числу , хэш которого записывается в блокчейн (hash lock).

Такая схема обеспечивает обратимость операции, когда одна из сторон сделки “пропадает”, то есть не выполняет положенную часть действий. HTLC - проверенный инструмент, который используется, в частности, в Lightning network. Обязательными условиями возможности атомарного свопа на конкретной паре блокчейнов является поддержка в нем HTLC, а также реализация вычисления одинаковой хэш-функции.

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

Реализация ACCS на платежных каналах

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

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

Впервые подобный обмен был произведен между Bitcoin и Litecoin с помощью Lightning network [1].

Проведение ACCS на блокчейне

Концепция впервые описана в 2013 году Тиером Ноланом [2]. Первый Proof-of-Concept (POC) создан Decred: блог [3], исходные тексты и инструкции [4]. Первый обмен совершен в сентябре 2017 года между Decred и Litecoin [5]. С того времени код в репозитории был изменен. Мы рассмотрим здесь современную версию.

Две стороны (Алиса и Боб) договариваются об обмене. Алиса платит Бобу 1 BTC, Боб платит Алисе 10 LTC. Возникающие комиссии блокчейнов стороны договорились оплачивать самостоятельно.

Шаг 1. Алиса и Боб создают по 1 новому адресу и обмениваются ими. Алиса передает Бобу адрес АА в блокчейне LTC, Боб передает Алисе адрес АБ в блокчейне BTC.

Шаг 2. Алиса генерирует секретный ключ К и его односторонний хэш КХ. Алиса создает транзакцию - контракт ТА стоимостью 1 BTC. ТА попадает в блокчейн в момент времени Вта.

Шаг 3. Алиса сообщает Бобу детали ТА, из которых Боб узнает хэш КХ, а также проверяет контракт.

Шаг 4. Если все в порядке, Боб создает транзакцию - контракт ТБ стоимостью 10 LTC. ТБ попадает в блокчейн в момент времени ВТБ. Боб сообщает Алисе детали ТБ.

Шаг 5. Алиса проверяет контракт ТБ. Она должна убедиться, что в “Recipient address” установлен ее LTC адрес, который она сгенерировала на первом шаге и отправила Бобу. Стоимость контракта должна соответствовать первоначальной договоренности, то есть иметь значение 10 LTC. Значение поля “Secret hash” должно быть равно хэшу секретного ключа КХ, который Алиса отправила Бобу на шаге 2. Также необходимо, чтобы контракт еще был действителен, то есть установленный Locktime должен позволить завершить обмен.

Если все в порядке, Алиса переводит 10 LTC с транзакции ТБ на другой адрес своего кошелька. Этим действием Алиса сообщает Бобу ключ К. Теперь, когда Боб узнал ключ - он имеет доступ к транзакции ТА.

Боб переводит 1 BTC с транзакции ТА на другой адрес своего кошелька. На этом процесс обмена завершен.

Условия использования средств на контракте ТА: Боб может потратить средства, если он узнает ключ К, в промежуток времени (Вта, Вта + 48 часов). По истечении времени ВТА + 48 часов Алиса также может потратить неиспользованные средства.

Условия использования средств на контракте ТБ: Алиса может потратить средства, используя свой ключ К, в промежуток времени (Втб, Втб + 24 часа). По истечении времени Втб + 24 часа, Боб также может вернуть себе неиспользованные средства.

 В итоге, у Алисы появилось 10 LTC минус комиссия LTC за транзакцию, Алиса потратила 1 BTC плюс комиссия BTC за транзакцию. У Боба появился 1 BTC минус комиссия BTC за транзакцию, он потратил 10 LTC плюс комиссия LTC за транзакцию.

Таким образом, благодаря использованию в контрактах задержки, у каждой стороны есть достаточно времени, чтобы получить свою сумму по контракту. Если Боб не создает контракт ТБ, Алиса через 48 часов может получить свои BTC назад. Если Алиса не получает средства с контракта ТБ, Боб сможет получить LTC назад через 24 часа. Алиса в этом случае через 48 часов заберет назад BTC, к которым не получит доступ Боб.

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

 Продолжение статьи читайте по ссылке: https://vc.ru/crypto/66308-chto-takoe-atomic-swaps-i-kak-eto-realizovat

2 мая 2019
Последние посты