Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import sys
- import random
- import stratum
- import stratum.settings as settings
- from twisted.internet import reactor
- from twisted.application import service, internet
- from stratum.services import ServiceEventHandler, GenericService
- from stratum import socket_transport
- from stratum.connection_registry import ConnectionRegistry
- class MiningService(GenericService):
- service_type = 'mining'
- service_vendor = 'custom'
- is_default = True
- @classmethod
- def _reconnect(cls, switchto):
- next_reconnect = random.randint(5,10)
- reactor.callLater(next_reconnect, cls._reconnect, switchto)
- selected = random.choice(switchto)
- print switchto
- print "Reconnecting to", selected
- for conn in ConnectionRegistry.iterate():
- conn = conn()
- if not conn:
- continue
- conn.rpc('client.reconnect', [None, selected, 2], is_notification=True)
- print "Next reconnect in %d sec" % next_reconnect
- def _finish_after_subscribe(self, result):
- self.connection_ref().rpc('client.get_version', [])
- self.connection_ref().rpc('mining.notify',
- ["124b", "9eb4d8f01c4522cb1191e93896fff7204bae4aebec50a7030000016700000000",
- "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2103a21703062f503253482f042c67755008",
- "072f736c7573682f0000000001026f312a010000001976a914e8e6ace10f10ce5ed479c7188c9b4061e53aa90688ac00000000",
- ["11d30680b28e3101141731fa04daf7c42fb90d4fa8b59bb1411ff4ed31bed51f",
- "968b36b8a85d22695970764a8b8e6ba2f8fd864c2a003cd44eed5947a60a467a",
- "2c691ebaaedb4d53d8c03c1c7d7d4f82dba8d832d39337347a03232bfc57f1de",
- "239eec3b0098cd7f82c4071ff41cb2d235558a55a0d9341d7b9f188ebdc4140f",
- "608fe54d1e97ee8b6516018cd82918012cbf876dfe3ad166c3d37f5dbd7c4546",
- "8841944a4b2679cd297158f6175a655a885adc80116e0608842821a248c8d3eb",
- "59411a7a593424ec42b57bc0f91ee56bbf717564001786ba67e4702e0a47ef1e"],
- "00000002", "1a057e08", "5075672c", True], is_notification=True
- )
- return result
- def authorize(self, worker_name, password):
- return True
- def subscribe(self):
- self.connection_ref().on_finish.addCallback(self._finish_after_subscribe)
- return ([], ''.join([ "%x" % random.randint(0,15) for x in range(8) ]), 4)
- def submit(self, worker_name, job_id, extranonce2, ntime, nonce):
- return True
- if __name__ == '__main__':
- try:
- listening_port = int(sys.argv[1])
- print "Listening on port:", listening_port
- except:
- print "./reconnect_demo.py <listening_port> [<switchto1> <switchto2> <switchtoN>]"
- sys.exit()
- switchto = [ int(x) for x in sys.argv[2:] ]
- print "I'll randomly switch connections to:", switchto
- reactor.listenTCP(listening_port, socket_transport.SocketTransportFactory(
- debug=True, event_handler=ServiceEventHandler))
- MiningService._reconnect(switchto)
- reactor.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement