Что такое 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
Atomic Swaps (Атомарные свопы) – это децентрализованные и ненадёжные сделки между двумя пользователями разных криптовалют. Эта технология относительно новая и предназначена для того, чтобы произвести революцию в транзакциях.
Atomic Swaps (Атомарные свопы)
Так как блокчейны не связаны, и транзакции не могут быть отменены, нет обеспечения защиты, если одна из сторон не соблюдает свою часть сделки. Одним общим решением данной проблемы является введение третьей стороны, имеющей взаимное доверие, для попечительства, однако это представляет проблему масштабируемости и конфиденциальности. Это также не предлагает никакой защиты против сговоров. Атомарные свопы решают данную проблему без необходимости третьей стороны, используя смарт-контракты на обеих цепях. Атомарные свопы привлекают каждую платёжную сторону к транзакции с контрактом, один контракт на каждый блокчейн. Контракты содержат выпуск, который может быть потрачен любой из сторон, но правила, требуемые для возврата, для каждой привлечённой стороны разные. Одна сторона (называемая контрагент 1 или инициатор) генерирует секретный ключ и отправляет установленную сумму сделки в смарт-контракт. Вторая сторона (называемая контрагент 2 или участник) может только изымать средства, зная секретный ключ. Если истекает предопределенный период времени (обычно 48 часов) после того, как транзакция через смарт-контракт была замайнена или авансирована, но не изъята участником, средства могут быть возвращены в кошелёк инициатора. Для простоты представим, что инициатор хочет торговать с участником Particl за Decred. Инициатор также может торговать Decred за Particl, и шаги будут теми же, но каждый шаг будет сделан на другом блокчейне. На данном этапе участник не может требовать средства из смарт-контракта Particl инициатора, потому что секретный ключ ему неизвестен. Если инициатор в этот момент передаёт секретный ключ, участник может потребовать средства из контракта, даже не выполняя свою часть сделки, нанося убыток инициатору. Во избежание этого, участник создаёт похожий смарт-контракт, но на блокчейне Decred, и отправляет указанную сумму Decred на него. Однако, чтобы инициатору изъять выпуск, им нужно предъявить участнику их секретный ключ. Чтобы участник мог создать свой смарт-контракт, инициатор должен предъявить участнику не секретный ключ ( так как участник всё еще может потребовать средства и не выполнить свою часть сделки), а криптографический хеш секретного ключа, чтобы смарт-контракт мог сработать должным образом. Контракт участника может быть возмещен так же после предопределённого периода времени. Тогда инициатор изымает средства Decred участника, предъявляя секретный ключ к смарт-контракту участника. Затем секретный ключ извлекается из компенсирующей транзакции Decred инициатора. Эта процедура атомарна (с тайм-ауом), так как даёт каждой стороне минимум 24 часа, чтобы изъять свои коины на другом блокчейне до того, как может быть сделан возврат. Это лучший вариант для людей, которым необходима конфиденциальность, и возможно, он станет наиболее дешёвым в использовании.
Децентрализованные биржи
Существуют альтернативы централизованным биржам, называемые DEX или децентрализованные биржи. Структура таких платформ позволяет пользователям удерживать владение своими коинами атомарных свопов с их закрытыми ключами. Этот метод позволяет предотвратить накопление криптовалют на одной централизованной точке атак. На DEX существует высокий спрос, и он постоянно растёт. Биржа Radar Relay, например, впервые превысила объём в $1 млн за 24 часа в начале января. Однако, такой вид бирж тоже не безграничен. У них есть ликвидность, и они идут на опережение. Как работают DEX? Их работа строится путём того, что люди устанавливают и берут заказы индивидуально. Заказ существует в отдельных регистрах заказов, и эти регистры хранятся независимо друг от друга. Те заказы, которые размещаются в одном регистре, не могут появиться в другом. К сожалению, это создаёт недостаток ликвидности для пользователей. По этой причине пользователи должны смотреть на несколько разных журналов, чтобы разместить заказ. Как решить эту проблему? Она может быть решена через «Liquidity Network». Это процесс, означающий, что разные журналы заказов используют API для совместного использования друг с другом. В этом случае заказы идут между «рилейерами» и обеспечивают необходимую ликвидность внутри сети. Как было сказано выше, децентрализованные биржи идут на опережение. Опережение – это концепция, означающая, что люди могут перебить заказ, размещенный на DEX. Множество DEX, запущенных на Ethereum, зависят от смарт-контрактов. Однако, это создаёт проблему, так как сеть является публичным блокчейном, и каждый может проверить пул памяти, чтобы посмотреть, кто хочет взять заказ. Бывший инженер-программист Google Иван Богатый в своём блоге предложил Bancorteam реализовать минимальный возврат сделок, эффективно отменяя заказ, как только пользователь понимает, что кот-то хочет сорвать сделку на его глазах. Он предложил ещё одно решение установить максимальную цену на газ для людей, чтобы делать ставки выше ограничения. Данные решения являются краткосрочными. Они не смогут предотвратить опережение, но сократят потери пользователей. Ещё одно возможное решение – это «схема обязательства» от Уилла Уоррена, сооснователя проекта 0х (и открытого протокола для DEX).Что она означает? Трейдер тайно берет свои средства за транзакцию, но не открывает их. Как только транзакция замайнена, отправляется вторая со всеми деталями, выполняя заказ на децентрализованной бирже. Этот метод тоже не безупречен, так как могут возникнуть случайные сговоры, когда, например, два одних и тех же заказа размещаются одновременно.
Технология
Lightning Network объявила о выпуске первых ставок для Mainnet на Bitcoin и Litecoin 15 марта 2018 года. Atomic Swaps – это самое долгожданное приложение LN. Атомарные свопы – это обмен одной криптовалюты на другую по принципу «всё или ничего» (например, BTC на LTC). LN не является обязательной, но она сделает атомарные свопы закрытыми, мгновенными и бесплатными по сравнению с майнингом. Принимая во внимание ликвидность, LN может столкнуться с проблемой доступности средств и каналов. Природа сети требует от пользователей создание платёжных каналов через мультиподписи, что означает, что пользователь может попасть на канал LN, только если у него есть что тратить. Посредники могут направлять платежи только в случае, если у них есть определённая сума средств. Решение может быть тем же, как и с DEX. Транзакции могут направляться и распределяться между узлами, у которых есть достаточно средств и каналов, чтобы осуществить своп. Возможно, это не самое лучшее решение на сегодняшний день, так как LN находится на ранней стадии разработки, но с её ростом, это будет хорошим решением. Атомарные свопы используют технику контрактов HTLC (Hash Time-Locked Contracts). Когда обе валюты доставлены в данные контракты, HTLC обеспечивают, чтобы сумма обмена не могла быть перебита, как это может быть на DEX, поэтому нет опасности «случайного сговора».
Коины Аtomic Swap Coins
Скажем, вы хотели бы обменять Litecoin на Bitcoin, и вам нужно найти кого-то на LN, чтобы совершить обмен. Соответствующие коины введены в своп. Они направляются через другие узлы, если вам нужны другие точки связи, и вы не хотите оплачивать комиссию за создание двух платёжных каналов. Итак, обмен гарантирован. Для защиты от обмана и похищения средств других людей преступниками, существуют строгие наказывающие контракты.
Коины
- Bitcoin (Bitcoin Core)
- Bitcoin Cash (Bitcoin ABC, Bitcoin Unlimited, Bitcoin XT)
- Litecoin (Litecoin Core)
- Monacoin (Monacoin Core)
- Particl (Particl Core)
- Polis (Polis Core)
- Vertcoin (Vertcoin Core)
- Viacoin (Viacoin Core)
- Zcoin (Zcoin Core)
Атомарные свопы и сборы
Комиссия за транзакцию должна оплачиваться дважды.
Атомарный своп
Передача криптовалюты от одной стороны к другой, без использования биржи или другого посредника.
Что такое atomic swap?
Как правило, чтобы купить или продать криптовалюту, пользователь должен использовать централизованную биржу. Такая схема несет в себе несколько недостатков: обе стороны должны найти биржу, которой они доверяют, биржи часто страдают от простоев в периоды высокого спроса, и биржи подлежат государственному надзору.
В отличие от этого, атомарный своп (atomic swap) позволяет осуществлять прямую торговлю между двумя пирами, используя специально разработанный смарт-контракт для децентрализованных бирж.
Атомарные свопы предлагают более децентрализованную альтернативу торговле на DEX с автоматическим маркетмейкером (AMM), как Uniswap, которые полагаются на централизованные пулы ликвидности. AtomicDEX, один из самых популярных DEX на основе атомарных свопов, предоставляет систему для торговли криптовалютами с настоящей одноранговой (p2p) книгой ордеров.
Атомные свопы основаны на контрактах с таймлоком хеша (HTLC). Каждый HTLC включает в себя хешлок, который можно использовать для блокировки и разблокировки депонированной валюты с помощью ключа, доступного только вкладчику, и таймлок, который автоматически возвращает средства вкладчику, если транзакция не завершена в установленные сроки.
Атомарные свопы разработаны таким образом, что когда происходит своп, либо обе стороны получают желаемые средства, либо вообще ничего не происходит, и обе стороны остаются при своём (за вычетом очень небольшой комиссии за транзакцию типа «ордер-тейкер»). Атомарные свопы делают торговлю цифровыми активами настолько безопасной, насколько это вообще возможно.
Представим сценарий, при котором сторона А создаёт адрес HTLC и вносит криптовалюту. Это создает код доступа, а также хеш этого кода. Сторона А отправляет хеш стороне Б, которая использует его для генерации адреса. Сторона Б вносит криптовалюту на этот адрес. Поскольку у стороны А есть пароль, использованный для генерации хеша, они могут получить доступ к монетам, внесённым стороной Б.
В этот момент контракт отправляет код стороне Б, которая использует его для доступа к монетам, внесенным стороной А. Если контракты не подписаны в указанные сроки, оба депозита автоматически возвращаются вкладчикам.
Атомарные свопы можно использовать для торговли на блокчейне и между разными блокчейнами с различными собственными криптовалютами. Технология атомарного свопа не зависит от протокола, что означает возможность обмена таких активов, как Bitcoin на Ethereum, без необходимости доверять безопасности обёрнутого токена или централизованной биржи. Офчейн атомарные свопы предлагают значительно улучшить скорость транзакции, но они еще не до конца разработаны.
Что такое атомарные свопы?

