@@ -327,6 +327,24 @@ def get_config_by_block_number(self, block_number: int) -> config.DevConfig:
327
327
dev_config = config .DevConfig (dev_config_pb_data , True , True )
328
328
return dev_config
329
329
330
+ def get_seed_block (self , blockheader : BlockHeader ):
331
+ qn = Qryptonight ()
332
+ seed_height = qn .get_seed_height (blockheader .block_number )
333
+
334
+ # If parent block belongs to main chain, then seed block will also be in the main chain
335
+ prev_mainchain_block = self .get_block_by_number (blockheader .block_number - 1 )
336
+ if prev_mainchain_block .headerhash == blockheader .prev_headerhash :
337
+ return self .get_block_by_number (seed_height )
338
+
339
+ prev_block = self .get_block (blockheader .prev_headerhash )
340
+ while prev_block .block_number > seed_height :
341
+ prev_mainchain_block = self .get_block_by_number (prev_block .block_number )
342
+ if prev_mainchain_block .headerhash == prev_block .headerhash :
343
+ return self .get_block_by_number (seed_height )
344
+ prev_block = self .get_block (prev_block .prev_headerhash )
345
+
346
+ return prev_block
347
+
330
348
def validate_mining_nonce (self , blockheader : BlockHeader , dev_config : config .DevConfig , enable_logging = True ):
331
349
with self .lock :
332
350
parent_metadata = BlockMetadata .get_block_metadata (self ._state , blockheader .prev_headerhash )
@@ -342,6 +360,8 @@ def validate_mining_nonce(self, blockheader: BlockHeader, dev_config: config.Dev
342
360
dev_config = dev_config )
343
361
344
362
mining_blob = blockheader .mining_blob (dev_config )
363
+ qn = Qryptonight ()
364
+ seed_block = self .get_seed_block (blockheader )
345
365
346
366
if enable_logging :
347
367
logger .debug ('-----------------START--------------------' )
@@ -352,10 +372,10 @@ def validate_mining_nonce(self, blockheader: BlockHeader, dev_config: config.Dev
352
372
logger .debug ('diff %s' , UInt256ToString (diff ))
353
373
logger .debug ('target %s' , bin2hstr (target ))
354
374
logger .debug ('mining blob %s' , bin2hstr (mining_blob ))
375
+ logger .debug ('seed_block #%s' , seed_block .block_number )
376
+ logger .debug ('seed_block hash %s' , bin2hstr (seed_block .headerhash ))
355
377
logger .debug ('-------------------END--------------------' )
356
378
357
- qn = Qryptonight ()
358
- seed_block = self .get_block_by_number (qn .get_seed_height (blockheader .block_number ))
359
379
if not PoWValidator ().verify_input (blockheader .block_number ,
360
380
seed_block .block_number ,
361
381
seed_block .headerhash ,
0 commit comments