Атомарные свопы Monero – обзор концепции

29 августа, 2021 / Главные новости

monero bug

20 августа разработчики ориентированной на конфиденциальность криптовалюты Monero добавили поддержку атомарных свопов для быстрого обмена XMR на BTC. Эти свопы называются «атомарными», потому что у них может быть только два результата: либо сделка успешна и каждый участник сделки получает средства другого, либо ничего не происходит, и обе стороны сохраняют свои монеты.

Над разработкой атомарных свопов в сети Monero работали 2 команды – проекты под названием Farcaster и COMIT.

Напомним, первый атомарный своп был реализован между Decred и Litecoin 20 сентября 2017 года (атомный своп Bitcoin-Litecoin состоялся всего через три дня). Метод, используемый для этих криптовалют проще, чем в случае с Monero.

Ниже приведены шаги необходимые для проведения атомарного свопа Bitcoin на Litecoin:

Шаг 1. Вы с незнакомцем обмениваетесь информацией о суммах и адресах криптовалюты.

Шаг 2. Вы помещаете свой BTC в HTLC (временной контракт), опубликованный в блокчейне, используя публичный ключ незнакомца. Незнакомец может потребовать его, предоставив прообраз (сгенерированный и изначально известный только вам) хеша в определенных временных рамках. Использование публичного ключа незнакомца гарантирует, что монеты будут востребованы только незнакомцем. Если монеты не востребованы по истечении времени, то возвращаются их первоначальному владельцу.

Шаг 3. Незнакомец помещает Litecoin в HTLC, опубликованный в блокчейне Litecoin, используя ваш публичный ключ и хеш-значение, которое вы использовали для своего BTC на шаге 2, однако данный HTLC истекает немного ранее. Если он не востребован по истечении промежуточного срока, Litecoin возвращается незнакомцу.

Шаг 4. Вы, зная только про прообраз, сгенерировавший два идентичных хеша, раскрываете его  и требуете Litecoin.

Шаг 5. Незнакомец использует раскрытый вами прообраз, чтобы получить свои Bitcoin.

Шаг 6. За счет того, что адреса и суммы публикуются в блокчейне и являются общедоступными, достигается уверенность в отсутствии обмана в сделке. В случае успеха, вы получаете Litecoin, а незнакомец – Bitcoin. Если Litecoin невостребован, все первоначальные суммы возвращаются их владельцам. Если Litecoin востребован, но BTC остается невостребованным незнакомцем после окончательного срока, вы получаете и его, мотивируя незнакомца забрать свои монеты вовремя.

Атомарные свопы в сети Monero

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

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

  1.  вы могли опубликовать неправильное количество BTC;
  2. незнакомец мог опубликовать неправильное количество Monero (или вообще не опубликовать);
  3. незнакомец никогда не потребует BTC.

В первом случае если разместить неправильное количество BTC, посторонний сможет отслеживать блокчейн и просто не публиковать Monero. Но при этом необхожимо как-то вернуть свои Bitcoin. Это и достигается с помощью скрипта возврата, который передает BTC с подписью адаптера с доказательством нулевого разглашения, вынуждая раскрыть общий закрытый ключ Monero. При этом после незнакомец может  потребовать свои Monero обратно. Таким образом, если вы разместите неправильное количество BTC, незнакомец не отправит Monero, и вы в конечном итоге разместите скрипт возврата в блокчейне и получите свои монеты обратно.

Если незнакомец разместит неправильное количество Monero, то вы узнаете об этом, после получения ключа для просмотра опубликованной суммы. Кроме того, в рамках подготовки к данной проблеме ваши Bitcoin публикуются с использованием скрипта с мультиподписью 2-из-2, чтобы позволить незнакомцу требовать BTC только после того, как вы предоставите подпись с использованием закрытого ключа.

Здесь стоит отметить, что в исходной статье Гуггера использовался скрипт хешлока с прообразом, управляемым вами, чтобы управлять способностью незнакомца требовать BTC, и это был первоначальный план команды Farcaster. Во время разработки команда COMIT указала, что этот хешлок не требуется, потому что метод с мультиподписью 2 из 2 может выполнять ту же роль с одной из двух подписей, контролируемых и предоставляемых вами.

Если незнакомец никогда не потребует BTC, то нужно выполнить предыдущие действия, используя скрипт для возврата Bitcoin после крайнего срока нормального завершения.

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

Если у вас есть Bitcoin и вы хотите обменять его на Monero нужно выполнить следующие шаги:

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

Шаг 2. Вы и незнакомец создаете (случайные) общие ключи для приватного ключа Monero и делитесь ими друг с другом.

