Add Litecoin scrypt proof of work and use scrypt instead of hash256 if we are on...
[p2pool.git] / p2pool / p2p.py
index f787228..071ac04 100644 (file)
@@ -212,12 +212,16 @@ class Protocol(bitcoin_p2p.BaseProtocol):
     def handle_share1as(self, share1as):
         shares = []
         for share1a in share1as:
-            hash_ = bitcoin_data.block_header_type.hash256(share1a['header'])
+            # use scrypt for Litecoin
+            if (getattr(self.node.net, 'BITCOIN_POW_SCRYPT', False)):
+                hash_ = bitcoin_data.block_header_type.scrypt(share1a['header']);
+            else:
+                hash_ = bitcoin_data.block_header_type.hash256(share1a['header'])
             if hash_ <= share1a['header']['target']:
                 print 'Dropping peer %s:%i due to invalid share' % self.addr
                 self.transport.loseConnection()
                 return
-            share = p2pool_data.Share.from_share1a(share1a)
+            share = p2pool_data.Share.from_share1a(share1a, self.node.net)
             share.peer = self # XXX
             shares.append(share)
         self.node.handle_shares(shares, self)
@@ -228,12 +232,16 @@ class Protocol(bitcoin_p2p.BaseProtocol):
     def handle_share1bs(self, share1bs):
         shares = []
         for share1b in share1bs:
-            hash_ = bitcoin_data.block_header_type.hash256(share1b['header'])
+            # use scrypt for Litecoin
+            if (getattr(self.node.net, 'BITCOIN_POW_SCRYPT', False)):
+                hash_ = bitcoin_data.block_header_type.scrypt(share1b['header']);
+            else:
+                hash_ = bitcoin_data.block_header_type.hash256(share1b['header'])
             if not hash_ <= share1b['header']['target']:
                 print 'Dropping peer %s:%i due to invalid share' % self.addr
                 self.transport.loseConnection()
                 return
-            share = p2pool_data.Share.from_share1b(share1b)
+            share = p2pool_data.Share.from_share1b(share1b, self.node.net)
             share.peer = self # XXX
             shares.append(share)
         self.node.handle_shares(shares, self)