From the offered HTLC Outputs,
# 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
With the following conditions,
locktimeis set to be 600900 in the HTLC-Timeout transaction.
- the remote node has the
- the local node wants to timeout the latest commitment transaction.
From my understanding, to timeout the latest commitment transaction, the local node has to,
- broadcast the commitment transaction at blockheight 600900;
- immediately broadcast the HTLC-Timeout transaction;
- wait a few days to spend the HTLC-Timeout transaction once the specified timelock value has passed.
Meanwhile, the remote node with the
payment_secret can spend the commitment transaction too. Will this cause a race condition/double spend in the Bitcoin network? If so, how can it be resolve?