@@ -80,7 +80,7 @@ def subscribe(self, *args):
8080 session ['difficulty' ] = settings .POOL_TARGET # Following protocol specs, default diff is 1
8181 return Pubsub .subscribe (self .connection_ref (), MiningSubscription ()) + (extranonce1_hex , extranonce2_size )
8282
83- def submit (self , worker_name , job_id , extranonce2 , ntime , nonce ):
83+ def submit (self , worker_name , work_id , extranonce2 , ntime , nonce ):
8484 '''Try to solve block candidate using given parameters.'''
8585
8686 session = self .connection_ref ().get_session ()
@@ -96,8 +96,16 @@ def submit(self, worker_name, job_id, extranonce2, ntime, nonce):
9696 if not extranonce1_bin :
9797 raise SubmitException ("Connection is not subscribed for mining" )
9898
99+ # Get current block job_id
99100 difficulty = session ['difficulty' ]
100- s_difficulty = difficulty
101+ if worker_name in Interfaces .worker_manager .job_log and work_id in Interfaces .worker_manager .job_log [worker_name ]:
102+ (job_id , difficulty , job_ts ) = Interfaces .worker_manager .job_log [worker_name ][work_id ]
103+ else :
104+ job_ts = Interfaces .timestamper .time ()
105+ Interfaces .worker_manager .job_log .setdefault (worker_name , {})[work_id ] = (work_id , difficulty , job_ts )
106+ job_id = work_id
107+ #log.debug("worker_job_log: %s" % repr(Interfaces.worker_manager.job_log))
108+
101109 submit_time = Interfaces .timestamper .time ()
102110 ip = self .connection_ref ()._get_ip ()
103111 (valid , invalid , is_banned , diff , is_ext_diff , last_ts ) = Interfaces .worker_manager .worker_log ['authorized' ][worker_name ]
@@ -119,23 +127,19 @@ def submit(self, worker_name, job_id, extranonce2, ntime, nonce):
119127 log .debug ("Clearing worker stats for: %s" % worker_name )
120128 (valid , invalid , is_banned , last_ts ) = (0 , 0 , is_banned , Interfaces .timestamper .time ())
121129
122- if 'prev_ts' in session and (submit_time - session ['prev_ts' ]) < settings .VDIFF_RETARGET_DELAY \
123- and not is_ext_diff :
124- difficulty = session ['prev_diff' ] or session ['difficulty' ] or settings .POOL_TARGET
125- diff = difficulty
126- log .debug ("%s (%d, %d, %s, %s, %d) %0.2f%% diff(%f)" % (worker_name , valid , invalid , is_banned , is_ext_diff , last_ts , percent , diff ))
130+ log .debug ("%s (%d, %d, %s, %s, %d) %0.2f%% work_id(%s) job_id(%s) diff(%f)" % (worker_name , valid , invalid , is_banned , is_ext_diff , last_ts , percent , work_id , job_id , difficulty ))
127131 if not is_ext_diff :
128132 Interfaces .share_limiter .submit (self .connection_ref , job_id , difficulty , submit_time , worker_name )
129133
130134 # This checks if submitted share meet all requirements
131135 # and it is valid proof of work.
132136 try :
133137 (block_header , block_hash , share_diff , on_submit ) = Interfaces .template_registry .submit_share (job_id ,
134- worker_name , session , extranonce1_bin , extranonce2 , ntime , nonce , s_difficulty , submit_time )
138+ worker_name , session , extranonce1_bin , extranonce2 , ntime , nonce , difficulty )
135139 except SubmitException as e :
136140 # block_header and block_hash are None when submitted data are corrupted
137141 invalid += 1
138- Interfaces .worker_manager .worker_log ['authorized' ][worker_name ] = (valid , invalid , is_banned , diff , is_ext_diff , last_ts )
142+ Interfaces .worker_manager .worker_log ['authorized' ][worker_name ] = (valid , invalid , is_banned , difficulty , is_ext_diff , last_ts )
139143
140144 if is_banned :
141145 raise SubmitException ("Worker is temporarily banned" )
@@ -145,7 +149,7 @@ def submit(self, worker_name, job_id, extranonce2, ntime, nonce):
145149 raise
146150
147151 valid += 1
148- Interfaces .worker_manager .worker_log ['authorized' ][worker_name ] = (valid , invalid , is_banned , diff , is_ext_diff , last_ts )
152+ Interfaces .worker_manager .worker_log ['authorized' ][worker_name ] = (valid , invalid , is_banned , difficulty , is_ext_diff , last_ts )
149153
150154 if is_banned :
151155 raise SubmitException ("Worker is temporarily banned" )
0 commit comments