summaryrefslogtreecommitdiff
path: root/bip-0174.mediawiki
diff options
context:
space:
mode:
authorLuke Dashjr <luke_github1@dashjr.org>2019-07-23 14:51:01 +0000
committerGitHub <noreply@github.com>2019-07-23 14:51:01 +0000
commit6a25c1478fa54fc873a3530c60841d8c5cd6c3d5 (patch)
tree466ff3c0712b5af591ec47a6671306556305a481 /bip-0174.mediawiki
parent095087bed075543689b4bd80a752e2652e869ec8 (diff)
parent97447f981fb9e2b0c4c0c8c095464c4dbd91da29 (diff)
downloadbips-6a25c1478fa54fc873a3530c60841d8c5cd6c3d5.tar.xz
Merge pull request #800 from junderw/junderw-patch-1
BIP174: Include suggested sighash check
Diffstat (limited to 'bip-0174.mediawiki')
-rw-r--r--bip-0174.mediawiki14
1 files changed, 10 insertions, 4 deletions
diff --git a/bip-0174.mediawiki b/bip-0174.mediawiki
index 1dc3b47..b4a6407 100644
--- a/bip-0174.mediawiki
+++ b/bip-0174.mediawiki
@@ -325,6 +325,8 @@ For a Signer to only produce valid signatures for what it expects to sign, it mu
* If a witness UTXO is provided, no non-witness signature may be created
* If a redeemScript is provided, the scriptPubKey must be for that redeemScript
* If a witnessScript is provided, the scriptPubKey or the redeemScript must be for that witnessScript
+* If a sighash type is provided, the signer must check that the sighash is acceptable. If unacceptable, they must fail.
+* If a sighash type is not provided, the signer should sign using SIGHASH_ALL, but may use any sighash type they wish.
=====Simple Signer Algorithm=====
@@ -332,13 +334,17 @@ A simple signer can use the following algorithm to determine what and how to sig
<pre>
sign_witness(script_code, i):
- for key in psbt.inputs[i].keys:
- if IsMine(key):
+ for key, sighash_type in psbt.inputs[i].items:
+ if sighash_type == None:
+ sighash_type = SIGHASH_ALL
+ if IsMine(key) and IsAcceptable(sighash_type):
sign(witness_sighash(script_code, i, input))
sign_non_witness(script_code, i):
- for key in psbt.inputs[i].keys:
- if IsMine(key):
+ for key, sighash_type in psbt.inputs[i].items:
+ if sighash_type == None:
+ sighash_type = SIGHASH_ALL
+ if IsMine(key) and IsAcceptable(sighash_type):
sign(non_witness_sighash(script_code, i, input))
for input,i in enumerate(psbt.inputs):