Short review of previously-proposed exotic SIGHASH types [combined summary]



Individual post summaries: Click here to read the original discussion on the bitcoin-dev mailing list

Published on: 2015-09-01T06:54:42+00:00


Summary:

In a bitcoin-dev email thread, Bryan Bishop provided a review of proposed and exotic SIGHASH types. Among them was the SIGHASH_MULTIPLE and petertodd's suggestion of SIGHASH_DONT_SIGN_TXID to make OP_CODESEPARATOR more useful. Another idea presented was the "meta sighash" which involves using code to build up the signature with OP_CODESEPARATOR. The email also included a digital signature attachment from Peter Todd.On August 30th, 2015, Bryan Bishop posted a message on bitcoin-dev regarding a proposal for new SIGHASH types. The proposed types include SIGHASH_WITHOUT_PREV_SCRIPTPUBKEY, SIGHASH_WITHOUT_PREV_VALUE, SIGHASH_WITHOUT_INPUT_TXID, SIGHASH_WITHOUT_INPUT_INDEX, SIGHASH_WITHOUT_INPUT_SEQUENCE, SIGHASH_WITHOUT_OUTPUT_SCRIPTPUBKEY, SIGHASH_WITHOUT_OUTPUT_VALUE, SIGHASH_WITHOUT_INPUTS, SIGHASH_WITHOUT_OUTPUTS, SIGHASH_WITHOUT_INPUT_SELF, SIGHASH_WITHOUT_OUTPUT_SELF, SIGHASH_WITHOUT_TX_VERSION, and SIGHASH_WITHOUT_TX_LOCKTIME. A link to the proposal can be found in the post. Another user thanks Bishop for his summary of the proposal but expresses concern that it may not allow for fine adjustment for each input and output separately, which raises questions about whether the proposal truly enables any seen or unforeseen use case of the CTransactionSignatureSerializer.There have been multiple previously-proposed and exotic SIGHASH types. Some of these include SIGHASH_MULTIPLE, SIGHASH_LIST, and SIGHASH_WITHINPUTVALUE, which were discussed on bitcointalk.org. Another proposed type is SIGHASH_NOINPUT, which is mentioned in a paper about the Lightning Network and also has commits on Github. There are also proposals for SIGHASH_NORMALIZED and SIGHASH_WITHOUT_PREV_SCRIPTPUBKEY. Furthermore, there have been suggestions for new types such as SIGHASH_SIGN_STACK_ELEMENT, SIGHASH_DONT_SIGN_TXID, SIGHASH_DANGEROUSLYPROMISCUOUS, SIGHASH_DOUBLE, SIGHASH_NLOCKTIMEVERIFY, SIGHASH_SUM, and even SIGHASH_UNICORN. These different types could potentially be useful for different purposes.


Updated on: 2023-08-01T15:51:47.413315+00:00