tfix - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 90767c4b47832d718ebdeae3ef46d6c7bc764e81 DIR parent 21bff48630f96688c508241106c5f11d00b510e2 HTML Author: thomasv <thomasv@gitorious> Date: Wed, 4 Sep 2013 19:37:56 +0200 fix Diffstat: M lib/wallet.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) --- DIR diff --git a/lib/wallet.py b/lib/wallet.py t@@ -167,14 +167,20 @@ class Wallet: self.transactions = {} tx_list = self.storage.get('transactions',{}) for k,v in tx_list.items(): - tx = Transaction(v) try: tx = Transaction(v) except: print_msg("Warning: Cannot deserialize transactions. skipping") continue - self.add_transaction(tx) + self.add_extra_addresses(tx) + self.transactions[k] = tx + + for h,tx in self.transactions.items(): + if not self.check_new_tx(h, tx): + print_error("removing unreferenced tx", h) + self.transactions.pop(h) + # not saved self.prevout_values = {} # my own transaction outputs t@@ -196,7 +202,7 @@ class Wallet: self.update_tx_outputs(tx_hash) - def add_transaction(self, tx): + def add_extra_addresses(self, tx): h = tx.hash() # find the address corresponding to pay-to-pubkey inputs tx.add_extra_addresses(self.transactions) t@@ -205,12 +211,6 @@ class Wallet: for tx2 in self.transactions.values(): tx2.add_extra_addresses({h:tx}) - if self.check_new_tx(h, tx): - self.transactions[h] = tx - return True - else: - print_error("unreferenced tx", tx_hash) - return False t@@ -1021,11 +1021,12 @@ class Wallet: def receive_tx_callback(self, tx_hash, tx, tx_height): with self.transaction_lock: - if not self.add_transaction(tx): + self.add_extra_addresses(tx) + if not self.check_new_tx(tx_hash, tx): # may happen due to pruning print_error("received transaction that is no longer referenced in history", tx_hash) return - + self.transactions[tx_hash] = tx self.interface.pending_transactions_for_notifications.append(tx) self.save_transactions() if self.verifier and tx_height>0: t@@ -1337,7 +1338,6 @@ class Wallet: # 2 check that referencing addresses are in the tx for addr in addresses: if not tx.has_address(addr): - print "z", addr, tx.inputs return False return True