X-Git-Url: https://git.novaco.in/?p=electrum-server.git;a=blobdiff_plain;f=backends%2Fbitcoind%2Fdeserialize.py;fp=backends%2Fbitcoind%2Fdeserialize.py;h=7effb18f3b2b79e5d45b6b21b716e17d3f3b8ec7;hp=93ad4d42479a0d6301fcb2013884f0acc807c610;hb=d0439647dfc60efce32e0a13b0ec02428ba412cf;hpb=ce78ceeaab08527a924cdf92b90ce89e8db76c8b diff --git a/backends/bitcoind/deserialize.py b/backends/bitcoind/deserialize.py index 93ad4d4..7effb18 100644 --- a/backends/bitcoind/deserialize.py +++ b/backends/bitcoind/deserialize.py @@ -239,10 +239,11 @@ def parse_TxOut(vds, i): return d -def parse_Transaction(vds, is_coinbase): +def parse_Transaction(vds, is_coinbase, is_coinstake): d = {} start = vds.read_cursor d['version'] = vds.read_int32() + d['timestamp'] = vds.read_int32() n_vin = vds.read_compact_size() d['inputs'] = [] for i in xrange(n_vin): @@ -258,7 +259,8 @@ def parse_Transaction(vds, is_coinbase): # print("skipping strange tx output with zero value") # continue # if o['address'] != "None": - d['outputs'].append(o) + if not is_coinstake or i > 0: # first coinstake output + d['outputs'].append(o) # transaction doesn't make any sense d['lockTime'] = vds.read_uint32() return d @@ -376,13 +378,13 @@ def get_address_from_input_script(bytes): match2 = [ opcodes.OP_2, opcodes.OP_PUSHDATA4, opcodes.OP_PUSHDATA4, opcodes.OP_2, opcodes.OP_CHECKMULTISIG ] if match_decoded(dec2, match2): pubkeys = [ dec2[1][1].encode('hex'), dec2[2][1].encode('hex') ] - return pubkeys, signatures, hash_160_to_bc_address(hash_160(redeemScript), 5) + return pubkeys, signatures, hash_160_to_bc_address(hash_160(redeemScript), 20) # 2 of 3 match2 = [ opcodes.OP_2, opcodes.OP_PUSHDATA4, opcodes.OP_PUSHDATA4, opcodes.OP_PUSHDATA4, opcodes.OP_3, opcodes.OP_CHECKMULTISIG ] if match_decoded(dec2, match2): pubkeys = [ dec2[1][1].encode('hex'), dec2[2][1].encode('hex'), dec2[3][1].encode('hex') ] - return pubkeys, signatures, hash_160_to_bc_address(hash_160(redeemScript), 5) + return pubkeys, signatures, hash_160_to_bc_address(hash_160(redeemScript), 20) return [], [], None @@ -419,7 +421,7 @@ def get_address_from_output_script(bytes): # p2sh match = [ opcodes.OP_HASH160, opcodes.OP_PUSHDATA4, opcodes.OP_EQUAL ] if match_decoded(decoded, match): - addr = hash_160_to_bc_address(decoded[1][1],5) + addr = hash_160_to_bc_address(decoded[1][1],20) return addr return None