Атомарный своп (atomic swap) — это операция по обмену одной криптовалюты на другую, которая может быть реализована мгновенно без необходимости полагаться на требующую доверия третью сторону (посредника) в лице биржи или обменной платформы. В результате контроль над сделкой осуществляют исключительно участвующие в ней стороны.
Атомарные свопы могут осуществляться как ончейн, то есть напрямую между блокчейнами разных криптовалют, так и офчейн – за пределами блокчейна. Первый такой обмен был совершен 19 сентября 2017 года между криптовалютами Decred и Litecoin.
Чем вызвана необходимость в атомарных свопах?
Процесс обмена криптовалют на биржах и других специализированных платформах до сих пор может отнимать достаточно много времени и часто связан с завышенными комиссиями. Кроме того, не все биржи поддерживают все монеты или нужные торговые пары, в результате чего трейдер, желающий обменять одну криптовалюту на другую, сталкивается с вынужденной необходимость дополнительных конверсий.
Для решения этих проблем, включая упомянутые риски доверия третьей стороне, и была разработана технология атомарных свопов. Впервые она была описана еще в 2013 году, однако лишь недавно стала реализовываться на практике.
Как это работает с технической точки зрения?
При осуществлении атомарных свопов используется контракт хеширования с блокированием по времени (HTLC). Как следует из названия, HTLC представляет собой временной смарт-контракт, включающий в себя генерирование криптографической хеш-функции, которая может быть верифицирована участниками обмена.
Иными словами, HTLC требует, чтобы получатель платежа до истечения установленного срока подтвердил получение средств путем генерирования криптографического подтверждения платежа. В противном случае транзакция признается недействительной, а средства возвращаются отправителю.
А как это работает на практике?
Алиса имеет 100 LTC, которые она хочет обменять на эквивалентное количество BTC. Традиционный механизм предполагает, что Алиса отправляется на биржу, пополняет свой счет и выставляет ордер на продажу своих монет LTC. В случае с атомарным свопом Алиса может напрямую обменять свои LTC на BTC, нужное количество которых есть у Боба.

