d['prevout_n'] = vds.read_uint32()
scriptSig = vds.read_bytes(vds.read_compact_size())
d['sequence'] = vds.read_uint32()
- d['address'] = extract_public_key(scriptSig)
- #d['script'] = decode_script(scriptSig)
+ # actually I don't need that at all
+ # if not is_coinbase: d['address'] = extract_public_key(scriptSig)
+ # d['script'] = decode_script(scriptSig)
return d
return d
-def parse_Transaction(vds):
+def parse_Transaction(vds, is_coinbase):
d = {}
start = vds.read_cursor
d['version'] = vds.read_int32()
n_vin = vds.read_compact_size()
d['inputs'] = []
for i in xrange(n_vin):
- d['inputs'].append(parse_TxIn(vds))
+ o = parse_TxIn(vds)
+ if not is_coinbase:
+ d['inputs'].append(o)
n_vout = vds.read_compact_size()
d['outputs'] = []
for i in xrange(n_vout):
- d['outputs'].append(parse_TxOut(vds, i))
+ o = parse_TxOut(vds, i)
+
+ #if o['address'] == "None" and o['value']==0:
+ # print("skipping strange tx output with zero value")
+ # continue
+ # if o['address'] != "None":
+ d['outputs'].append(o)
+
d['lockTime'] = vds.read_uint32()
return d
if match_decoded(decoded, match):
return public_key_to_bc_address(decoded[0][1])
+ # coins sent to black hole
+ # DUP HASH160 20 BYTES:... EQUALVERIFY CHECKSIG
+ match = [ opcodes.OP_DUP, opcodes.OP_HASH160, opcodes.OP_0, opcodes.OP_EQUALVERIFY, opcodes.OP_CHECKSIG ]
+ if match_decoded(decoded, match):
+ return "None"
+
# Pay-by-Bitcoin-address TxOuts look like:
# DUP HASH160 20 BYTES:... EQUALVERIFY CHECKSIG
match = [ opcodes.OP_DUP, opcodes.OP_HASH160, opcodes.OP_PUSHDATA4, opcodes.OP_EQUALVERIFY, opcodes.OP_CHECKSIG ]
if match_decoded(decoded, match):
return hash_160_to_bc_address(decoded[2][1])
- return "(None)"
+ # strange tx
+ match = [ opcodes.OP_DUP, opcodes.OP_HASH160, opcodes.OP_PUSHDATA4, opcodes.OP_EQUALVERIFY, opcodes.OP_CHECKSIG, opcodes.OP_NOP ]
+ if match_decoded(decoded, match):
+ return hash_160_to_bc_address(decoded[2][1])
+
+ #raise BaseException("address not found in script") see ce35795fb64c268a52324b884793b3165233b1e6d678ccaadf760628ec34d76b
+ return "None"