More thoughts on NOINPUT safety



Summary:

In a recent email exchange, ZmnSCPxj and AJ Towns discussed the process of signing in Bitcoin's Script language for Taproot. The discussion revolved around how to enforce CheckLockTimeVerify (CLTV) when updating transactions. AJ Towns suggested using OP_CODESEPARATOR to distinguish between update transactions and settlement transactions. If committing to the script code, only one key is required as each settlement signature is already usable with the corresponding update transaction. However, if not committing to the script code, separate keys are necessary to prevent any settlement transaction from being used with any update transaction. If codeseparator is too complicated, an alternative approach is to always require locktime and have update transactions set their timelock while settlement transactions set an absolute or relative timelock via sequence and commit to the script code.


Updated on: 2023-05-20T20:04:21.800473+00:00