Make p2pool's stratum implementation match the dumb de facto diff standard of scrypt...
authorWarren Togami <wtogami@gmail.com>
Fri, 22 Mar 2013 06:48:02 +0000 (20:48 -1000)
committerWarren Togami <wtogami@gmail.com>
Fri, 22 Mar 2013 07:05:25 +0000 (21:05 -1000)
p2pool/bitcoin/networks.py
p2pool/bitcoin/stratum.py
p2pool/bitcoin/worker_interface.py
p2pool/work.py

index ea53f05..605d5d2 100644 (file)
@@ -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,
     ),
 
 )
index 7d981cd..a396d46 100644 (file)
@@ -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
index 0e6d9b9..600c556 100644 (file)
@@ -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
index 318c1d9..7c5823b 100644 (file)
@@ -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()