From 6beede251a896ae773fb6949189bb249832a1bd5 Mon Sep 17 00:00:00 2001 From: slush Date: Sun, 9 Sep 2012 17:29:50 +0200 Subject: [PATCH] Initial commit --- LICENSE | 2 +- launcher_demo.tac | 2 +- scripts/blocknotify.sh | 22 ++++++++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/LICENSE b/LICENSE index 6ea9c40..0fa0ee3 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ Stratum mining - Bitcoin pool using Stratum protocol -Copyright (C) 2012 Marek Palatinus +Copyright (C) 2012 Marek Palatinus This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as diff --git a/launcher_demo.tac b/launcher_demo.tac index 5e66817..ad59d5b 100644 --- a/launcher_demo.tac +++ b/launcher_demo.tac @@ -1,4 +1,4 @@ -# Run me with "twistd -ny launcher_demo.tac" +# Run me with "twistd -ny launcher_demo.tac -l -" # Add conf directory to python path. # Configuration file is standard python module. diff --git a/scripts/blocknotify.sh b/scripts/blocknotify.sh index 0311f1a..891b9db 100755 --- a/scripts/blocknotify.sh +++ b/scripts/blocknotify.sh @@ -2,6 +2,7 @@ # Send notification to Stratum mining instance on localhost that there's new bitcoin block # You can use this script directly as an variable for -blocknotify argument: # ./bitcoind -blocknotify="blocknotify.sh --password admin_password" +# This is also very basic example how to use Stratum protocol in native Python import socket import json @@ -24,21 +25,26 @@ if args.password == None: message = {'id': 1, 'method': 'mining.update_block', 'params': [args.password]} -s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -s.connect((args.host, args.port)) -s.sendall(json.dumps(message)+"\n") -data = s.recv(16000) -s.close() +try: + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((args.host, args.port)) + s.sendall(json.dumps(message)+"\n") + data = s.recv(16000) + s.close() +except IOError: + print "blocknotify: Cannot connect to the pool" + sys.exit() for line in data.split("\n"): if not line.strip(): + # Skip last line which doesn't contain any message continue message = json.loads(line) if message['id'] == 1: if message['result'] == True: - print "blocknotify done in %.03f sec" % (time.time() - start) + print "blocknotify: done in %.03f sec" % (time.time() - start) else: - print "Error during request:", message['error'][1] + print "blocknotify: Error during request:", message['error'][1] else: - print "Unexpected message from the server:", message \ No newline at end of file + print "blocknotify: Unexpected message from the server:", message -- 1.7.1