optimized deserialize and modified assert for multisig

This commit is contained in:
Tafelpoot 2014-10-30 11:50:18 +01:00
parent cf1fbbf3ad
commit bc8f58104c
1 changed files with 5 additions and 11 deletions

View File

@ -466,9 +466,7 @@ def parse_output(vds, i):
d = {} d = {}
d['value'] = vds.read_int64() d['value'] = vds.read_int64()
scriptPubKey = vds.read_bytes(vds.read_compact_size()) scriptPubKey = vds.read_bytes(vds.read_compact_size())
type, address = get_address_from_output_script(scriptPubKey) d['type'], d['address'] = get_address_from_output_script(scriptPubKey)
d['type'] = type
d['address'] = address
d['scriptPubKey'] = scriptPubKey.encode('hex') d['scriptPubKey'] = scriptPubKey.encode('hex')
d['prevout_n'] = i d['prevout_n'] = i
return d return d
@ -481,13 +479,9 @@ def deserialize(raw):
start = vds.read_cursor start = vds.read_cursor
d['version'] = vds.read_int32() d['version'] = vds.read_int32()
n_vin = vds.read_compact_size() n_vin = vds.read_compact_size()
d['inputs'] = [] d['inputs'] = list(parse_input(vds) for i in xrange(n_vin))
for i in xrange(n_vin):
d['inputs'].append(parse_input(vds))
n_vout = vds.read_compact_size() n_vout = vds.read_compact_size()
d['outputs'] = [] d['outputs'] = list(parse_output(vds,i) for i in xrange(n_vin))
for i in xrange(n_vout):
d['outputs'].append(parse_output(vds, i))
d['lockTime'] = vds.read_uint32() d['lockTime'] = vds.read_uint32()
return d return d
@ -553,8 +547,8 @@ class Transaction:
def multisig_script(klass, public_keys, num=None): def multisig_script(klass, public_keys, num=None):
n = len(public_keys) n = len(public_keys)
if num is None: num = n if num is None: num = n
# supports only "2 of 2", and "2 of 3" transactions
assert num <= n and n in [2,3] assert num <= n and n in [2,3] , 'Only "2 of 2", and "2 of 3" transactions are supported'
if num==2: if num==2:
s = '52' s = '52'