Mysql share reporting fixed. Update config template.
[stratum-mining.git] / mining / service.py
index 30451d9..0a368f4 100644 (file)
@@ -1,6 +1,7 @@
 import binascii
 from twisted.internet import defer
 
+from stratum import settings
 from stratum.services import GenericService, admin
 from stratum.pubsub import Pubsub
 from interfaces import Interfaces
@@ -46,7 +47,7 @@ class MiningService(GenericService):
                 del session['authorized'][worker_name]
             return False
         
-    def subscribe(self, *args):
+    def subscribe(self,*arg):
         '''Subscribe for receiving mining jobs. This will
         return subscription details, extranonce1_hex and extranonce2_size'''
         
@@ -56,7 +57,7 @@ class MiningService(GenericService):
         
         session = self.connection_ref().get_session()
         session['extranonce1'] = extranonce1
-        session['difficulty'] = 1 # Following protocol specs, default diff is 1
+        session['difficulty'] = settings.POOL_TARGET # Following protocol specs, default diff is 1
 
         return Pubsub.subscribe(self.connection_ref(), MiningSubscription()) + (extranonce1_hex, extranonce2_size)
     
@@ -93,29 +94,30 @@ class MiningService(GenericService):
         
         difficulty = session['difficulty']
         submit_time = Interfaces.timestamper.time()
+        ip = self.connection_ref()._get_ip()
     
-        Interfaces.share_limiter.submit(self.connection_ref, difficulty, submit_time)
+        Interfaces.share_limiter.submit(self.connection_ref, job_id, difficulty, submit_time, worker_name)
             
         # This checks if submitted share meet all requirements
         # and it is valid proof of work.
         try:
-            (block_header, block_hash, on_submit) = Interfaces.template_registry.submit_share(job_id,
-                                                worker_name, extranonce1_bin, extranonce2, ntime, nonce, difficulty)
-        except SubmitException:
+            (block_header, block_hash, share_diff, on_submit) = Interfaces.template_registry.submit_share(job_id,
+                                                worker_name, session, extranonce1_bin, extranonce2, ntime, nonce, difficulty)
+        except SubmitException as e:
             # block_header and block_hash are None when submitted data are corrupted
             Interfaces.share_manager.on_submit_share(worker_name, None, None, difficulty,
-                                                 submit_time, False)    
+                                                 submit_time, False, ip, e[0], 0)    
             raise
             
              
         Interfaces.share_manager.on_submit_share(worker_name, block_header, block_hash, difficulty,
-                                                 submit_time, True)
+                                                 submit_time, True, ip, '', share_diff)
         
         if on_submit != None:
             # Pool performs submitblock() to bitcoind. Let's hook
             # to result and report it to share manager
             on_submit.addCallback(Interfaces.share_manager.on_submit_block,
-                        worker_name, block_header, block_hash, submit_time)
+                        worker_name, block_header, block_hash, submit_time,ip,share_diff)
 
         return True