LearnBitcoin

Bitcoin Dev Archive 2015

Short review of previously-proposed exotic SIGHASH types

3 messages, 30 Aug to 1 Sep 2015. Started by Bryan Bishop.

Bryan Bishop, Johnson Lau, Peter Todd

Permalink Original thread on gnusha.org

Bryan Bishop permalink original

Here is a short review of previously-proposed and exotic SIGHASH types.

SIGHASH_MULTIPLE SIGHASH_LIST: https://bitcointalk.org/index.php?topic=252960.0 https://bitcointalk.org/index.php?topic=212555.0

SIGHASH_MULTIPLE SIGHASH_WITHINPUTVALUE: https://bitcointalk.org/index.php?topic=191003.0

SIGHASH_WITHINPUTVALUE: http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-January/007185.html

SIGHASH_NOINPUT: https://github.com/Roasbeef/bitcoin/commit/4b3c3f1baf7985208ceb6887261ee150ab6e3328 https://github.com/Roasbeef/btcd/commit/67830e506fa135d5239177340918cea39909e6a4 http://lightning.network/lightning-network-paper.pdf

SIGHASH_NORMALIZED SIGHASH_NOINPUT: http://diyhpl.us/wiki/transcripts/sf-bitcoin-meetup/2015-02-23-scaling-bitcoin-to-billions-of-transactions-per-day/

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 SIGHASH_WITHOUT_TX_LOCKTIME SIGHASH_SIGN_STACK_ELEMENT: https://github.com/scmorse/bitcoin-misc/blob/master/sighash_proposal.md

Similarly, petertodd has asked for a SIGHASH_DONT_SIGN_TXID before to make OP_CODESEPARATOR more useful.

SIGHASH_DANGEROUSLYPROMISCUOUS: http://gnusha.org/bitcoin-wizards/2015-04-17.log

SIGHASH_DOUBLE: 06:41 < lorenzoasr> maybe a SIGHASH_DOUBLE that signs INPUT[i] and OUTPUT[i] and OUTPUT[i+1] could be very helpful

Some sighash types briefly proposed by petertodd in #bitcoin-dev: SIGHASH_NLOCKTIMEVERIFY SIGHASH_SUM (for merging multiple payments)

And finally one from wumpus (#bitcoin-dev): SIGHASH_UNICORN

- Bryan http://heybryan.org/ 1 512 203 0507

Johnson Lau in reply to Bryan Bishop permalink original

Bryan Bishop via bitcoin-dev 於 2015-08-30 14:56 寫到:

Quoted text (17 lines)
>
> 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
> SIGHASH_WITHOUT_TX_LOCKTIME
> SIGHASH_SIGN_STACK_ELEMENT:
> https://github.com/scmorse/bitcoin-misc/blob/master/sighash_proposal.md
>

Thanks for your summary. This one seems particularly interesting. However, it does not allow fine adjustment for each input and output separately, so I wonder if it really "fully enable any seen or unforseen use case of the CTransactionSignatureSerializer." as it claims.

Peter Todd in reply to Bryan Bishop permalink original

On Sun, Aug 30, 2015 at 01:56:34PM -0500, Bryan Bishop via bitcoin-dev wrote:

Quoted text (5 lines)
> Here is a short review of previously-proposed and exotic SIGHASH types.
>
> SIGHASH_MULTIPLE
> Similarly, petertodd has asked for a SIGHASH_DONT_SIGN_TXID before to
> make OP_CODESEPARATOR more useful.

There's also my "meta sighash" idea of using code to build up the signature with OP_CODESEPARATOR:

http://www.mail-archive.com/bitcoin-development@lists.sourceforge.net/msg07384.html