electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 90767c4b47832d718ebdeae3ef46d6c7bc764e81
parent 21bff48630f96688c508241106c5f11d00b510e2
Author: thomasv <thomasv@gitorious>
Date:   Wed,  4 Sep 2013 19:37:56 +0200

fix

Diffstat:
Mlib/wallet.py | 24++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/lib/wallet.py b/lib/wallet.py @@ -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 @@ -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) @@ -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 @@ -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: @@ -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