Как можно реализовать атомарный обмен активами в блокчейне?

В настоящее время создаются не биткойнские блокчейны, которые используются для торговли и передачи активов. Насколько я понимаю, в такой цепочке блоков есть «токены», представляющие такие активы, как доля в компании или какая-либо другая ценная бумага.

Предполагая, что A хочет обменять с B некоторые активы, как они создадут транзакцию, чтобы обмен произошел атомарно?

Неатомарное решение состояло бы в том, чтобы А сначала передал активы, которые он продает, В. Затем B возвращает активы, которыми он расплачивается.

Транзакции с мультиподписью, похоже, не решают эту проблему: сначала должен подписать один из подписывающих (A). Он не может заставить B также подписать. B может прервать транзакцию или задержать ее. Это вопрос доверия, а не атомарный.

Для конкретного примера, A может захотеть обменять определенное доменное имя Namecoin на другое имя, принадлежащее B. Предполагается, что это будет ненадежным и атомарным.

Ответы (1)

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

Вот один из возможных более подробных эскизов:

  1. Каждый из A и B генерирует закрытый ключ, определяет соответствующий открытый ключ и обменивается ими.

  2. Каждый из A и B суммирует открытые ключи и хэширует их, чтобы сформировать общий адрес для транзакции.

  3. A и B образуют две транзакции. Один отправляет средства обратно в A, но имеет время блокировки в будущем. Другой отправляет средства B, если B предоставляет подтверждение выплаты средств B в пользу A.

  4. Каждая из них подписывает обе транзакции, и подписи суммируются, так что обе транзакции готовы к отправке. Никакие дополнительные транзакции для совместного адреса не могут быть подписаны, если A и B не договорятся.

  5. А отправляет свои средства на совместный адрес, сформированный на шаге 2. А знает, что она может получить свои средства обратно, когда истечет время блокировки, и что Б может получить средства только в том случае, если она предоставит доказательство платежа А.

  6. B отправляет средства A и представляет подтверждение платежа вместе с подписанной транзакцией, чтобы получить средства A. На этом оплата завершена.

  7. Если B не выполняет шаг 6, по истечении времени блокировки A отправляет подписанную транзакцию возврата, чтобы вернуть свои средства.