ZmnSCPxj [ARCHIVE] on Nostr: 📅 Original date posted:2018-05-02 📝 Original message: Good morning Christian, ...
📅 Original date posted:2018-05-02
📝 Original message:
Good morning Christian,
It seems to me we can remove the trigger transaction.
The observation is that `nSequence`-encumbered transactions are only settlement transactions and not any update transactions.
Thus, it is not needed for a trigger transaction to exist, if we can make update transactions behave as the trigger transaction for its settlement transaction or any later update transaction.
So, let me propose, that the funding transaction outpoint could have the below SCRIPT:
OP_IF
# Settlement branch
OP_FALSE
OP_ELSE
# Update branch. 500,000,000 is the minimum state number under Decker-Russell-Osuntokun.
500000000 OP_CHECKLOCKTIMEVERIFY
2 Au Bu 2 OP_CHECKMULTISIGVERIFY
OP_ENDIF
Thus, the funding outpoint can be spent directly by any update transaction, which has `<sigAu> <sigBu> OP_FALSE` at its `witness` script.
When creating a mutual close transaction, we simply use the update branch of the funding transaction above, again signing with `<sigAu> <sigBu> OP_FALSE`. This does have the drawback that the mutual close transaction can be RBFed away by an update transaction (requiring more code to handle this case); but the latest update transaction can still be published in that case and we simply devolve down to the usual unilateral close branch.
The drawback is that the mutual close transaction increases by 1 weight unit (the `OP_FALSE` in the `witness` script) plus the size of the more complicated funding transaction SCRIPT, which is no longer a regular 2-of-2 P2WSH and indelibly marking it as a Decker-Russel-Osuntokun mutual close. Taproot would help there by implicitly including a plain 2-of-2 fallback.
Finally, we could argue that the mutual close transaction is expected to be the more common case, so increasing its size by even a small amount may outweigh the size reduction in the much rarer unilateral close case.
Regards,
ZmnSCPxj
📝 Original message:
Good morning Christian,
It seems to me we can remove the trigger transaction.
The observation is that `nSequence`-encumbered transactions are only settlement transactions and not any update transactions.
Thus, it is not needed for a trigger transaction to exist, if we can make update transactions behave as the trigger transaction for its settlement transaction or any later update transaction.
So, let me propose, that the funding transaction outpoint could have the below SCRIPT:
OP_IF
# Settlement branch
OP_FALSE
OP_ELSE
# Update branch. 500,000,000 is the minimum state number under Decker-Russell-Osuntokun.
500000000 OP_CHECKLOCKTIMEVERIFY
2 Au Bu 2 OP_CHECKMULTISIGVERIFY
OP_ENDIF
Thus, the funding outpoint can be spent directly by any update transaction, which has `<sigAu> <sigBu> OP_FALSE` at its `witness` script.
When creating a mutual close transaction, we simply use the update branch of the funding transaction above, again signing with `<sigAu> <sigBu> OP_FALSE`. This does have the drawback that the mutual close transaction can be RBFed away by an update transaction (requiring more code to handle this case); but the latest update transaction can still be published in that case and we simply devolve down to the usual unilateral close branch.
The drawback is that the mutual close transaction increases by 1 weight unit (the `OP_FALSE` in the `witness` script) plus the size of the more complicated funding transaction SCRIPT, which is no longer a regular 2-of-2 P2WSH and indelibly marking it as a Decker-Russel-Osuntokun mutual close. Taproot would help there by implicitly including a plain 2-of-2 fallback.
Finally, we could argue that the mutual close transaction is expected to be the more common case, so increasing its size by even a small amount may outweigh the size reduction in the much rarer unilateral close case.
Regards,
ZmnSCPxj