Алиса как инициатор транзакции создает адрес контракта, который можно сравнить с банковской депозитной ячейкой. На этом адресе хранятся LTC Алисы в процессе свопа. Для его открытия требуется подпись Боба, а также сгенерированное Алисой число. Очень важно, чтобы на данном этапе Алиса не делилась этим числом с Бобом, так как тогда тот сможет открыть ячейку и забрать все находящиеся там средства еще до того, как будет завершен своп.
Следующим шагом Алиса придумывает секретное число и создает его хеш. Хеш действует как замок, в то время как секретное число является ключом. Боб просматривает адрес контракта от Алисы, убеждается, что все в порядке, после чего создает свою собственную ячейку с тем же ключом. Для этого Алиса отправляет Бобу созданный ранее хеш, однако для открытия ячейки ему нужна подпись Алисы.
Начиная с этого момента Алиса имеет ключ, а также возможность подписать ячейку Бобу и, следовательно, выкупить средства, привязанные к адресу. После этого Бобу передается необходимое ему секретное число, которое он вплоть до этого момента не знал. Это секретное число Боб может использовать, чтобы открыть ячейку Алисы и забрать полагающиеся ему средства.
Как видно, HTLC структурирует транзакцию таким образом, что для обеспечения успешного завершения обмена стороны зависят друг от друга. Транзакции создаются таким образом, что в случае, если по каким-то причинам сделка прекращена, все средства возвращаются их владельцам через определенный период времени, установленный каждой стороной.
Необходим ли для атомарных свопов протокол Lightning Network?
Вопреки широко распространенному заблуждению, технология Lightning Network не является обязательным условием для успешного осуществления атомарных свопов, однако она может сделать процесс обмена более простым, быстрым и эффективным.
Как и атомарные свопы, Lightning Network использует контракты хеширования с блокированием по времени, разница в том, что в то время как атомарные свопы связывают блокчейны, Lightning Network связывает платежные каналы. Этот метод предполагает, что Алиса и Боб открывают платежный канал с Кэрол и осуществляют обмен через Кэрол без необходимости ей доверять.
Один и тот же основополагающий механизм означает, что интегрировать Lightning Network в атомарные свопы достаточно просто, в результате чего различные Lightning-сети могут быть связаны между собой в разных блокчейнах. Благодаря этому участник свопа, который открывает платежные каналы на обоих блокчейнах, может выступать в роли платежного процессинга или, например, децентрализованной биржи альткоинов.
В чем разница между ончейн- и офчейн-обменами?
Ончейн (on-chain) атомарные свопы происходят непосредственно в блокчейнах обмениваемых криптовалют, которые для успешного обмена, помимо поддержки HTLC, также должны использовать один и тот же алгоритм хеширования.
Офчейн (off-chain) атомарные свопы позволяют проводить обмен монет вне блокчейна, являясь расширением Lightning Network.
Какие криптовалюты поддерживают технологию атомарных свопов?
Первые успешные обмены с использованием технологии атомарных свопов были проведены между Litecoin и Decred, Vertcoin и биткоином. Они, возможно, и привлекли повышенное внимание сообщества, однако одними этими криптовалютами дело не ограничивается.
Следует отметить, что для успешного осуществления атомарных свопов в их первоначальной имплементации пользователю необходимо скачать блокчейны обеих валют. Для среднестатистического пользователя этот процесс с практической и технической точки зрения совсем неудобен.
Однако решение этой проблемы уже найдено, и есть вероятность того, что в скором времени оно станет доступно широкому кругу пользователей. Так, над созданием собственной децентрализованной биржи BarterDEX работает проект Komodo. В частности, его разработчики успешно провели атомарный своп при помощи сервера Electrum, который позволяет взаимодействовать с криптовалютой без необходимости скачивать весь блокчейн.
Более того, команда Komodo заявляет, что после того, как успешно связала блокчейны биткоина и Ethereum, а также имплементировала поддержку токенов формата ERC-20, их биржа BarterDEX теперь поддерживает p2p-обмены между 95% всех существующих монет и токенов.
Другие известные проекты, активно работающие над практической реализацией концепции атомарных свопов, — это Blocknet, который ставит перед собой задачу создания интернета блокчейнов на основе технологии Xbridge, Altcoin.io, работающий над созданием децентрализованной биржи на основе технологии Plasma и кошелька со встроенными функциями атомарных свопов, и Atomic Wallet.
В отслеживании того, насколько та или иная криптовалюта близка к поддержке атомарных свопов с другим активом, поможет, например, такой ресурс, как swapready.net.
Подписывайтесь на ForkLog в социальных сетях