electrum

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

commit 8fc042ee224d0153c962e9b4987e3fc51c29d04b
parent cc2ef02c2bd345bdca38307e0c597f4f7a4536b6
Author: thomasv <thomasv@gitorious>
Date:   Thu, 15 Nov 2012 10:34:56 +0100

more fixes for the 0.6 servers

Diffstat:
Mlib/verifier.py | 4+++-
Mlib/wallet.py | 29++++++++++++++++++-----------
2 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/lib/verifier.py b/lib/verifier.py @@ -32,7 +32,7 @@ class WalletVerifier(threading.Thread): self.daemon = True self.config = config self.interface = interface - self.transactions = {} # monitored transactions + self.transactions = {} # requested verifications (with height sent by the requestor) self.interface.register_channel('verifier') self.verified_tx = config.get('verified_tx',{}) # height of verified tx @@ -52,10 +52,12 @@ class WalletVerifier(threading.Thread): if tx in self.transactions.keys(): return (self.local_height - self.verified_tx[tx] + 1) if tx in self.verified_tx else -1 else: + #print "verifier: tx not in list", tx return 0 def add(self, tx_hash, tx_height): """ add a transaction to the list of monitored transactions. """ + assert tx_height > 0 with self.lock: if tx_hash not in self.transactions.keys(): self.transactions[tx_hash] = tx_height diff --git a/lib/wallet.py b/lib/wallet.py @@ -550,6 +550,9 @@ class Wallet: with self.lock: self.transactions[tx_hash] = tx + tx_height = tx.get('height') + if tx_height>0: self.verifier.add(tx_hash, tx_height) + self.update_tx_outputs(tx_hash) self.save() @@ -890,18 +893,21 @@ class Wallet: def set_verifier(self, verifier): self.verifier = verifier - # set the timestamp for transactions that need it - for hist in self.history.values(): - if hist == ['*']: continue - for tx_hash, tx_height in hist: - tx = self.transactions.get(tx_hash) - if tx and not tx.get('timestamp'): - timestamp = self.verifier.get_timestamp(tx_height) - if timestamp: - self.set_tx_timestamp(tx_hash, timestamp) + for tx_hash, tx in self.transactions.items(): + tx_height = tx.get('height') + if tx_height <1: + print_error( "skipping", tx_hash, tx_height ) + continue + + if tx_height>0: + self.verifier.add(tx_hash, tx_height) + + # set the timestamp for transactions that need it + if tx and not tx.get('timestamp'): + timestamp = self.verifier.get_timestamp(tx_height) + if timestamp: + self.set_tx_timestamp(tx_hash, timestamp) - if tx_height>0: - self.verifier.add(tx_hash, tx_height) @@ -1123,6 +1129,7 @@ class WalletSynchronizer(threading.Thread): vds = deserialize.BCDataStream() vds.write(raw_tx.decode('hex')) d = deserialize.parse_Transaction(vds) + d['height'] = tx_height d['tx_hash'] = tx_hash d['timestamp'] = self.wallet.verifier.get_timestamp(tx_height) return d