- PVSM.RU - https://www.pvsm.ru -

Atomic Swaps In A Nutshell

Состоянием на июль 2019 года существует порядка 2000 криптовалют, однако единого механизма обмена между разными блокчейнами нет. В этой статье мы упрощенно рассмотрим как устроена одна из технологий обмена без посредников — атомарные обмены (atomic swaps).
Приятного чтения!

logo

Atomic Swaps: что это такое и с чем его едят?

Атомарные свопы — это серия транзакций на обих блокчейнах, которая позволяет обменять коины без участия третьей стороны и доверия ко второму участнику обмена. По сути, создается такая транзакция, выход которой можно потратить либо при наличии некого ключа, либо по истечении времени.
Не все блокчейны позволяют реализовать AtomicSwap. Есть два главных требования:

  • поддержка смарт контрактов (генератор этой самой "начальной" транзакции);
  • использование одной и той же криптомагии (хеш-функции).

Смарт контракты? Не, не слышали

Smart contracts — в широком смысле, "неприклонный" алгоритм, выполняющий действия при заведомо определенных условиях и никак иначе. В нашем случае смарт контракт можно расссматривать как большой черный ящик, которому скармливают адрес получателя, адрес отправителя, сумму отправки, время удержания денег и присваивают уникальный идентификаор (hash). На выходе получается желаемая транзакция с условиями.

Хеш и его друзья

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

Когда все идет гладко

Рассмотрим обмен между Алисой(да, да, Алиса уже не та) и Бобом. У Алисы есть Bitcoin (btc), у Боба есть Ether (eth). Оба персонажа имеют адреса на обоих блокчейнах. Прм.: большие знаки криптовалют символизируют блокчейны.

Atomic Swaps In A Nutshell - 2

Алиса генерирует ключ (большое число) и скромно никому его не сообщает:

Atomic Swaps In A Nutshell - 3

На основе ключа она считает хеш:

Atomic Swaps In A Nutshell - 4

Создает контракт с уникальным идентификатором равным хешу:

Atomic Swaps In A Nutshell - 5

Отправляет на контракт деньги. Теперь она не может их тратить определенное время(timelock):

Время истекло, или timelock

Timelock — время, после которого создатель контракта сможет вернуть деньги, если отправит транзакцию определенного типа (назовем ее "refund"). Для этой транзакции не нужен секретный ключ. Другой пользователь может снять деньги на адресс указаного в контракте получателя(важно: не на свой), если отправит транзакцию другого типа(назовем ее redeem) с указанием секретного ключа.

В целом механизм обработки транзакций контрактом следующий:

if (transaction_type == "refund"  and sender == contract_creater and timelock < now()) {
     send_to(creator_address);
} else if (transaction_type == "redeem"  and hash(secret_key) == contract_id) {
   send_to(receiver_address);
}

Atomic Swaps In A Nutshell - 6

Алиса сообщает хеш Бобу. Теперь он может проаудировать (проверить) все поля контракта: убедиться в правильности адресов, сумме отправки, времени хранения денег на контракте(период втечении которого Алиса не сможет их снять):

Atomic Swaps In A Nutshell - 7

Если все good, Боб создает конракт на втором блокчейне аналогичный Алисиному (с тем же идентификатором). Меняется получатель и, возможно сумма (если курс не 1 к 1).

Atomic Swaps In A Nutshell - 8

Алиса аудирует контракт:

Atomic Swaps In A Nutshell - 9

Если ее все утраивает, она создает транзакцию на Ethereum, которая тратит деньги на контракте Боба. Единственный способ это сделать — предоставить ключ. Теперь он известен:

Atomic Swaps In A Nutshell - 10

Алиса получает eth:

Atomic Swaps In A Nutshell - 11

Боб смотрит ключ и создает транзакцию, которая тратит деньги на контракте Алисы, воспользовавшись ее ключем:

Atomic Swaps In A Nutshell - 12

Успех! Волки сыты, овцы целы!

Когда мир не идеален

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

Допустим Алиса как порядочная девушка отправила деньги на контракт, но Боб после аудита передумал расставаться с эфирами :

Atomic Swaps In A Nutshell - 13

Алиса ждет истечения timelock, указаного в контракте (допустим, 48 часов) и возвращает кровные биточки:

Atomic Swaps In A Nutshell - 14

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

Atomic Swaps In A Nutshell - 15

Боб ждет время блокировки денег (оно обычно меньше Алисиного, чтобы Алиса не сняла деньги Боба в последнюю минуту, а потом не вернула свои; допустим 24 часа). Алиса возвращает свои деньги по истечению своего timelock.

Atomic Swaps In A Nutshell - 16

Заключение

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

Подытожив, в обмене между А и C на блокчейнах Б1 и Б2 можно выделить такие шаги:

  1. инициализация контракта на Б1 участником А;
  2. аудирование контракта на Б1 участиком С;
  3. инициализация контракта на Б2 участником С;
  4. аудирование контракта на Б2 участиком А;
  5. предоставление ключа и снятие денег на Б2 участником А;
  6. получение ключа на Б2 участником С;
  7. снятие денег на Б1 участником С.

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

Автор: KStasi

Источник [1]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/prosto-o-slozhnom/322782

Ссылки в тексте:

[1] Источник: https://habr.com/ru/post/458646/?utm_source=habrahabr&utm_medium=rss&utm_campaign=458646