@@ -704,13 +704,21 @@ async def handle_submit(self, *args, **kwargs):
704704 # Accept share if it meets either target or the miner difficulty
705705 is_block = is_kcn_block or is_lcn_block
706706 if not is_block and (share_diff / sent_diff ) < 0.99 :
707+ # Share is rejected due to insufficient difficulty
708+ self .logger .info (
709+ "Share rejected: insufficient difficulty (%.8f < %.8f)" ,
710+ share_diff ,
711+ sent_diff ,
712+ )
713+
707714 # Log rejected share asynchronously
708715 import time
709716
717+ current_timestamp = int (time .time ())
710718 asyncio .create_task (
711719 _log_share_stats_background (
712720 worker = worker ,
713- timestamp = int ( time . time ()) ,
721+ timestamp = current_timestamp ,
714722 accepted = False ,
715723 difficulty = share_diff ,
716724 )
@@ -720,6 +728,31 @@ async def handle_submit(self, *args, **kwargs):
720728 hashrate_tracker .add_share (worker , sent_diff , accepted = False )
721729 except Exception as e :
722730 self .logger .debug ("Failed to record rejected share: %s" , e )
731+
732+ # Add rejected share to feed for dashboard visibility
733+ try :
734+ from ..web .share_feed import get_share_feed_manager
735+
736+ feed_manager = get_share_feed_manager ()
737+ self .logger .debug ("Adding rejected share to feed for worker %s" , worker )
738+ asyncio .create_task (
739+ feed_manager .add_share (
740+ worker = worker ,
741+ share_difficulty = share_diff ,
742+ sent_difficulty = sent_diff ,
743+ is_block = False ,
744+ accepted = False ,
745+ kcn_difficulty = kcn_difficulty ,
746+ lcn_difficulty = lcn_difficulty ,
747+ chain = None ,
748+ miner_software = getattr (self , "_miner_software" , None ),
749+ is_kcn_block = False ,
750+ is_lcn_block = False ,
751+ )
752+ )
753+ except Exception as e :
754+ self .logger .error ("Failed to add rejected share to feed: %s" , e )
755+
723756 return False
724757
725758 block_msg_parts = []
0 commit comments