Могу ли я доказать попытку двойного расходования с подписанной транзакцией с тем же вводом? [закрыто]

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

  • У Алисы 1 биткойн
  • У Боба 100 Fantasybit
  • Алиса обменяет 1 BTC на 100 FB Боба.

Шаг 1) Боб подписывает транзакцию Protoblock «Swap» (TX1a), содержащую неподписанную биткойн-транзакцию (TX1b), которая должна иметь 1. вход ScriptSig с p2pkh от Алисы (биткойн-адрес) и 2. выход p2pkh для Боба (биткойн-адрес). адрес)

Шаг 2) 100 FB бобов блокируются на 24 часа или до...

Шаг 3) видна транзакция Protoblock (TX2a), которая содержит подпись для TX1b и TXID (TX1a).

Шаг 4) 100 FB передаются Алисе и блокируются на 24 часа или до...

Шаг 5) видна транзакция Protoblock (TX3a), которая содержит подписанную биткойн-транзакцию (TX2b), которая имеет 1. те же входные данные ScriptSig с p2pkh от Алисы (биткойн-адрес), что и TX1b, и 2. выход, который НЕ является вывод p2pkh на bob(bitcoin-адрес)

Шаг 6) 100 FB отправляются обратно Бобу, в том же состоянии, что и до шага 1.


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

Однако Боб увидит, что Алиса потратила ввод, и создаст TX3a, который вернет ему его 100 Fantasybit. На самом деле, любой может следить за биткойнами и создавать TX3a как услугу для Боба.

Вопрос: есть ли способ, которым Алиса может использовать те же входные данные от TX1b, которые не будут обнаружены с помощью вышеуказанного алгоритма?

Примечание: биткойн-транзакция с выходами для входов TX1b будет создана программным обеспечением кошелька, выполняющим атомарный обмен. Поэтому Алисе сначала нужно будет отправить 1 биткойн самой себе, чтобы убедиться, что это простой p2pkh. Вот код Protoblock, который создает выходы p2pkh и биткойн tx:

https://github.com/SatoshiFantasy/--skillSale/blob/4e59f50b7555527046804418d6483b0df1933637/share/fantasybit-core/FantasyAgent.cpp#L444

https://github.com/SatoshiFantasy/--skillSale/blob/4e59f50b7555527046804418d6483b0df1933637/share/fantasybit-core/FantasyAgent.cpp#L525

Ответы (1)

Никакие атомарные свопы по определению не являются атомарными, что означает, что либо есть своп, и обе стороны выкупают монеты, либо нет. Я предлагаю вам заглянуть в репозиторий Decred, чтобы понять механику свопа.

используется термин «атомарный» обмен, хотя он и не является атомарным. Бьюсь об заклад, decred такой же «атомарный», я посмотрю… в любом случае, но вопрос, который я задаю, касается двойного расхода и могут ли быть доказательства потраченного ввода.
decred использует стандартную технику тайм-аута, которая (я полагаю) требует, чтобы одна сторона снова переместила монеты, иначе своп не пройдет