Перейти к содержимому

Atomic swap что это

  • автор:

Принципы работы и особенности применения atomic swap

В этой статье освещены вопросы, связанные с актуальностью подхода атомарного обмена разных монет между собой без участия посредников. Мы постарались описать особенности работы такого обмена и требования к цифровым валютам для поддержания этой функциональности. Кроме того, разобрали актуальные вопросы проектирования и запуска децентрализованных бирж на базе atomic swap, а также недостатки и риски их использования.

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

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

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

Идея и требования к валюте


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

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

Для того чтобы цифровая валюта могла успешно поддерживать atomic swap, она должна удовлетворить некоторым фундаментальным требованиям.

Основным из них является возможность создать смарт-контракт с возможностью временной задержки. Кроме того, для совершения транзакции между двумя разными учетными системами необходимо, чтобы обе они могли использовать одну и ту же криптографическую хеш-функцию в задании условий траты монет (например, SHA-256). Это необходимо, чтобы контракт выполнялся корректно, когда пользователь предоставит результат выполнения хеш-функции. Более того, для успешного осуществления atomic swap необходимо наличие канала связи, поскольку пользователи должны off-chain обсудить условия обмена.

Принцип работы


Atomic swap использует так называемые блокировки с ограничением по времени (HTLC). Фактически это контракты, которые поддерживает сама учетная система цифровой валюты. Пара специальных контрактов гарантирует, что если монеты одной валюты меняют владельца, то и монеты второй валюты тоже. А если одна из сторон контрактов не подтвердит перевод в срок, то монеты вернутся изначальным владельцам обратно. Таким образом, монеты обеих валют блокируются до тех пор, пока все условия не будут выполнены и подтверждены. Либо обмен монетами выполнится атомарно, либо будет отклонен полностью.

image

Рассмотрим этот процесс на более детальной схеме. Представьте две цифровые валюты, для учета которых применяется технология блокчейн: α и β. Есть два участника: Алиса (А) и Боб (Б). Сначала Алиса создает новый адрес в блокчейне валюты α и передает его Бобу. Боб также создает новый адрес, но в блокчейне валюты β, и передает его Алисе.

image

Алиса инициирует транзакцию со смарт-контрактом, на котором блокирует свои монеты, которые она хочет обменять с Бобом. Боб верифицирует этот смарт-контракт (проводит ручной или автоматизированный аудит), создает свой смарт-контракт на основе контракта Алисы и передает его ей. В свою очередь Алиса верифицирует смарт-контракт Боба в блокчейне β и, если все корректно, публикует свое секретное хеш-значение в блокчейне β во время разблокировки монет, которые были заблокированы Бобом. С помощью этого хеш-значения Боб может разблокировать монеты, которые Алиса заблокировала в блокчейне α. Таким образом, совершается обмен. До момента первой публикации хеш-значения, все участники остаются при своих монетах, а после участники свободно могут получить доступ к монетам оппонента. Именно поэтому обмен можно считать trustless.

Время подтверждения


Для совершения trustless обмена atomic swap необходимо всего 4 транзакции, по 2 в каждом блокчейне, а также off-chain коммуникация между субъектами для передачи текста смарт-контракта. Поэтому время совершения обмена с помощью atomic swap может занимать от 1 часа до того времени, которое указано в смарт-контракте субъектов во временной задержке.

Валюты, поддерживающие atomic swap


К валютам, которые на данный момент поддерживают atomic swap, относятся:

  1. Bitcoin и его форки: Litecoin, Monacoin, Zcoin, Viacoin и т. д.
  2. Ethereum и подобные ему проекты, смарт-контракты которых пишутся на языках программирования и выполняются в виртуальных машинах.

Децентрализованные биржи


На базе atomic swap можно построить децентрализованные биржи, которые позволят работать с несколькими учетными системами, со своим блокчейном для каждой. Но при проектировке таких децентрализованных бирж необходимо помнить, что кто угодно должен иметь возможность оставить свое предложение о покупке или продаже. Поэтому сначала необходимо наличие протокола, который позволит составить orderbook децентрализованным образом.

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

