More thoughts on NOINPUT safety



Summary:

In a conversation between aj and ZmnSCPxj, a proposal to shorten the update transaction payout script was discussed. The proposed script includes IF, OP_CODESEPARATOR, OP_CHECKLOCKTIMEVERIFY, OP_DROP, ENDIF, OP_CHECKDLSVERIFY, and OP_CHECKDLS. With signing using NOINPUT, NOSCRIPT, and codeseparatorpos=1, CLTV is enforced and allows binding to any prior update tx. Meanwhile, signing with codeseparatorpos=-1 and NOINPUT but committing to the script code and nSequence (for the CSV delay) allows binding to only that update tx, which works for the settlement tx. However, the shared keys are different in the two branches above. The "update" branch uses the same constant A_u and B_u points while the "state commit" branch uses different A_si and B_si points depending on i (state/sequence number). Additionally, ZmnSCPxj expressed his confusion regarding OP_CODESEPARATOR.


Updated on: 2023-06-02T17:50:48.502487+00:00