sort signatures for multisig
This commit is contained in:
parent
66e1e2707d
commit
8e644a4dc8
|
@ -443,7 +443,9 @@ class Transaction:
|
||||||
script += pubkey
|
script += pubkey
|
||||||
else:
|
else:
|
||||||
script = '00' # op_0
|
script = '00' # op_0
|
||||||
for sig in signatures:
|
for pubkey in pubkeys:
|
||||||
|
sig = signatures.get(pubkey)
|
||||||
|
if not sig: continue
|
||||||
sig = sig + '01'
|
sig = sig + '01'
|
||||||
script += op_push(len(sig)/2)
|
script += op_push(len(sig)/2)
|
||||||
script += sig
|
script += sig
|
||||||
|
@ -511,7 +513,7 @@ class Transaction:
|
||||||
# add pubkeys
|
# add pubkeys
|
||||||
txin["pubkeys"] = redeem_pubkeys
|
txin["pubkeys"] = redeem_pubkeys
|
||||||
# get list of already existing signatures
|
# get list of already existing signatures
|
||||||
signatures = txin.get("signatures",[])
|
signatures = txin.get("signatures",{})
|
||||||
# continue if this txin is complete
|
# continue if this txin is complete
|
||||||
if len(signatures) == num:
|
if len(signatures) == num:
|
||||||
continue
|
continue
|
||||||
|
@ -531,7 +533,9 @@ class Transaction:
|
||||||
public_key = private_key.get_verifying_key()
|
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 )
|
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)
|
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)
|
print_error("adding signature for", pubkey)
|
||||||
|
|
||||||
txin["signatures"] = signatures
|
txin["signatures"] = signatures
|
||||||
|
@ -572,7 +576,7 @@ class Transaction:
|
||||||
pubkeys, signatures, address = get_address_from_input_script(scriptSig)
|
pubkeys, signatures, address = get_address_from_input_script(scriptSig)
|
||||||
else:
|
else:
|
||||||
pubkeys = []
|
pubkeys = []
|
||||||
signatures = []
|
signatures = {}
|
||||||
address = None
|
address = None
|
||||||
|
|
||||||
d['address'] = address
|
d['address'] = address
|
||||||
|
@ -681,7 +685,7 @@ class Transaction:
|
||||||
'redeemScript':i.get('redeemScript'),
|
'redeemScript':i.get('redeemScript'),
|
||||||
'redeemPubkey':i.get('redeemPubkey'),
|
'redeemPubkey':i.get('redeemPubkey'),
|
||||||
'pubkeys':i.get('pubkeys'),
|
'pubkeys':i.get('pubkeys'),
|
||||||
'signatures':i.get('signatures',[]),
|
'signatures':i.get('signatures',{}),
|
||||||
}
|
}
|
||||||
info.append(item)
|
info.append(item)
|
||||||
return info
|
return info
|
||||||
|
|
Loading…
Reference in New Issue