diff --git a/chapters/signatures.adoc b/chapters/signatures.adoc index f88da0c4..3e9b4e6a 100644 --- a/chapters/signatures.adoc +++ b/chapters/signatures.adoc @@ -228,12 +228,31 @@ of signature, the uneconomical UTXOs can be donated for anyone to aggregate and spend whenever they want. ((("Bitmask Sighash Modes")))There are some proposals to modify or -expand the +SIGHASH+ system. One such proposal is _Bitmask Sighash -Modes_ by Blockstream's Glenn Willen, as part of the Elements project. -This aims to create a flexible replacement for +SIGHASH+ types that -allows "arbitrary, miner-rewritable bitmasks of inputs and outputs" that -can express "more complex contractual precommitment schemes, such as -signed offers with change in a distributed asset exchange." +expand the +SIGHASH+ system. The most widely discussed proposal as of +this writing is BIP118, which proposes to add two +new sighash flags. A signature using +SIGHASH_ANYPREVOUT+ would not +commit to an input's outpoint field, allowing it to be used to spend any +previous output for a particular witness program. For example, if Alice +receives two outputs for the same amount to the same witness program +(e.g. requiring a single signature from her wallet), a ++SIGHASH_ANYPREVOUT+ signature for spending either one of those outputs +could be copied and used to spend the other output to the same +destination. + +A signature using +SIGHASH_ANYPREVOUTANYSCRIPT+ would not +commit to the outpoint, the amount, the witness program, or that +tapleaf_hash used, allowing it to be used to spend any previous output +which the signature could satisfy. For example, if Alice received two +outputs for different amounts and different witness programs (e.g. one +requiring a single signature and another require her signature plus some +other data), a +SIGHASH_ANYPREVOUTANYSCRIPT+ signature for spending +either one of those outputs could be copied and used to spend the other +output to the same destination (assuming the extra data for the second +output was known). + +The main expected use for the two SIGHASH_ANYPREVOUT opcodes is improved +payment channels, such as those used in the Lightning Network, although +several other uses have been described. [NOTE] ====