атомарный своп что это такое
Блеск и нищета atomic swaps
Чем плохи атомарные свопы и как каналы им помогут, что важного произошло в хардфорке Constantinople и как быть, когда нечем платить за газ.
Главная мотивация любого специалиста по безопасности— желание избежать ответственности.
Провидение было милостиво, я покинул ICO, не дожидаясь первой необратимой транзакции, но вскоре обнаружил себя за разработкой криптобиржи.
Я— решительно не Мальчиш Кибальчиш, и одного строгого взгляда достаточно, чтобы я сдал все ключи и пароли. Поэтому главной моей целью как архитектора было расположить раскаленное жало криптоанализа как можно дальше от дорогих мне элементов инфраструктуры.
Не твои ключи, не твои проблемы
Мы строим систему обмена активами и хотим исключить промежуточное хранение этих активов у себя, но должны обеспечить безопасность сделки.
Можно выступить в качестве судьи в спорной ситуации и проводить сделки с кошельками, требующими две из трех подписей: покупателя, продавца и эскроу.
Однако, если участник успешно атакует эскроу, то он получает искомые две подписи.
Атомарный своп— схема обмена, где гарантом выступает смарт-контракт, который допускает только честное поведение.
Словно в загадке про волка козу и капусту ты можешь действовать только по единственному правильному сценарию и несешь потери, если отступаешь от него.
Только вместо прожорливых животных порядок обеспечивает хэш функция, в которой так сложно найти коллизию, что не стоит и начинать.
Шаг первый: загадка
Предположим, что Алиса в одно прекрасное утро хочет передать Бобу биткоин за горсть “криптоюаней”.
Шаг второй: приманка
В игру вступает Боб и переводит“криптоевро” на свой контракт, который написан таким образом что:
Шаг третий: отгадка в приманке
Алиса приходит за своими деньгами и забирает деньги с контракта Боба, раскрыв при этом свой секрет.
Шаг завершающий: загадка разгадана
Транзакцию видит Боб, и орлиным взором вычленяет из нее секрет, предъявленный Алисой контракту. Этот секрет он использует, чтобы забрать уже свои биткоины.
Когда что-то идет не так
Если Алиса вдруг оказывается внезапно смертна, Боб в обед забирает свои юани.
В свою очередь, Алиса к вечеру возвращает биткоин, если вероломный Боб решает придержать деньги до лучших времен.
Если вы предпочитаете картинку тексту, на Хабре для вас есть более подробное и наглядное объяснение работы атомарных свопов.
Разница между таймаутами призвана застраховать нас от зловредной Алисы, которая забирает деньги Боба в самый последний момент, и таймаут истекает, пока тот дрожащими пальцами вбивает hex в транзакцию.
Участники не могут потерять свои деньги, максимум, придется подождать возврата.
Это простая, как валенок, схема, которая требует от взаимодействующих блокчейнов всего ничего:
На первый взгляд, уже можно сказать бирже “прощай, наша встреча была ошибкой”, но не тут-то было.
При всех своих достоинствах решения на atomic swap не поражают ликвидностью. Во многом потому, что в самой популярной паре BTC-USD фиатная часть была не вполне токенизирована.
Успех USDT породил целую волну стабильных монет формата ERC20 на любой вкус, от кастодиальнейшего USDC до алгоритмичнейшего DAI.
Поэтому для простоты мы рассуждаем далее о том, что Алиса продает Бобу биткоины за какие-то ERC20 токены, и надеемся на удачу стабилизаторов, благо у нас еще много более технических проблем.
Скорость
Биткоин и Ethereum и по отдельности не слишком быстры, а тут нам приходится ждать сначала один депозит со всеми подтверждениями, потом второй.
Это все потому, что сначала деньги вносит участник, которому известен секрет, а оппонент ждет финальности и только затем переводит свою часть.
Кроме того, мы имеем дело с весьма волатильным активом, так что за это время курс может весьма существенно измениться, а поменять условия уже непросто.
Конфиденциальность
Любой обмен оставляет артефакты на обоих блокчейнах. Внимательный наблюдатель может заметить одинаковые хеши в смарт контрактах и сделать логичный вывод, что тут свершилась сделка, из чего можно произвести массу умозаключений от курсовых до налоговых.
Usability
Конек блокчейна вообще и эфира в частности. Давайте посмотрим, какие телодвижения придется совершить продавцу и покупателю.
С точки зрения продавца все относительно просто: нужно просто перевести биткоин на p2sh адрес. С эфиром все гораздо хитрее.
Рассмотрим усредненный по гитхабу контракт для свопа:
Внимание! Не используйте этот и другие контракты из статьи на продакшене, они написаны исключительно для демонстрации. Особенно этот.
Сами пользователи часто ошибаются и просто переводят токены на контракт, после чего токены просто теряются. Комментарии на Etherscan полны стенаниями несчастных.
А чтобы вызвать контракт, нужно заплатить комиссию в ETH, значит оба участника должны запастись им перед началом сделки, а этим мало кто хочет заниматься.
Газголдер
Для начала стоит убрать проверку отправителя везде, где только возможно, и предположить, что у нас есть кто-то, страдающий от избытка газа и вызывающий контракты для всех желающих.
Контрактно-ключевой дуализм и EIP 712
Как мы знаем, адрес в эфире может быть контрактом, а может быть субъектом, сиречь ключем.
Главное занятие ключа— подписывать какие-нибудь сообщения.
Мы можем использовать в качестве отправителя Боб-контракт, который совершает все необходимые пассы, проверив перед этим подпись Боба-ключа.
Теперь, кто угодно может спонсировать комиссию участника, но принимает решение только тот, кому известен ключ.
Для работы с подписями сложных структур данных в Ethereum есть стандарт EIP 712, подробнее о нем вы можете прочитать в блоге кошелька Metamask
Разделяй и властвуй
Часто сценарий взлома Ethereum контракта выглядит так:
Создавая для каждой сделки отдельный контракт, мы можем изолировать контракты на уровне EVM.
Но и это еще не все: теперь каждая сделка имеет свой адрес, на который можно перевести токены с любого кошелька или биржи.
Брошенные контракты и create2
Но теперь для каждой сделки нам приходится создавать контракт и ждать пока покупатель переведет туда трудовой “криптофенинг”. В схеме “утром контракты, вечером деньги” всегда есть опасность, что покупатель отвалится, а эфир на создание контракта уже потрачен.
Нельзя ли сделать так, чтобы утром деньги, а вечером байты?
В хардфорке Constantinople разработчики EIP 1014 добавили инструкцию create2, которая создает новый контракт на детерминированном адресе
Инструкция работает только через assembly, поэтому фабрика выглядит несколько устрашающе:
Код вашего контракта можно получить при помощи web3:
Из-за ограниченной поддержке в solidity газ для контракта может расчитываться неправильно из-за некоторых тонкостей эфира.
Особенно мило, что в случае нехватки газа контракт падает с внутренней ошибкой, не сообщая при этом, что газа не хватило, как того можно ожидать.
Теперь мы можем переводить токены на контракты не создавая их заранее и пока мы их не опубликуем в сети никто не догадается, что именно делает контракт.
Ворон ворону глаз не выклюет
Понятно, что настоящего аналитика, особенно получившего хорошие инвестиции на борьбу с врагами режима отмыванием денег, такие детские хитрости не остановят, и после создания контракта он все равно увидит хэш.
Как сделать так, чтобы хэш не засветился?
Сам своп мы переносим в офчейн: участники обмениваются подписями для перевода на своп-контракт, а затем приватно раскрывается секрет.
Создаются два “мультисига”, с которых можно забрать средства при наличии подписей Алисы и Боба.
Дабы уход в оффлайн кого-либо из участников не стал трагедией, добавим старый добрый таймаут.
Алиса и Боб параллельно вносят депозиты
В этот момент наступает гармония: и Алиса и Боб могут в любой момент закончить сделку. В такой дружественной обстановке они могут обменяться подписями от для вывода денег на конечные адреса.
Для стороннего наблюдателя это выглядит как будто деньги прошли через контракт с мультиподписью 2 из 2.
А еще такая схема позволяет обеим сторонам делать депозит одновременно, так как секрет загадывается уже после всех подтверждений.
Level 2
Раз мы можем выводить деньги на один адрес и не публиковать промежуточную транзакцию, ничего не мешает нам выводить деньги на несколько адресов и совершать неограниченное количество промежуточных транзакций. Не то что бы это был необходимый набор для обмена, но если начал собирать своп, трудно остановиться.
Теперь Алиса и Боб смогут развернуться вовсю. Например, автоматически высчитывать среднюю цену, обменивая по сатоши в секунду, или просто напрямую соединить маркетмейкера и получателя ликвидности.
Теперь нам доступна высокоскоростная p2p торговля, главное следить за временем и закрыть сделку до таймаута.
Однако, немного поправив наши контракты, мы можем подарить нашим каналам бессмертие, что сильно упростит нам создание сети.
Принципы работы и особенности применения 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). Фактически это контракты, которые поддерживает сама учетная система цифровой валюты. Пара специальных контрактов гарантирует, что если монеты одной валюты меняют владельца, то и монеты второй валюты тоже. А если одна из сторон контрактов не подтвердит перевод в срок, то монеты вернутся изначальным владельцам обратно. Таким образом, монеты обеих валют блокируются до тех пор, пока все условия не будут выполнены и подтверждены. Либо обмен монетами выполнится атомарно, либо будет отклонен полностью.
Рассмотрим этот процесс на более детальной схеме. Представьте две цифровые валюты, для учета которых применяется технология блокчейн: α и β. Есть два участника: Алиса (А) и Боб (Б). Сначала Алиса создает новый адрес в блокчейне валюты α и передает его Бобу. Боб также создает новый адрес, но в блокчейне валюты β, и передает его Алисе.
Алиса инициирует транзакцию со смарт-контрактом, на котором блокирует свои монеты, которые она хочет обменять с Бобом. Боб верифицирует этот смарт-контракт (проводит ручной или автоматизированный аудит), создает свой смарт-контракт на основе контракта Алисы и передает его ей. В свою очередь Алиса верифицирует смарт-контракт Боба в блокчейне β и, если все корректно, публикует свое секретное хеш-значение в блокчейне β во время разблокировки монет, которые были заблокированы Бобом. С помощью этого хеш-значения Боб может разблокировать монеты, которые Алиса заблокировала в блокчейне α. Таким образом, совершается обмен. До момента первой публикации хеш-значения, все участники остаются при своих монетах, а после участники свободно могут получить доступ к монетам оппонента. Именно поэтому обмен можно считать trustless.
Время подтверждения
Для совершения trustless обмена atomic swap необходимо всего 4 транзакции, по 2 в каждом блокчейне, а также off-chain коммуникация между субъектами для передачи текста смарт-контракта. Поэтому время совершения обмена с помощью atomic swap может занимать от 1 часа до того времени, которое указано в смарт-контракте субъектов во временной задержке.
Валюты, поддерживающие atomic swap
К валютам, которые на данный момент поддерживают atomic swap, относятся:
Децентрализованные биржи
На базе atomic swap можно построить децентрализованные биржи, которые позволят работать с несколькими учетными системами, со своим блокчейном для каждой. Но при проектировке таких децентрализованных бирж необходимо помнить, что кто угодно должен иметь возможность оставить свое предложение о покупке или продаже. Поэтому сначала необходимо наличие протокола, который позволит составить orderbook децентрализованным образом.
Что касается гарантий выполнения orders, здесь есть особенности. В случае централизованных бирж, весь баланс находится у биржи. Поэтому, несмотря на то, что пользователь в любой момент может отменить свой order, до того момента, пока он не отменен, биржа исполнит этот order в любом случае. Для децентрализованных бирж, необходимы штрафы за нарушение обязательств. Пока такой подход к решению этой проблемы является лучшим из тех, которые имеются на момент 2018 года.
Недостатки
В децентрализованных биржах пока нельзя реализовать так называемые dark pools – специальный orderbook, в которых никто не видит orders. Такой подход используют в централизованных биржах, чтобы скрывать предложения по обмену крупных сумм, поскольку они могут манипулировать рынком. Для реализации dark pools в децентрализованной бирже необходимо использовать сложную криптографию.
Кроме того, в децентрализованных биржах пока не будут доступны операции с фиатными валютами. Фиатные валюты не имеют учетной системы, где можно было бы прописать смарт-контракт. Поэтому нет возможности совершить atomic swap между фиатными и цифровыми валютами.
Проблема Panic Sell
При массовом использовании atomic swap существует проблема, которая тяжело поддается решению. Допустим, что есть учетная система, внутри которой взимается очень высокая комиссия за обработку транзакций, а сами транзакции очень долго подтверждаются. Пользователи начинают продавать эту валюту, поскольку она имеет низкую пропускную способность, и создают orders на децентрализованной бирже, но эти orders при выполнении создают смарт-контракты в том же блокчейне, что и валюта, которую пытаются продать. Таким образом, сеть нагружается еще больше, ожидающие транзакции образуют еще большую очередь и пользователи еще сильнее хотят продать эту валюту, выставляя больше orders и увеличивая очередь транзакций.
Риски использования atomic swap
Из-за отсутствия третьей стороны при использовании atomic swap есть свои риски. Если пользователь не провел аудит контракта, который ему прислал оппонент, есть вероятность, что оппонент может украсть деньги первого пользователя. Кроме того, если после исполнения смарт-контракта первый пользователь забрал деньги, а оппонент не выполнил redeem script вовремя, оппонент может потерять свои деньги.
Атомарные свопы (Atomic Swap) — функция и принцип работы, реализация на сегодня
Список криптовалют, несмотря на волатильное состояние индустрии, постоянно растет. На сегодня, по данным CoinMarketCap, насчитывается более 2100 криптомонет, которые в разном процентном показателе присутствуют в инвестиционных портфелях крипто-холдеров.
Из-за обильного предложения рынка у пользователей возникает потребность в обмене одной монеты на другую. Цифровые активы конвертируются с помощью третьих лиц — криптовалютных бирж. Но блокчейн-индустрия, которая по своему принципу отрицает наличие посредников, по идейному принципу не может обменивать, например, лайткоин на эфир с помощью сторонних компаний.
Так, 9 января блокчейн-проект Qtum представил атомарные свопы для прямого обмена криптовалюты. Разберемся в структуре данной технологии и выяснил ее потенциал для дальнейшего развития.
Навигация по материалу:
Принцип работы Atomic Swap
Громкое заявление: атомарные свопы, или atomic swaps, могут полностью изменить систему денежных транзакций в мире криптовалют. Если говорить простым языком, то технология перевода и конвертации криптовалюты позволят людям напрямую торговать и обмениваться цифровыми монетами разных блокчейнов без участия третьих сторон.
Задумки по реализации обмена криптовалюты на «себе подобных» появились в момент создания альткоинов. В июле 2012 года разработчик Серхио Демиан Лернер представил первый проект (его теоретическую составляющую) протокола обмена без доверия. Идея была довольно привлекательной, однако тогда она не реализовалась. Прорыв в исследованиях атомарного обмена произошел в мае 2013 года, когда Тир Нолан представил первый полный отчет о процедуре атомарного свопа.
Вспомним героев Алису и Боба, которые во всех примерах по объяснению функционирования криптовалютой индустрии постоянно совершают транзакции.
Предположим, у Алисы есть биткоины, и она хочет продать их за лайткоины. По счастливой случайности у Боба есть LTC, которые он не против поменять на ВТС. Для этого пользователям необходимо перевести свои монеты на криптовалютные биржи и уже с помощью третьих лиц — в этом случае посредником выступает обменник — продать свои имеющиеся активы и приобрести другие.
Однако у централизованных бирж есть много проблем: угроза взлома, активы могут подлежать неправильному управлению (например, ситуация вокруг Mt.Gox), требования к объему — биржи не могут справиться с изменением спроса, особенно когда происходит резкий рост спроса на активы, к тому же, легальные крипто-обменники подлежат государственному регулированию, ведь они имеют регистрацию в какой-либо стране, поэтому пользовательские данные передаются третьим лицам.
По этим причинам крипто-индустрия, которая считает себя поистине передовой, не может полагаться на третьи лица, которые в большей степени связаны с социумом, а не с технологиями. Кроме того, блокчейн подразумевает открытую отрасль с не менее открытыми инновациями, в том числе в направлении цифровых активов.
Способность отдельных блокчейнов взаимодействовать друг с другом, например, между Bitcoin и Ethereum, крайне ограничена. Ведь сети используют различные протоколы, алгоритмы и процедуры безопасности для проведения транзакций. А большинство цифровых бирж, прежде чем переводить одну монету в другую, требуют от пользователя конвертацию в базовую валюту, и зачастую это биткоин, так как он наиболее ликвидный и легко доступный. Из-за высокой крипто-волатильности в конечном итоге можно заплатить большую сумму за совершенные транзакции по обмену, ведь биржи берут комиссии для выполнения всех сделок.
Разумеется, пользователь, чтобы избежать рисков и проблем, которые присутствуют на централизованной бирже, может совершить обмен монет на децентрализованном обменнике.
Однако атоманые свопы отличаются от DEX тем, что они создают зашифрованную учетную запись условного депонирования с помощью крипто-протокола, который гарантирует мгновенное возмещение средств пользователям, если транзакция по какой-либо причине не завершена или прервана одной или другой стороной. Благодаря этому риск по умолчанию снижается до нуля. К тому же, если пользователь торгует на централизованных биржах, то смысл использовать децентрализованные платформы теряется, так как за перевод активов с одной площадки на другую придется платить комиссию.
Реализация атомарных свопов на 2019 год
20 сентября 2017 года блокчейны Decred и Litecoin со внутренними криптовалютами DCR и LTC совершили первую успешную конвертацию монет благодаря реализации атомарного свопа. Тогда два проекта использовали hash time-locked contracts (HTLC), или «хэшированные контракты с временной блокировкой».
Чтобы Decred смогли претендовать на LTC, а Litecoin на DCR, команды по очереди раскрыли секретный номер в блокчейне, который ранее был известен только обладателям монет. Кроме того, для совершения обмена необходима загрузка блокчейнов, которые будут участвовать в конвертации криптовалют.
HTLC представляют собой специальную форму внеконцепционных каналов оплаты. Благодаря этому не засоряется и не перегружается основная сеть, сокращается время обработки транзакции. Поэтому HTLC относят к особому типу смарт-контракта, который позволяет выполнять транзакции с указанием времени между двумя сторонами, что и было сделано во взаимодействии Decred и Litecoin.
Не стоит забывать, что атомарные свопы требуют наличия связанных друг с другом платежных каналов между блокчейнами торгуемых криптовалют. Связь осуществляется благодаря сети Lightning Network. Изначально она была нужна для решения вопросов масштабирования в Bitcoin, однако сейчас ее возможности стали использоваться и в других целях.
Сеть Lightning связывает между собой платежные каналы, которые задействуют один и тот же алгоритм хэширования. Поэтому Bitcoin может быть связан только с альткоинами на алгоритме SHA-256, а к таким относятся Litecoin или Zcash.
Проекты разрабатывающие атомарные свопы
Основатель Litecoin Чарли Ли, которого по праву можно считать одним из главных адептов атомарных свопов, в сентябре 2017 года успешно обменял LTC на BTC, о чем он сообщил в своем Twitter. Большинство пользователей поблагодарили Ли за большую проделанную работу, суть которой заключалась в совершенствовании процесса конвертации одних цифровых монет на другие.
Спустя несколько дней, вдохновившись деятельностью основателя Litecoin, разработчикам Komodo удалось завершить атомарный своп между ВТС и внутренней монетой проекта KMD, используя только сервер Electrum. Это важное событие еще больше обрадовало крипто-энтузиастов, ведь так появилось доказательство того, что атомарные свопы могут использоваться без загрузки обоих блокчейнов для обмена в паре криптовалют.
Затем, в октябре 2017 года команда разработчиков Bitcoin-Ethereum Atomic Swap Code представила технологию открытого доступа по обмену Bitcoin и Ethereum. Данный код на GitHub уже использовался для запуска Altcoin Exchange, который подразумевал «atomic swap» между криптовалютами по рыночной стоимости.
Перевод ВТС и ЕТН через атомарные свопы можно совершить с помощью открытого протокола OFGP, который совместно разработали децентрализованная биржа DEx.top и крипто-кошелек iBitcome. Помимо обмена протокол позволяет следить за потоком цифровых активов конкретного пользователя и транзакциями в сети в любое время.
Другое решение с помощью внутреннего токена для блокчейн-транзакций между Bitcoin, Ethereum в токены стандарты ERC-20 было представлено Wanchain. Промежуточная цифровая монета WBTC — токен проекта, которая используется для беспрепятственного проведения транзакций. Увеличивать объемы и обеспечивать ликвидность проект планирует через партнера — децентрализованную биржу Kyber DEX.
9 января 2019 года блокчейн-платформа Qtum представила свои атомарные свопы на основе HTLC. По сути, их предложение по переводу не отличается от вышеописанных проектов и осуществляется с помощью внутреннего токена QTUM.
Недостатки технологии и точки роста
Как и все новые развивающиеся технологии, атомарные свопы имеют недостатки. Выше уже было упомянуто, что зачастую для совершения обмена криптовалюты необходимо устанавливать оба блокчейна валютных пар. Кроме того, задействованные сети должны уметь инициировать HTLC, атомарные свопы не работают с цифровыми активами, которые не поддерживают смарт-контракты.
После завершения перевода не все крипто-кошельки имеют возможность принять монеты. Обмен с использованием описываемой технологии происходит медленней, если совершается конвертация больших сумм, поэтому проблему масштабируемости еще предстоит решить.
В целом эти недостатки не представляют затруднений с точки зрения технологии и имплементации сети обмена. Вероятнее всего, как предполагают исследователи, недочеты будут исправлены уже в ближайшее время, ведь, например, проект Komodo доказал, что устанавливать два блокчейна для конвертации валют теперь необязательно.
Это значит, что рядовые пользователи смогут беспрепятственно совершать обмен и передачу цифровых активов без посредников. Блокчейн-индустрия избавится от третьих лиц в процессе конвертации монет и еще больше будет соответствовать своим идейным принципам.
Поделитесь этим материалом в социальных сетях и оставьте свое мнение в комментариях ниже.