Browse Source

fix tx.get_value()

283
ecdsa 12 years ago
parent
commit
f0671a9ada
  1. 22
      lib/bitcoin.py

22
lib/bitcoin.py

@ -805,6 +805,7 @@ class Transaction:
# return the balance for that tx # return the balance for that tx
is_send = False is_send = False
is_pruned = False is_pruned = False
is_partial = False
v_in = v_out = v_out_mine = 0 v_in = v_out = v_out_mine = 0
for item in self.inputs: for item in self.inputs:
@ -818,7 +819,9 @@ class Transaction:
else: else:
v_in += value v_in += value
else: else:
is_pruned = True is_partial = True
if not is_send: is_partial = False
for item in self.outputs: for item in self.outputs:
addr, value = item addr, value = item
@ -826,11 +829,7 @@ class Transaction:
if addr in addresses: if addr in addresses:
v_out_mine += value v_out_mine += value
if not is_pruned: if is_pruned:
# all inputs are mine:
fee = v_out - v_in
v = v_out_mine - v_in
else:
# some inputs are mine: # some inputs are mine:
fee = None fee = None
if is_send: if is_send:
@ -839,6 +838,17 @@ class Transaction:
# no input is mine # no input is mine
v = v_out_mine v = v_out_mine
else:
v = v_out_mine - v_in
if is_partial:
# some inputs are mine, but not all
fee = None
is_send = v < 0
else:
# all inputs are mine
fee = v_out - v_in
return is_send, v, fee return is_send, v, fee
def as_dict(self): def as_dict(self):

Loading…
Cancel
Save