Из предлагаемых выходов HTLC,
# To remote node with revocation key
OP_DUP OP_HASH160 <RIPEMD160(SHA256(revocationpubkey))> OP_EQUAL
OP_IF
OP_CHECKSIG
OP_ELSE
<remote_htlcpubkey> OP_SWAP OP_SIZE 32 OP_EQUAL
OP_NOTIF
# To local node via HTLC-timeout transaction (timelocked).
OP_DROP 2 OP_SWAP <local_htlcpubkey> 2 OP_CHECKMULTISIG
OP_ELSE
# To remote node with preimage.
OP_HASH160 <RIPEMD160(payment_hash)> OP_EQUALVERIFY
OP_CHECKSIG
OP_ENDIF
OP_ENDIF
При следующих условиях,
locktime
устанавливается равным 600900 в транзакции HTLC-Timeout.payment_secret
.Насколько я понимаю, для тайм-аута последней транзакции фиксации локальный узел должен,
Между тем, удаленный узел также payment_secret
может провести транзакцию фиксации. Приведет ли это к состоянию гонки/двойной трате в сети Биткойн? Если да, то как это можно решить?
Прежде всего, я думаю, что есть небольшая путаница в обозначениях. Вы не тратите транзакцию, а выводит транзакцию. В случае предлагаемых htlcs вывод является только одним (из потенциально многих других) выходом.
Также я понимаю, что таймлок немного отличается. Если вы опубликуете коммит-транзакцию, ее можно будет добыть и проверить напрямую. Это выход с временной блокировкой, например, htlc, который можно потратить только после блокировки по времени.
Что касается условий гонки / двойной траты. Прежде всего, двойные траты в биткойнах невозможны по замыслу (если только у нас нет неизвестного эксплойта), поэтому мы можем свести это к вопросу о состоянии гонки. Здесь мы должны различать два случая:
yyforyongyu
Субхра Мазумдар
Янус Трельсен