@ -42,29 +42,31 @@ class SPV(ThreadJob):
interface = self . network . interface
if not interface :
return
blockchain = interface . blockchain
if not blockchain :
return
lh = self . network . get_local_height ( )
local_height = self . network . get_local_height ( )
unverified = self . wallet . get_unverified_txs ( )
for tx_hash , tx_height in unverified . items ( ) :
# do not request merkle branch before headers are available
if ( tx_height > 0 ) and ( tx_height < = lh ) :
header = blockchain . read_header ( tx_height )
if header is None :
index = tx_height / / 2016
if index < len ( blockchain . checkpoints ) :
self . network . request_chunk ( interface , index )
els e :
if ( tx_hash not in self . requested_merkle
and tx_hash not in self . merkle_roots ) :
self . network . get_merkle_for_transaction (
tx_hash ,
tx_height ,
self . verify_merkle )
self . print_error ( ' requested merkle ' , tx_hash )
self . requested_merkle . add ( tx_hash )
if tx_height < = 0 or tx_height > local_height :
continue
header = blockchain . read_header ( tx_height )
if header is None :
index = tx_height / / 2016
if ind ex < l en ( blockchain . checkpoints ) :
self . network . request_chunk ( interface , index )
elif ( tx_hash not in self . requested_ merkle
and tx_hash not in self . merkle_roots ) :
self . network . get_merkle_for_transaction (
tx_hash ,
tx_height ,
self . verify_merkle )
self . print_error ( ' requested merkle ' , tx_hash )
self . requested_merkle . add ( tx_hash )
if self . network . blockchain ( ) != self . blockchain :
self . blockchain = self . network . blockchain ( )