Author: ZmnSCPxj 2019-10-03 03:07:55
Published on: 2019-10-03T03:07:55+00:00
The proposal suggests removing `SIGHASH` from signatures and putting it on public keys. The nonexistence of the sighash byte implies `SIGHASH_ALL`. Key path spends may still include sighashes, making the behavior a little confusingly different between signing for key path and script path spends. This removes problems with `SIGHASH_NONE` and `SIGHASH_SINGLE`, as they are allowed only if the output specifically says they are allowed. As the existing sighashes are not particularly used anyway, additional restrictions on them are relatively immaterial. A transaction spending UTXO "U" to address "A" is something like: "script" lets you enforce conditions on the transaction when you create "A", "sighash" lets you enforce conditions on the transaction when you sign the transaction, nlocktime, nsequence, taproot annex are ways you express conditions on the transaction. Sighash is an extremely simple scripting language itself, with a total of six possible scripts. Only one of the scripts is widely used, another has an edge use it sucks at (assurance contracts). It does not seem to be good design, rather legacy cruft.
Updated on: 2023-06-02T20:29:47.684534+00:00