From c8cd400c430279493029b67cc5055eb645a967d9 Mon Sep 17 00:00:00 2001 From: Warren Togami Date: Thu, 21 Mar 2013 20:48:02 -1000 Subject: [PATCH] Make p2pool's stratum implementation match the dumb de facto diff standard of scrypt stratum pools. --- p2pool/bitcoin/networks.py | 8 ++++++++ p2pool/bitcoin/stratum.py | 2 +- p2pool/bitcoin/worker_interface.py | 1 + p2pool/work.py | 1 + 4 files changed, 11 insertions(+), 1 deletions(-) diff --git a/p2pool/bitcoin/networks.py b/p2pool/bitcoin/networks.py index ea53f05..605d5d2 100644 --- a/p2pool/bitcoin/networks.py +++ b/p2pool/bitcoin/networks.py @@ -24,6 +24,7 @@ nets = dict( BLOCK_EXPLORER_URL_PREFIX='http://blockexplorer.com/block/', ADDRESS_EXPLORER_URL_PREFIX='http://blockexplorer.com/address/', SANE_TARGET_RANGE=(2**256//2**32//1000 - 1, 2**256//2**32 - 1), + DUMB_SCRYPT_DIFF=1, ), bitcoin_testnet=math.Object( P2P_PREFIX='0b110907'.decode('hex'), @@ -42,6 +43,7 @@ nets = dict( BLOCK_EXPLORER_URL_PREFIX='http://blockexplorer.com/testnet/block/', ADDRESS_EXPLORER_URL_PREFIX='http://blockexplorer.com/testnet/address/', SANE_TARGET_RANGE=(2**256//2**32//1000 - 1, 2**256//2**32 - 1), + DUMB_SCRYPT_DIFF=1, ), namecoin=math.Object( @@ -61,6 +63,7 @@ nets = dict( BLOCK_EXPLORER_URL_PREFIX='http://explorer.dot-bit.org/b/', ADDRESS_EXPLORER_URL_PREFIX='http://explorer.dot-bit.org/a/', SANE_TARGET_RANGE=(2**256//2**32 - 1, 2**256//2**32 - 1), + DUMB_SCRYPT_DIFF=1, ), namecoin_testnet=math.Object( P2P_PREFIX='fabfb5fe'.decode('hex'), @@ -79,6 +82,7 @@ nets = dict( BLOCK_EXPLORER_URL_PREFIX='http://testnet.explorer.dot-bit.org/b/', ADDRESS_EXPLORER_URL_PREFIX='http://testnet.explorer.dot-bit.org/a/', SANE_TARGET_RANGE=(2**256//2**32 - 1, 2**256//2**32 - 1), + DUMB_SCRYPT_DIFF=1, ), litecoin=math.Object( @@ -98,6 +102,7 @@ nets = dict( BLOCK_EXPLORER_URL_PREFIX='http://explorer.litecoin.net/block/', ADDRESS_EXPLORER_URL_PREFIX='http://explorer.litecoin.net/address/', SANE_TARGET_RANGE=(2**256//1000000000 - 1, 2**256//1000 - 1), + DUMB_SCRYPT_DIFF=2**16, ), litecoin_testnet=math.Object( P2P_PREFIX='fcc1b7dc'.decode('hex'), @@ -116,6 +121,7 @@ nets = dict( BLOCK_EXPLORER_URL_PREFIX='http://nonexistent-litecoin-testnet-explorer/block/', ADDRESS_EXPLORER_URL_PREFIX='http://nonexistent-litecoin-testnet-explorer/address/', SANE_TARGET_RANGE=(2**256//1000000000 - 1, 2**256 - 1), + DUMB_SCRYPT_DIFF=2**16, ), terracoin=math.Object( @@ -135,6 +141,7 @@ nets = dict( BLOCK_EXPLORER_URL_PREFIX='http://cryptocoinexplorer.com:3750/block/', ADDRESS_EXPLORER_URL_PREFIX='http://cryptocoinexplorer.com:3750/address/', SANE_TARGET_RANGE=(2**256//2**32//1000 - 1, 2**256//2**32 - 1), + DUMB_SCRYPT_DIFF=1, ), terracoin_testnet=math.Object( P2P_PREFIX='41babe56'.decode('hex'), @@ -153,6 +160,7 @@ nets = dict( BLOCK_EXPLORER_URL_PREFIX='http://cryptocoinexplorer.com:3750/testnet/block/', ADDRESS_EXPLORER_URL_PREFIX='http://cryptocoinexplorer.com:3750/testnet/address/', SANE_TARGET_RANGE=(2**256//2**32//1000 - 1, 2**256//2**32 - 1), + DUMB_SCRYPT_DIFF=1, ), ) diff --git a/p2pool/bitcoin/stratum.py b/p2pool/bitcoin/stratum.py index 7d981cd..a396d46 100644 --- a/p2pool/bitcoin/stratum.py +++ b/p2pool/bitcoin/stratum.py @@ -34,7 +34,7 @@ class StratumRPCMiningProvider(object): def _send_work(self): x, got_response = self.wb.get_work(*self.wb.preprocess_request('' if self.username is None else self.username)) jobid = str(random.randrange(2**128)) - self.other.svc_mining.rpc_set_difficulty(bitcoin_data.target_to_difficulty(x['share_target'])).addErrback(lambda err: None) + self.other.svc_mining.rpc_set_difficulty(bitcoin_data.target_to_difficulty(x['share_target'])*self.wb.net.DUMB_SCRYPT_DIFF).addErrback(lambda err: None) self.other.svc_mining.rpc_notify( jobid, # jobid getwork._swap4(pack.IntType(256).pack(x['previous_block'])).encode('hex'), # prevhash diff --git a/p2pool/bitcoin/worker_interface.py b/p2pool/bitcoin/worker_interface.py index 0e6d9b9..600c556 100644 --- a/p2pool/bitcoin/worker_interface.py +++ b/p2pool/bitcoin/worker_interface.py @@ -102,6 +102,7 @@ class WorkerInterface(object): class CachingWorkerBridge(object): def __init__(self, inner): self._inner = inner + self.net = self._inner.net self.COINBASE_NONCE_LENGTH = (inner.COINBASE_NONCE_LENGTH+1)//2 self.new_work_event = inner.new_work_event diff --git a/p2pool/work.py b/p2pool/work.py index 318c1d9..7c5823b 100644 --- a/p2pool/work.py +++ b/p2pool/work.py @@ -25,6 +25,7 @@ class WorkerBridge(worker_interface.WorkerBridge): self.donation_percentage = donation_percentage self.worker_fee = worker_fee + self.net = self.node.net.PARENT self.running = True self.pseudoshare_received = variable.Event() self.share_received = variable.Event() -- 1.7.1