Автор: Baking Bad
Оригинал: Atomex: cross-chain atomic swaps on practice
Представляем мульти-криптовалютный десктопный кошелек со встроенной гибридной биржей.
Тернистый процесс развития начинает приносить свои первые плоды: Atomex наконец-то запущен в основной сети. Наша команда совершила увлекательное путешествие от чистого атомарного протокола обмена до полноценного приложения, и теперь мы можем сказать "Да, это работает!".
Мы хотим поблагодарить всех ранних тестировщиков за их отзывы, это очень важно для нас!
Идея создания
Нашей целью является создание продукта для крипто энтузиастов, для тех, кто верит в идеи, стоящие за технологией блокчейна, и кто является параноиком в хорошем смысле этого слова.
Если TCP/IP является протоколом, используемым для передачи информации в Интернете, то и для электронных денег и других классов активов блокчейн такой же. Тем не менее, все еще существует гэп между блокчейнами, который приводит к неудобному разделению ценностей.
Атомарный протокол обмена, который мы рассмотрим чуть подробнее, эффективно закрывает этот гэп доверительным образом, опираясь на по существу простую идею. Банки или другие доверенные третьи лица заменяются смарт контрактом, и это один из немногих случаев, когда это можно сделать только с доступными в блокчейне данными (без оракулов или других оффшорных провайдеров данных).
И тогда я сказал, что код-это закон
Основы атомарного свопа
Прежде чем перейти к практической части, давайте немного погрузимся в детали протокола. Допустим, Элис хочет купить ETH для XTZ, а Боб согласился заключить сделку. Есть два возможных исхода - либо транзакция состоится, либо будет отменена.
1. Алиса лочит XTZ
Алиса генерирует случайную последовательность байтов - secret, вычисляет свой hash и посылает XTZ на специальный смарт контракт вместе с hash, значением lock_time_a и XTZ address_b Боба.
Эти XTZ могут быть выкуплены владельцем theaddress_b только в том случае, если он знает secret, и это должно быть сделано до lock_time_a, после этого, Алиса может получить эти средства обратно.
2. Боб лочит ETH
Когда транзакция Алисы подтверждается, Боб посылает свои ETH на специальный смарт контракт вместе с тем же hash, lock_time_b и ETH addreess_a Алисы.
Эти ETH могут быть выкуплены владельцем theaddress_a только в том случае, если он знает secret, и это должно быть сделано до lock_time_b, после этого, Боб может получить эти средства обратно.
Требование: lock_time_b < lock_time_a
Чтобы предотвратить случай, когда Алиса сначала возвращает деньги, а затем выкупает их у Боба.
Упрощенная схема обмена XTZ/ETH (успешный пример)
1. Алиса выкупает ETH
Алиса посылает secret контракту в блокчейн Ethereum и получает взамен ETH Боба.
secret теперь раскрывается, и Боб может потратить залоченые XTZ.
2. Боб выкупает XTZ
Боб посылает secret контракту в блокчейн Tezos и получает взамен XTZ Алисы.
Мы не будем рассматривать случаи, когда на этапе инициализации что-то идет не так (они довольно тривиальны), а рассмотрим случай, когда Алиса по какой-то причине не выкупает ETH Боба, то есть secret не раскрыт, а прошел lock_time_b.
Упрощенная схема обмена XTZ/ETH (пример возврата)
1. Боб возвращает ETH
Боб отправляет hash смарт контракту в блочейн Ethereum и получает свой ETH обратно.
Он не может потратить XTZ Алисы, так как secret не раскрыт.
2. Алиса возвращает XTZ
Алиса ждет lock_time_a, затем отправляет hash контракту в блокчейне Tezos и получает обратно свою XTZ.
Она не может потратить ETH Боба, потому что lock_time_b уже прошел.
Пришло время увидеть Atomex в действии! Мы начнем с мульти-криптовалютного сетапа с несколькими XTZ и ETH на нашем балансе. Что касается вышеприведенной схемы, мы - Боб, а наш контрагент - Алиса.
Выбераем вкладку “Conversion” и устанавливаем сумму ETH, которую мы хотим обменять на XTZ. Проверьте условия сделки и нажмите “Convert”.
Шаг 0: Пользователь создаёт новую конверсию
В таблице появится новая конверсия со статусом “In Progress”.
Собственно, это все, что нам нужно для атомарного свопа через кошелек Atomex. Но давайте проследим за внутренним процессом, порожденным нашими действиями.
Заглянем под капот: Алиса лочит XTZ
Шаг1: Алиса лочит XTZ
Это транзакция, отправленная Алисой, эти заблокированные средства в конце концов будут нашими. Обратите внимание на поле hash, переданное через параметры.
Заглянем под капот: Боб(us) лочит ETH
Как только транзакция XTZ подтверждена, Боб отправляет ETH транзакцию. Мы видим, что она содержит тот же самый hash:
Шаг 2: Боб лочит ETH
Заглянем под капот: Алиса выкупает ETH
Еще одно обращение к контракту со стороны Алисы. Она получает наш ETH в обмен на secret, и Боб забирает его:
Шаг 3: Алиса выкупает ETH
Заглянем под капот: Боб(us) выкупает XTZ
Наконец, Боб разблокируетXTZ используя полученный secret:
Шаг 4: Боб выкупает XTZ
Статус нашей конверсии меняется на “Completed”, всё в порядке.
Все внутренние действия, которые вы видели, выполняются кошельком Atomex в фоновом режиме, поэтому необходимо держать его в режиме онлайн до тех пор, пока не будет произведен обмен. В нашем примере конверсии XTZ/ETH, всё это занимает всего 8 минут, однако, это зависит от конкретного времени подтверждения блокчейном.
В настоящее время мы работаем над тем, чтобы сделать доступными различные типыордеров. Как только рынок свопов Atomex станет достаточно стабильным, можно будет размещать лимитные ордера через приложение Atomex.