Browse Source

fix regressions in tx verifier

283
ThomasV 12 years ago
parent
commit
e9b103b283
  1. 1
      lib/blockchain.py
  2. 19
      lib/verifier.py
  3. 1
      lib/wallet.py

1
lib/blockchain.py

@ -53,7 +53,6 @@ class BlockchainVerifier(threading.Thread):
with self.lock:
self.running = True
requested_merkle = []
requested_chunks = []
requested_headers = []
all_chunks = False

19
lib/verifier.py

@ -96,16 +96,18 @@ class TxVerifier(threading.Thread):
with self.lock: return self.running
def run(self):
with self.lock:
self.running = True
requested_merkle = []
while self.is_running():
# request missing tx
if all_chunks:
for tx_hash, tx_height in self.transactions.items():
if tx_hash not in self.verified_tx:
if self.merkle_roots.get(tx_hash) is None and tx_hash not in requested_merkle:
print_error('requesting merkle', tx_hash)
self.interface.send([ ('blockchain.transaction.get_merkle',[tx_hash, tx_height]) ], 'txverifier')
requested_merkle.append(tx_hash)
for tx_hash, tx_height in self.transactions.items():
if tx_hash not in self.verified_tx:
if self.merkle_roots.get(tx_hash) is None and tx_hash not in requested_merkle:
print_error('requesting merkle', tx_hash)
self.interface.send([ ('blockchain.transaction.get_merkle',[tx_hash, tx_height]) ], 'txverifier')
requested_merkle.append(tx_hash)
try:
r = self.interface.get_response('txverifier',timeout=1)
@ -136,12 +138,11 @@ class TxVerifier(threading.Thread):
if not header: return
assert header.get('merkle_root') == self.merkle_roots[tx_hash]
# we passed all the tests
header = self.read_header(tx_height)
timestamp = header.get('timestamp')
with self.lock:
self.verified_tx[tx_hash] = (tx_height, timestamp, pos)
print_error("verified %s"%tx_hash)
self.storage.set_key('verified_tx3', self.verified_tx, True)
self.storage.put('verified_tx3', self.verified_tx, True)
self.interface.trigger_callback('updated')

1
lib/wallet.py

@ -1307,6 +1307,7 @@ class Wallet:
self.interface = interface
self.verifier = TxVerifier(interface, blockchain, self.storage)
self.verifier.start()
self.set_verifier(self.verifier)
self.synchronizer = WalletSynchronizer(self)
self.synchronizer.start()

Loading…
Cancel
Save