Browse Source

wallet: move get_depending_transactions to AddressSynchronizer

and resolve TODO
3.2.x
SomberNight 7 years ago
parent
commit
f7166e95c4
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 8
      electrum/address_synchronizer.py
  2. 11
      electrum/wallet.py

8
electrum/address_synchronizer.py

@ -319,6 +319,14 @@ class AddressSynchronizer(PrintError):
self.txi.pop(tx_hash, None) self.txi.pop(tx_hash, None)
self.txo.pop(tx_hash, None) self.txo.pop(tx_hash, None)
def get_depending_transactions(self, tx_hash):
"""Returns all (grand-)children of tx_hash in this wallet."""
children = set()
for other_hash in self.spent_outpoints[tx_hash].values():
children.add(other_hash)
children |= self.get_depending_transactions(other_hash)
return children
def receive_tx_callback(self, tx_hash, tx, tx_height): def receive_tx_callback(self, tx_hash, tx, tx_height):
self.add_unverified_tx(tx_hash, tx_height) self.add_unverified_tx(tx_hash, tx_height)
self.add_transaction(tx_hash, tx, allow_unrelated=True) self.add_transaction(tx_hash, tx, allow_unrelated=True)

11
electrum/wallet.py

@ -1068,17 +1068,6 @@ class Abstract_Wallet(AddressSynchronizer):
index = self.get_address_index(addr) index = self.get_address_index(addr)
return self.keystore.decrypt_message(index, message, password) return self.keystore.decrypt_message(index, message, password)
def get_depending_transactions(self, tx_hash):
"""Returns all (grand-)children of tx_hash in this wallet."""
children = set()
# TODO rewrite this to use self.spent_outpoints
for other_hash, tx in self.transactions.items():
for input in (tx.inputs()):
if input["prevout_hash"] == tx_hash:
children.add(other_hash)
children |= self.get_depending_transactions(other_hash)
return children
def txin_value(self, txin): def txin_value(self, txin):
txid = txin['prevout_hash'] txid = txin['prevout_hash']
prev_n = txin['prevout_n'] prev_n = txin['prevout_n']

Loading…
Cancel
Save