Недостатки

В децентрализованных биржах пока нельзя реализовать так называемые dark pools – специальный orderbook, в которых никто не видит orders. Такой подход используют в централизованных биржах, чтобы скрывать предложения по обмену крупных сумм, поскольку они могут манипулировать рынком. Для реализации dark pools в децентрализованной бирже необходимо использовать сложную криптографию.

Кроме того, в децентрализованных биржах пока не будут доступны операции с фиатными валютами. Фиатные валюты не имеют учетной системы, где можно было бы прописать смарт-контракт. Поэтому нет возможности совершить atomic swap между фиатными и цифровыми валютами.

Проблема Panic Sell


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

image

В качестве аналогии можно привести пример из ядерной физики. При распаде одного ядра изотопа урана 235 оно обычно испускает от 1 до 8 свободных нейтронов. Каждый нейтрон, образовавшийся при распаде может вызвать распад соседнего ядра урана, это явление называется цепной реакцией деления ядра. Собственно, это и является принципом взрыва атомной бомбы. Причем решить проблему тушения ядерных взрывов до сих пор не удалось решить должным образом. Конечно, проблема Panic Sell в децентрализованных биржах на основе atomic swap не такая существенная в сравнении с проблемой атомных бомб, но данная аналогия очень наглядно отражает суть лавинообразного распространения панического процесса на рынке.

Риски использования atomic swap


Из-за отсутствия третьей стороны при использовании atomic swap есть свои риски. Если пользователь не провел аудит контракта, который ему прислал оппонент, есть вероятность, что оппонент может украсть деньги первого пользователя. Кроме того, если после исполнения смарт-контракта первый пользователь забрал деньги, а оппонент не выполнил redeem script вовремя, оппонент может потерять свои деньги.

Выводы


