В настоящее время создаются не биткойнские блокчейны, которые используются для торговли и передачи активов. Насколько я понимаю, в такой цепочке блоков есть «токены», представляющие такие активы, как доля в компании или какая-либо другая ценная бумага.
Предполагая, что A хочет обменять с B некоторые активы, как они создадут транзакцию, чтобы обмен произошел атомарно?
Неатомарное решение состояло бы в том, чтобы А сначала передал активы, которые он продает, В. Затем B возвращает активы, которыми он расплачивается.
Транзакции с мультиподписью, похоже, не решают эту проблему: сначала должен подписать один из подписывающих (A). Он не может заставить B также подписать. B может прервать транзакцию или задержать ее. Это вопрос доверия, а не атомарный.
Для конкретного примера, A может захотеть обменять определенное доменное имя Namecoin на другое имя, принадлежащее B. Предполагается, что это будет ненадежным и атомарным.
Основная идея заключается в том, что одна сторона производит платеж таким образом, что средства возвращаются к ней, если другая сторона не совершает другой платеж, и в этом случае другая сторона получает эти средства. Затем другая сторона может произвести платеж и потребовать результат первого платежа.
Вот один из возможных более подробных эскизов:
Каждый из A и B генерирует закрытый ключ, определяет соответствующий открытый ключ и обменивается ими.
Каждый из A и B суммирует открытые ключи и хэширует их, чтобы сформировать общий адрес для транзакции.
A и B образуют две транзакции. Один отправляет средства обратно в A, но имеет время блокировки в будущем. Другой отправляет средства B, если B предоставляет подтверждение выплаты средств B в пользу A.
Каждая из них подписывает обе транзакции, и подписи суммируются, так что обе транзакции готовы к отправке. Никакие дополнительные транзакции для совместного адреса не могут быть подписаны, если A и B не договорятся.
А отправляет свои средства на совместный адрес, сформированный на шаге 2. А знает, что она может получить свои средства обратно, когда истечет время блокировки, и что Б может получить средства только в том случае, если она предоставит доказательство платежа А.
B отправляет средства A и представляет подтверждение платежа вместе с подписанной транзакцией, чтобы получить средства A. На этом оплата завершена.
Если B не выполняет шаг 6, по истечении времени блокировки A отправляет подписанную транзакцию возврата, чтобы вернуть свои средства.