X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=mining%2Fservice.py;h=0a368f46aa9e19f215cb2b1ed07c5014480d3367;hb=adec2324c5f5a612a864453b7cd2cb5f17c5cfa8;hp=30451d971d28206532a8b20818200d782b740a2a;hpb=8a7474eb0eefdbc68e9b57371a68c25f33427f0d;p=stratum-mining.git diff --git a/mining/service.py b/mining/service.py index 30451d9..0a368f4 100644 --- a/mining/service.py +++ b/mining/service.py @@ -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