Оценив работу atomic swap, можно заключить, что идея является перспективной для создания технологии обмена цифровыми активами на trustless основе. Нужно больше времени и опыта практического применения, прежде чем появится возможность однозначно утверждать, как именно должна быть реализована идея atomic swap. Однако уже сегодня существуют децентрализованные биржи, которые используют atomic swap: BarterDEX на платформе Komodo, Altcoin, а также проект 0х. Факт, что существует спрос на подобную технологию обмена, указывает на потребности современной цифровой экономики.

  • bitcoin
  • atomic swap
  • smart contract
  • decentralized systems
  • cryptocurrency
  • decentralized exchange
  • Блог компании Distributed Lab
  • Криптография
  • Криптовалюты

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

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

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

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

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

  • Непосредственно на блокчейне (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, к которым не получит доступ Боб.

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

Обмен Bitcoin с Litecoin

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

Я буду выполнять обмен на Ubuntu 16.04. У меня уже установлен Bitcoin Core 0.17.0, скачан блокчейн testnet и создан кошелек. Я скачал Litecoin Core 0.16.3, также скачал testnet и создал кошелек. Затем я установил и настроил Golang и менеджер зависимостей dep. По этой ссылке находятся рекомендации по работе с проектами на Golang.

В репозитории есть подробная инструкция. Для сборки скриптов необходимо выполнить раздел “Build instructions”. После этого в консоли станут доступны команды btcatomicswap и ltcatomicswap.

Наш эксперимент №1 с обменом состоит из 7 шагов и повторяет изложенную выше последовательность действий. В реальной ситуации большинство действий можно выполнить автоматически. Потребуется лишь ввести пароль от двух кошельков: отправить транзакцию для оплаты обмена и через некоторое время забрать присланные на другой кошелек средства.

Обмен Ethereum с Bitcoin

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

Для проведения обмена устанавливаем Go Ethereum и скачиваем блокчейн. Аналогично предыдущему обмену, используем тестовую сеть.

$ geth —rinkeby —syncmode «fast» —rpc —rpcapi eth,net,web3,personal

Код, который был применен для проведения первого обмена между BTC и ETH, мы не будем использовать, потому что он основан на другой хэш-функции. Вместо этого будем применять производный код, который в настоящее время предложен в виде pull request в уже использованном нами при иллюстрации обмена BTC на LTC репозитории.

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

$ git checkout ethatomicswap

$ go install ./cmd/ethatomicswap/

Нам понадобится адрес смарт-контракта, который сможет хранить данные атомарных свопов. Репозиторий содержит код смарт-контракта AtomicSwap. Используя его, мы добавим свой смарт-контракт в блокчейн. В качестве альтернативы можно использовать адрес добавленного ранее контракта с аналогичной спецификацией (имеющего аналогичный ABI).

$ ethatomicswap -testnet deploycontract

Deploy fee: 0.001179986 ETH

Contract Address: 2661cbaa149721f7c5fab3fa88c1ea564a683631

Deploy transaction (c14abf6683166eea95edac03980e94e734444671bd0a2d940bcc958c5bbb940c):

Publish deploy transaction? [y/N] y

Published deploy transaction (c14abf6683166eea95edac03980e94e734444671bd0a2d940bcc958c5bbb940c)

Аналогично предыдущему обмену, новый эксперимент также состоит из 7 шагов и повторяет изложенный выше процесс. Разница заключается в том, что на месте Litecoin теперь находится Ethereum.

Алиса хочет обменять свои 0.2 BTC на 2 ETH, принадлежащие Бобу.

Вывод по результатам экспериментов

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

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

Поэтому on-chain ACCS не подходит для таких инструментов, как высокочастотный трейдинг. Стороны должны заплатить двойные комиссии с обеих сторон сделки. Даже в случае неудавшегося обмена, придется заплатить минимум одну комиссию. Для on-chain ACCS более актуально проведение крупных обменных операций. При этом скорость операции становится менее важной, чем ее надежность, а комиссия блокчейна окажется незначительной относительно суммы обмена.

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

Насколько безопасна технология? Т.к. вся информация в блокчейне публична, информация об обмене также доступна всем, можно проследить результат обмена и продолжить слежение за обменяной валютой уже в другом блокчейне. Поскольку технология ACCS еще не в массовом употреблении, нет большого интереса к ней у вредителей. Когда технология станет массовой, могут вскрыться уязвимости либо в самой технологии, либо в реализации на определенном блокчейне, либо, что более вероятно, в реализации конкретного продукта. Нельзя забывать и о методах социальной инженерии. Если пользователям придется иметь дело с недружелюбным, незнакомым интерфейсом, либо с командной строкой — злоумышленник может обманом заставить совершить неверные действия, например, преждевременно раскрыть секретное число.

Существующие продукты

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

Обменников, которые реализуют честный ACCS, не так много. Поскольку Lightning Network еще далека от повсеместного внедрения, рассмотрим только on-chain решения.

Swap.Online — веб-кошелек криптовалют с возможностью обмена через atomic swap [6]. Ключи пользователей хранятся на стороне клиента. Помимо Bitcoin, Ethereum и множества ERC-20 токенов, осенью 2018 года добавили возможность обмена USDT, EOS, Litecoin.

Имеется возможность создавать новую заявку на обмен, либо выбирать из уже созданных (через Orderbook). При создании заявки можно указать, разрешать ли частичный выкуп. Когда встречная заявка найдена, производится обмен. Он осуществляется автоматически, при условии, что кошелек в данный момент открыт. Оба пользователя создают транзакции на адреса друг друга, затем поочередно забирают полученные средства, путем отправки второй транзакции. Время на операцию обмена составляет 3 часа, после которых имеется возможность вернуть свои средства. Если для обмена в кошельке недостаточно средств, показывается диалог, приглашающий внести недостающую сумму на свой кошелек, включая комиссию за транзакцию. В результате обмена пользователь получает обменянную сумму минус комиссия за вторую транзакцию.

Atomic Wallet — мобильное и десктопное приложение — кошелек с функцией обмена [7]. Имеет широкий набор криптовалют (25) и токенов (более 300). Приложение поддерживает любые стандартные токены, достаточно перевести их на свой Ethereum адрес. Первые выполнили ACCS-обмен Qtum и Bitcoin [8]. Помимо обычного обмена через обменники-партнеры, имеется раздел с атомарными свопами, где можно просматривать существующие заявки, размещать свои и следить за историей своих обменных операций. Поддерживается обмен между Bitcoin, Litecoin и Qtum.

Еще один сервис, Altcoin.io предлагает решение децентрализованной биржи. Спустя месяц после первого обмена между Decred и Litecoin, энтузиасты из Altcoin.io объявили об осуществлении первой ACCS-операции между Ethereum и Bitcoin [9]. После первых испытаний ACCS, в начале 2018 года они запустили в testnet кошелек с функцией атомарных свопов [10]. Летом того же года код кошелька был выложен в открытый доступ, поскольку его намеченный на конец года релиз был отменен. Компания сконцентрировалась на децентрализованной бирже в сети Plasma [11]. В открытый доступ выложен сайт на Angular и кошелек, который представляет из себя набор библиотек для реализации функций кошелька и атомарных свопов. Код кошелька достаточно сырой, судя по всему, проект требует серьезной доработки перед запуском в mainnet.

  • Instant Cross-Chain Transactions On Lightning announcement
  • Описание концепции ACCS, 2013 год
  • Decred о первой реализации ACCS
  • Исходные тексты POC
  • Announcement
  • First Successful QTUM-BTC atomic swap
  • The First Ethereum <> Bitcoin Atomic Swap
  • Atomic Swap Wallet release announcement
  • Atomic Swap Wallet Now Open-Sourced
  • Atomic Swap Wallet description

Пост подготовила команда компании AXIOMA GROUP.

Атомарный своп

Атомарный своп (atomic swap) — это метод быстрого обмена между двумя криптовалютами, работающими на разных блокчейнах, без посредника в лице биржи или обменной платформы. Такой процесс (известен как атомарная кросс-цепная торговля) основан на смарт-контрактах и позволяет пользователям торговать монетами непосредственно из своего кошелька для хранения криптовалюты. В результате контроль над сделкой осуществляют исключительно участвующие в ней стороны. Атомарные свопы могут осуществляться как ончейн, то есть напрямую между блокчейнами разных криптовалют, так и офчейн — за пределами блокчейна.

Первый такой обмен совершили 19 сентября 2017 года между криптовалютами Decred и Litecoin.

Как работает атомарный своп?

Маша имеет 100 ETH, которые она хочет обменять на эквивалентное количество DEL. Традиционный механизм предполагает, что Маша отправляется на биржу, пополняет свой счёт и выставляет ордер на продажу своих монет ETH. В случае с атомарным свопом Маша может напрямую обменять свои ETH на DEL, нужное количество которых есть у Ивана.

Сначала Маша вносит депозит в ETH на адрес контракта, который выступает в качестве сейфа. Когда последний создан, Маша генерирует ключ для доступа к нему. Затем она делится криптографическим хешем этого ключа с Иваном. Обратите внимание на то, что Иван пока не может получить доступ к ETH Маши, потому что у него есть только хеш ключа (замочная скважина), а не сам ключ.

Затем Иван использует хеш, предоставленный Машей для создания другого безопасного адреса контракта, на котором будет храниться его DEL. Чтобы получить DEL из «сейфа» Ивана, Маша должна использовать тот же ключ, таким образом предоставляя свою валюту Ивану (благодаря специальной функции, которая называется хеш-лок). Это означает, что, как только Маша потребует ETH, Иван, в свою очередь, запросит DEL, после чего обмен валютой будет завершён.

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

Как технически это работает?

При осуществлении атомарных свопов используется контракт с хеш-таймером (HTLC) . Как следует из названия, HTLC представляет собой временной смарт-контракт, включающий в себя генерирование криптографической хеш-функции, которая может быть верифицирована участниками обмена. Иными словами, HTLC требует, чтобы получатель платежа до истечения установленного срока подтвердил получение средств путём генерирования криптографического подтверждения платежа. В противном случае транзакция признаётся недействительной, а средства возвращаются отправителю.

Проблемы атомарных свопов

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

Команда Decimal активно работает над практической реализацией концепции атомарных свопов и уже предложила своим пользователям кроссчейн-обмен из блокчейна DecimalChain в блокчейн Ethereum для удобного выхода на рынок децентрализованных финансов, построенных на токенах формата ERC-20. Для этого пользователю нужно лишь заполнить простую форму в своей персональной консоли.

Атомарные свопы имеют большой потенциал для улучшения экосистемы криптовалюты, но это предстоит протестировать в более широком масштабе.

Заключение

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

Atomic Swaps: блокчейн расправил плечи

Вы, наверное, слышали о Суэцком канале(кажется недавно об этом писали в новостях). До создания искусственного водного пути европейские корабли, доставляющие ткани и специи из Индии, должны были пройти печально известный “Кейп-Роут” — 40-дневное путешествие, покрывающее более 10 000 морских миль. Открытие канала сократило расстояние на более чем 5000 миль, сократило время до 10–12 дней и открыло новую эру морского судоходства. Меньше времени в море, меньше смертей от цинги, меньше пиратов, недоедания и разрушительных штормов. Прогресс.

И вот за окном 2021 год. Мировая капитализация крипто-рынка приближается к 2 триллионам долларов. PayPal запускает платежи в криптовалюте. Линдси Лохан шилит Трон. Рекламы Dogecoin на Super Bowl не случилось, но Илон вместо этого, в буквальном смысле, отправил его «ту зе мун». Свершилось. Крипта — это мейнстрим. Но даже сегодня получение определенных криптоактивов может стать своего рода эпическим путешествием.

Сначала вам нужно будет зарегистрироваться на одной из централизованных бирж. Там, вероятней всего, придется пройти утомительную процедуру KYC. Это не только довольно длительный процесс, но это также подразумевает дискомфортно высокий уровень доверия. Помимо необходимости передавать документы, удостоверяющие вашу личность, и другую конфиденциальную информацию (потенциально анонимной) третьей стороне, вам также придется временно предоставить им право полного управления своими крипто-активами. И точно так же, как драгоценный груз кораблей, плывущих по морскому пути из Индии, делал их огромным соблазном для пиратов, так и большая концентрация криптоактивов на биржах делает их привлекательными для хакеров.

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

Что такое Atomic Swaps?

Существует некоторая неопределенность в отношении термина Atomic Swap, поэтому для этой статьи мы сразу определим его как операцию, в которой задействованы две криптовалюты, каждая из которых имеет свой нативный блокчейн и техническую возможность создавать безопасные операции обмена между пользователями сети, не прибегая к услугам trusted third party и не доверяя друг другу. Например если Zano и Bitcoin имеют поддержку atomic swaps, то пользователи могут безопасно совершать обмен Zano на BTC. Операция называется atomic, потому что подразумевает что вся процедура не может остановиться на полпути, переведя только часть монет, она или происходит полностью и обе стороны получают ожидаемые монеты или же она не происходит совсем и обе стороны остаются при своих монетах. Таких образом ни одна из сторон не может смошенничать ни на каком из этапов сделки.

HTLC

В основе механизма atomic swap лежит так называемый HTLC(Hash-Time Locked Contract). Этот контракт можно условно перевести на человеческий язык таким образом:

Если прошло времени меньше чем Т, то перевести N монет на адрес A при условии предоставления секрета, хеш которого равен H. Если прошло времени больше чем Т, и за это время секрет не предоставлен, то перевести (вернуть) деньги на адрес B.

Другими словам, выход транзакции, заданный как HTLC, может быть потрачен получателем только, если отправитель сообщит ему секрет, и только в течение определенного времени, зафиксированного в транзакции (например, 24 часа). Если же это не произойдет в указанный период времени, то деньги будут выведены на обратный адрес отправителя.

Тот, кто создает этот контракт, придумывает секрет, но не раскрывает его, а в самом контракте указывают только адреса A, B, хеш H секрета, и период времени, в течение которого контракт может быть “открыт” с помощью секрета. То есть, если Боб (у которого адрес B) отправляет Алисе (у которой адрес A) такой контракт, то она не сможет “открыть” этот контракт и перевести себе деньги до тех пор, пока Боб не сообщит ей этот секрет.

Cross-chain Atomic Swap

Теперь, после знакомства с HTLC, опишем процесс осуществления cross-chain atomic swap между сторонами. Представим Алису и Боба. Допустим, у Алисы есть Zano(будем использовать этот проект для примера), а у Боба — BTC, и, разумеется, они хотят трейдить. Алиса и Боб договорились, что хотят поменять оговоренную сумму BTC на оговоренную сумму ZANO. У обоих участников сделки есть кошельки как в сети Bitcoin, так и в сети Zano, и оба договорились о том, что сделка должна быть завершена в течении суток.

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

Увидев, что Алиса создала в сети Zano HTLC-транзакцию для Боба, и убедившись, что количество монет в этом контракте соответствует их с Алисой договоренности, Боб создает HTLC-транзакцию в сети Bitcoin, адресованную Алисе и содержащую оговоренное число монет BTC, и, что очень важно, залоченную именно тем же хешем, который Боб увидел в HTLC-транзакции, созданной Алисой.То есть, это хеш секрета Алисы.

Алиса убеждается в том, что количество монет в HTLC-транзакции, созданной Бобом на ее адрес в сети Bitcoin, соответствует их договоренностям, и принимает решение об исполнении сделки. Это решение по сути является тем самым атомарным моментом сделки, до него сделку можно отменить и все останутся при своих монетах (получив refund через определенное количество времени, указанное в HTLC, в нашем случае это 24 часа).

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

Алиса делает redeem-транзакцию.

Как только Алиса создала такую транзакцию и отправила ее в сеть Bitcoin, она раскрыла свой секрет поскольку этот секрет явно включается во вход redeem-транзакции для того, чтобы доказать, что она его знает. Этот же секрет является также локером транзакции, адресованной Бобу в сети Zano, поэтому Боб, внимательно следя за ситуацией, видит отправленную Алисой redeem-транзакцию, извлекает из нее секрет Алисы и создает соответствующую redeem-транзакцию в сети Zano:

По завершении последнего этапа Алиса и Боб получают то, о чем они договорились, при этом ни на одном из этапов ни одна сторона не сможет смошенничать. Если же любая из сторон передумала до того, как Алиса создала redeem-транзакцию и раскрыла свой секрет (в случае с Бобом до момента создания им HTLC в сети Bitcoin), то они просто ждут пока пройдет временное и предварительно оговоренное ими окно сделки. Важно иметь в виду, что timelock стороны, которая создает ответный HTLC, т.е. стороны которая не знает секрета, должен быть выбран таким образом, чтобы он закончился раньше, чем timelock стороны, инициирующей операцию HTLC первой. Если это условие не будет соблюдено, то вторая сторона (в нашем случае это Боб) может не успеть создать свою redeem транзакцию, и останется без монет.

Генетическая совместимость проектов

В описанном выше примере оба проекта имеют совершенно разную кодовую базу, и даже разные эллиптические кривые(!). К счастью, HTLC позволяют организовывать atomic swaps даже между такими “генетически” несовместимыми проектами.

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

Privacy considerations

В случае Bitcoin едва ли можно говорить о прайваси, но нужно прояснить особенности взаимодействия с прайвеси-блокчейном, в котором транзакции по умолчанию являются приватными. Очевидно redeem-транзакции не могут иметь anonymity set — использование mixins не имело бы никакого смысла в любом случае, поскольку всегда можно сопоставить к какому именно HTLC-выходу относится вход через проверки на соответствие хеша секрета. Поэтому связь между транзакцией с HTLC-выходом и redeem-транзакцией довольно однозначна. Кроме того, сопоставить пару транзакций HTLC-to-Redeem в сети Bitcoin для отдельно взятой операции atomic swap, связанной с соответствующей парой транзакцией в сети Zano, довольно легко, Это можно сделать, используя все тот же хеш секрета — в обоих сетях, очевидно, хеш должен быть одинаковым, поскольку для проведения операции в обоих блокчейнах использовался один и тот же секрет.

Практический пример

Для того, чтобы лучше проиллюстрировать работу atomics swaps для двух принципиально разных блокчейн проектов, мы реализовали небольшой пример под nodejs. За основу мы взяли статью и репозиторий, в которых был интересно представлен пример atomic swaps между Bitcoin и BitcoinСash. Мы существенно упростили код, чтобы продемонстрировать основные принципы, тем не менее, если у вас появится желание разобраться с работой HTLC в Bitcoin на более низком уровне, вплоть до оп-кодов, то мы рекомендуем ознакомиться с их статьей.

В практическом примере, о котором идет речь, важно понимать концепцию P2SH, используемую на стороне Bitcoin для создания HTLC. В Bitcoin для определения конкретного способа использования выхода транзакции используется так называемый “script”(далее “скрипт”), элементарный стековый язык программирования. Причем скрипт, который определяется для конкретного выхода, на самом деле будет являться окончанием скрипта, ну а его начало должен будет предоставить тот, кто тратит этот выход (подробнее с этим можно ознакомиться в этой статье). Однако, кроме непосредственного включения “половинки” скрипта в выход, есть еще способ отправки на хеш скрипта (P2SH). Это значит, что содержание самого скрипта выхода не раскрывается до момента фактической траты выхода, а в транзакции содержится только указание, что при трате этого выхода должно быть предоставлено “окончание” скрипта, хеш от которого прописан в выходе, и “начало” скрипта, которое этот скрипт отпирает. В описываемом примере сети Bitcoin для создания HTLC используется именно такой тип выхода. Поскольку обе стороны договорились об условиях сделки и они знают свои public keys (именно public keys, а не адреса, потому что в отличие от Zano, например, в bitcoin адресом является хеш public key), то обе стороны смогут генерировать одинаковый HTLC скрипт выхода, получив один и тот же “script-хеш-адрес”(P2SH). Для одной стороны это будет “script-хеш-адрес”(P2SH), на который она отправит BTC, а для другой стороны это будет “script-хеш-адрес”(P2SH), который она будет мониторить для того, чтобы детектировать факт создания HTLC и его подтверждения сетью.

Заключение

Хотя в приведенных выше примерах мы использовали Bitcoin и Zano, atomic swaps могут выполняться между любыми цифровыми валютами, которые поддерживают HTLC. Это обеспечивает более безопасный и прямой маршрут между экосистемами Bitcoin, Bitcoin Cash, Decred, Litecoin, Qtum, Monacoin, Zano и тп. И список совместимых проектов постоянно растет.

На данный момент это инструменты низкого уровня, но они закладывают основу для гораздо большей совместимости в будущем. Мы уже предвидим создание платформ с более доступным и удобным интерфейсом, построенных на основе Atomic swaps (например, AtomicDex). Вскоре они станут настоящими децентрализованными альтернативами централизованным биржам. По мере того, как инструменты продолжают развиваться и совершенствоваться, мы можем визуализировать будущее, в котором вы сможете совершать быстрые, недорогие и надежные сделки без рисков, связанных с доверием третьей стороне.

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

Atomic swaps. Ликвидность. Прогресс.

PS: Материал составлен в соавторстве с участником нашего комьюнити проекта Zano — OrsonJ, за что ему огромное спасибо!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *