X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=mining%2F__init__.py;h=a8f3af9434814dc5387eabc47afa125b91213040;hb=679245b565edcb2a03d865df3c08e86c0d6f402d;hp=73e6d15977883edf187704fcbf37881d1cc3ae61;hpb=5cf1b39c915d234d31156d417005adc3719d5649;p=stratum-mining.git diff --git a/mining/__init__.py b/mining/__init__.py index 73e6d15..a8f3af9 100644 --- a/mining/__init__.py +++ b/mining/__init__.py @@ -1,6 +1,7 @@ from service import MiningService from subscription import MiningSubscription from twisted.internet import defer +import time @defer.inlineCallbacks def setup(on_startup): @@ -12,41 +13,54 @@ def setup(on_startup): from stratum import settings from interfaces import Interfaces - + # Let's wait until share manager and worker manager boot up (yield Interfaces.share_manager.on_load) (yield Interfaces.worker_manager.on_load) - + from lib.block_updater import BlockUpdater from lib.template_registry import TemplateRegistry from lib.bitcoin_rpc import BitcoinRPC from lib.block_template import BlockTemplate from lib.coinbaser import SimpleCoinbaser - + bitcoin_rpc = BitcoinRPC(settings.BITCOIN_TRUSTED_HOST, settings.BITCOIN_TRUSTED_PORT, settings.BITCOIN_TRUSTED_USER, settings.BITCOIN_TRUSTED_PASSWORD) - + + import stratum.logger + log = stratum.logger.get_logger('mining') + + log.info('Waiting for bitcoin RPC...') + + while True: + try: + result = (yield bitcoin_rpc.getblocktemplate()) + if isinstance(result, dict): + log.info('Response from bitcoin RPC OK') + break + except: + time.sleep(1) + coinbaser = SimpleCoinbaser(bitcoin_rpc, settings.CENTRAL_WALLET) (yield coinbaser.on_load) - + registry = TemplateRegistry(BlockTemplate, coinbaser, bitcoin_rpc, settings.INSTANCE_ID, - MiningSubscription.on_block) + MiningSubscription.on_template, + Interfaces.share_manager.on_network_block) # Template registry is the main interface between Stratum service # and pool core logic Interfaces.set_template_registry(registry) - + # Set up polling mechanism for detecting new block on the network # This is just failsafe solution when -blocknotify - # mechanism is not working properly + # mechanism is not working properly BlockUpdater(registry, bitcoin_rpc) - - import stratum.logger - log = stratum.logger.get_logger('mining') + log.info("MINING SERVICE IS READY") - on_startup.callback(True) + on_startup.callback(True)