sort signatures for multisig
This commit is contained in:
parent
66e1e2707d
commit
8e644a4dc8
|
@ -443,7 +443,9 @@ class Transaction:
|
|||
script += pubkey
|
||||
else:
|
||||
script = '00' # op_0
|
||||
for sig in signatures:
|
||||
for pubkey in pubkeys:
|
||||
sig = signatures.get(pubkey)
|
||||
if not sig: continue
|
||||
sig = sig + '01'
|
||||
script += op_push(len(sig)/2)
|
||||
script += sig
|
||||
|
@ -511,7 +513,7 @@ class Transaction:
|
|||
# add pubkeys
|
||||
txin["pubkeys"] = redeem_pubkeys
|
||||
# get list of already existing signatures
|
||||
signatures = txin.get("signatures",[])
|
||||
signatures = txin.get("signatures",{})
|
||||
# continue if this txin is complete
|
||||
if len(signatures) == num:
|
||||
continue
|
||||
|
@ -531,7 +533,9 @@ class Transaction:
|
|||
public_key = private_key.get_verifying_key()
|
||||
sig = private_key.sign_digest_deterministic( Hash( tx_for_sig.decode('hex') ), hashfunc=hashlib.sha256, sigencode = ecdsa.util.sigencode_der )
|
||||
assert public_key.verify_digest( sig, Hash( tx_for_sig.decode('hex') ), sigdecode = ecdsa.util.sigdecode_der)
|
||||
signatures.append( sig.encode('hex') )
|
||||
|
||||
# insert signature in the list
|
||||
signatures[pubkey] = sig.encode('hex')
|
||||
print_error("adding signature for", pubkey)
|
||||
|
||||
txin["signatures"] = signatures
|
||||
|
@ -572,7 +576,7 @@ class Transaction:
|
|||
pubkeys, signatures, address = get_address_from_input_script(scriptSig)
|
||||
else:
|
||||
pubkeys = []
|
||||
signatures = []
|
||||
signatures = {}
|
||||
address = None
|
||||
|
||||
d['address'] = address
|
||||
|
@ -681,7 +685,7 @@ class Transaction:
|
|||
'redeemScript':i.get('redeemScript'),
|
||||
'redeemPubkey':i.get('redeemPubkey'),
|
||||
'pubkeys':i.get('pubkeys'),
|
||||
'signatures':i.get('signatures',[]),
|
||||
'signatures':i.get('signatures',{}),
|
||||
}
|
||||
info.append(item)
|
||||
return info
|
||||
|
|
Loading…
Reference in New Issue