Состоянием на июль 2019 года существует порядка 2000 криптовалют, однако единого механизма обмена между разными блокчейнами нет. В этой статье мы упрощенно рассмотрим как устроена одна из технологий обмена без посредников — атомарные обмены (atomic swaps).
Приятного чтения!
Atomic Swaps: что это такое и с чем его едят?
Атомарные свопы — это серия транзакций на обих блокчейнах, которая позволяет обменять коины без участия третьей стороны и доверия ко второму участнику обмена. По сути, создается такая транзакция, выход которой можно потратить либо при наличии некого ключа, либо по истечении времени.
Не все блокчейны позволяют реализовать AtomicSwap. Есть два главных требования:
- поддержка смарт контрактов (генератор этой самой "начальной" транзакции);
- использование одной и той же криптомагии (хеш-функции).
Smart contracts — в широком смысле, "неприклонный" алгоритм, выполняющий действия при заведомо определенных условиях и никак иначе. В нашем случае смарт контракт можно расссматривать как большой черный ящик, которому скармливают адрес получателя, адрес отправителя, сумму отправки, время удержания денег и присваивают уникальный идентификаор (hash). На выходе получается желаемая транзакция с условиями.
Хеш-функция — еще один персонаж из сказки о высшей математике. Преобразовывает поток входных данных в другое значение. Одни и те же данные дают один и тот же результат. Как правило, входные данные это большое число, именуемое секреным ключем, а выходные — хешем. Преобразовать хеш обратно в секретный ключ — невозможно.
Когда все идет гладко
Рассмотрим обмен между Алисой(да, да, Алиса уже не та) и Бобом. У Алисы есть Bitcoin (btc), у Боба есть Ether (eth). Оба персонажа имеют адреса на обоих блокчейнах. Прм.: большие знаки криптовалют символизируют блокчейны.
Алиса генерирует ключ (большое число) и скромно никому его не сообщает:
На основе ключа она считает хеш:
Создает контракт с уникальным идентификатором равным хешу:
Отправляет на контракт деньги. Теперь она не может их тратить определенное время(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);
}
Алиса сообщает хеш Бобу. Теперь он может проаудировать (проверить) все поля контракта: убедиться в правильности адресов, сумме отправки, времени хранения денег на контракте(период втечении которого Алиса не сможет их снять):
Если все good, Боб создает конракт на втором блокчейне аналогичный Алисиному (с тем же идентификатором). Меняется получатель и, возможно сумма (если курс не 1 к 1).
Алиса аудирует контракт:
Если ее все утраивает, она создает транзакцию на Ethereum, которая тратит деньги на контракте Боба. Единственный способ это сделать — предоставить ключ. Теперь он известен:
Алиса получает eth:
Боб смотрит ключ и создает транзакцию, которая тратит деньги на контракте Алисы, воспользовавшись ее ключем:
Успех! Волки сыты, овцы целы!
Когда мир не идеален
Однако порой что-то может пойти не так. Есть два места, где обмен может сорваться. Для этого существует механизм, позволяющий вернуть деньги их законным обладателям.
Допустим Алиса как порядочная девушка отправила деньги на контракт, но Боб после аудита передумал расставаться с эфирами :
Алиса ждет истечения timelock, указаного в контракте (допустим, 48 часов) и возвращает кровные биточки:
Другая история рассказывает о переменчивой Алисе, которая не захотела продолжать атомарный обмен, после того как Боб создал контракт. Альтернативный сценарий: Алиса потеряла ключ и не может этого сделать:
Боб ждет время блокировки денег (оно обычно меньше Алисиного, чтобы Алиса не сняла деньги Боба в последнюю минуту, а потом не вернула свои; допустим 24 часа). Алиса возвращает свои деньги по истечению своего timelock.
Заключение
Атомарные обмены весьма удобны для обмена точка-точка, минуя биржи и посредников. Участники обязуются заплатить лишь комисию за отправку транзакций.
Подытожив, в обмене между А и C на блокчейнах Б1 и Б2 можно выделить такие шаги:
- инициализация контракта на Б1 участником А;
- аудирование контракта на Б1 участиком С;
- инициализация контракта на Б2 участником С;
- аудирование контракта на Б2 участиком А;
- предоставление ключа и снятие денег на Б2 участником А;
- получение ключа на Б2 участником С;
- снятие денег на Б1 участником С.
Технология новая, но уже активно внедряется. Возможно, в ближайшем будущем ей удастся заменить централизироанные и столь идеалогически чужие для блокчейна биржи.
Автор: KStasi