@classmethod
def serialize( klass, inputs, outputs, for_sig = None ):
+ push_script = lambda x: op_push(len(x)/2) + x
s = int_to_hex(1,4) # version
s += var_int( len(inputs) ) # number of inputs
for i in range(len(inputs)):
if for_sig is None:
signatures = txin['signatures']
pubkeys = txin['pubkeys']
+ sig_list = ''
+ for pubkey in pubkeys:
+ sig = signatures.get(pubkey)
+ if not sig:
+ continue
+ sig = sig + '01'
+ sig_list += push_script(sig)
+
if not txin.get('redeemScript'):
- pubkey = pubkeys[0]
- script = ''
- if signatures:
- sig = signatures[0]
- sig = sig + '01' # hashtype
- script += op_push(len(sig)/2)
- script += sig
- script += op_push(len(pubkey)/2)
- script += pubkey
+ script = sig_list
+ script += push_script(pubkeys[0])
else:
script = '00' # op_0
- for pubkey in pubkeys:
- sig = signatures.get(pubkey)
- if not sig: continue
- sig = sig + '01'
- script += op_push(len(sig)/2)
- script += sig
-
+ script += sig_list
redeem_script = klass.multisig_script(pubkeys,2)
- script += op_push(len(redeem_script)/2)
- script += redeem_script
+ assert redeem_script == txin.get('redeemScript')
+ script += push_script(redeem_script)
elif for_sig==i:
if txin.get('redeemScript'):