Initial commit
[stratum-mining.git] / mining / __init__.py
diff --git a/mining/__init__.py b/mining/__init__.py
new file mode 100644 (file)
index 0000000..4709e14
--- /dev/null
@@ -0,0 +1,38 @@
+from service import MiningService
+from subscription import MiningSubscription
+
+def setup():
+    '''Setup mining service internal environment.
+    You should not need to change this. If you
+    want to use another Worker manager or Share manager,
+    you should set proper reference to Interfaces class
+    *before* you call setup() in the launcher script.'''
+        
+    from stratum import settings
+    from interfaces import Interfaces
+    
+    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)
+    
+    registry = TemplateRegistry(BlockTemplate,
+                                SimpleCoinbaser(bitcoin_rpc, settings.CENTRAL_WALLET),
+                                bitcoin_rpc,
+                                settings.INSTANCE_ID,
+                                MiningSubscription.on_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    
+    BlockUpdater(registry, bitcoin_rpc)
\ No newline at end of file