Шаг 3. Вы и незнакомец создаете (случайный, секретный) общий ключ для приватного ключа расходов Monero и публичного адреса Monero, не раскрывая значения долей закрытого ключа расходов. Это достигается за счет того, что два общих ключа складываются вместе (по модулю большого числа), чтобы получить закрытый ключ расходов.

Шаг 4. Вы и незнакомец создаете и подписываете Bitcoin-скрипт, называемый скриптом возврата, у которого есть два возможных пути выполнения:

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

Шаг 5. Вы создаете сценарий для обмена BTC и публикуете его в блокчейне. Этот сценарий имеет два возможных пути выполнения:

  1. с использованием мультиподписи 2 из 2: если предоставлена ​​ваша подпись с использованием закрытого ключа, известного только вам, незнакомец может потребовать BTC.
  2. используя временную блокировку, после истечения крайнего срока обычного завершения, установленного на шаге 1, он запрашивает возврат, активируя сценарий возврата, описанный выше. Стратегически используя подписи адаптеров, этот сценарий вместе со сценарием возврата на шаге 4 раскрывает вашу долю ключа расходов Monero, если вы запрашиваете Bitcoin, и раскрывает долю ключа расходов Monero незнакомца, если незнакомец требует Bitcoin до истечения крайнего срока возврата из шага 1.

Шаг 6. Незнакомец, увидев опубликованный сценарий, переводит Monero под контроль закрытого ключа, созданного на шаге 3, публикуя транзакцию Monero.

Шаг 7. После просмотра опубликованной транзакции Monero с возможностью видимости с помощью ключа просмотра Monero, созданного на шаге 2, вы предоставляете свою подпись для мультиподписи 2-из-2, которая позволит незнакомцу требовать BTC. Незнакомец перемещает Bitcoin, автоматически раскрывая общий секретный ключ Monero с помощью подписи адаптера с нулевым разглашением.

Шаг 8. Вы используете раскрытый общий приватный ключ незнакомца, чтобы получить Monero. Вы можете либо переместить его, либо оставить на том же адресе на неопределенное время, поскольку вы единственный, кто знает закрытый ключ расходов, потому что только вы знаете оба общих ключа из шага 3. Незнакомец знает закрытый ключ просмотра, но не может его использовать.

Отметим, что отправитель должен участвовать в процессе, потому что после крайнего срока возврата незнакомец может потребовать Bitcoin, а вы не сможете потребовать Monero. Тем не менее, незнакомец может профинансировать транзакцию Monero на шаге 6 и уйти, обеспеченный либо получением вашей доли ключа Monero (а через нее и закрытым ключом), либо доступом к Bitcoin в любое более позднее время.

Если вы или незнакомец не предпримете необходимых действий после того, как средства были зачислены, другая сторона всегда может либо вернуть свою исходную криптовалюту за вычетом комиссии, либо потребовать другую криптовалюту. Если вы публикуете Bitcoin на шаге 5, а незнакомец не публикует Monero на шаге 6, вы можете подождать, пока не пройдет срок завершения, и вернуть свои BTC. Если незнакомец публикует Monero на шаге 6, а вы не можете поставить подпись на шаге 7, он может подождать, пока вы вернете свои BTC и использовать открытую долю ключа, чтобы потребовать Monero (и если вы не вернете свои BTC, незнакомец может потребовать BTC после крайнего срока возврата, что является важным мотиватором). Если незнакомец не потребует Bitcoin на шаге 8, вы можете подождать, пока не истечет крайний срок для завершения, и вернуть свои монеты.

Преимущества и недостатки атомарных свопов BTC-XMR

Ориентированные на конфиденциальность криптовалюты, такие как Monero, не получают признания со стороны правительств во всем мире, поскольку обеспечивают расширенную защиту. Атомарные свопы помогут Monero стать такой же доступной, как и Bitcoin.

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

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

Кроме того, остаются открытыми вопросы относительно чистоты BTC в свопе, поскольку каждая монета имеет историю. Владельцы грязрных BTC будут стремиться обменять эти Bitcoin на Monero, и неясно, как отреагируют на это последние. Вполне возможно, что держатели Monero захотят изучить Bitcoin, опубликованный на шаге 5 описанного выше процесса, прежде чем продолжить обмен, что может привести к преобразованию и нарушению обмена.

Атомарные свопы в Monero используют сложные алгоритмы и замысловатые методы мотивации участников, но их можно понять. Концепция позволяет обменивать XMR на BTC без доверия.

Bitcoin широко доступен и ликвиден, и атомарные свопы с ним повысят доступность Monero для пользователей по всему миру. Monero имеет непрозрачный блокчейн, транзакции которого нелегко отследить, а атомарные свопы с ним улучшат конфиденциальность и свободу для пользователей Bitcoin.

Актуально