Merge branch 'master' into optional_donation
[p2pool.git] / p2pool / data.py
index 6208cc6..d90d45f 100644 (file)
@@ -9,7 +9,7 @@ from twisted.python import log
 
 import p2pool
 from p2pool import skiplists
-from p2pool.bitcoin import data as bitcoin_data, script, namecoin, ixcoin, i0coin, solidcoin, litecoin
+from p2pool.bitcoin import data as bitcoin_data, script, networks
 from p2pool.util import memoize, expiring_dict, math
 
 
@@ -167,12 +167,12 @@ class Share(object):
         if len(self.nonce) > 100:
             raise ValueError('nonce too long!')
         
-        # use scrypt for Litecoin
-        if (getattr(net, 'BITCOIN_POW_SCRYPT', False)):
-            self.bitcoin_hash = bitcoin_data.block_header_type.scrypt(header)
+        self.bitcoin_hash = net.BITCOIN_POW_FUNC(header)
+        
+        if net.BITCOIN_POW_FUNC is bitcoin_data.block_header_type.scrypt:
+            # compatibility hack
             self.hash = share1a_type.scrypt(self.as_share1a())
         else:
-            self.bitcoin_hash = bitcoin_data.block_header_type.hash256(header)
             self.hash = share1a_type.hash256(self.as_share1a())
         
         if self.bitcoin_hash > self.target:
@@ -738,7 +738,7 @@ class ShareStore(object):
             os.remove(filename)
             print "REMOVED", filename
 
-class BitcoinMainnet(bitcoin_data.Mainnet):
+class BitcoinMainnet(networks.BitcoinMainnet):
     SHARE_PERIOD = 10 # seconds
     CHAIN_LENGTH = 24*60*60//5 # shares
     TARGET_LOOKBEHIND = 200 # shares
@@ -752,7 +752,7 @@ class BitcoinMainnet(bitcoin_data.Mainnet):
     PERSIST = False
     WORKER_PORT = 9332
 
-class BitcoinTestnet(bitcoin_data.Testnet):
+class BitcoinTestnet(networks.BitcoinTestnet):
     SHARE_PERIOD = 1 # seconds
     CHAIN_LENGTH = 24*60*60//5 # shares
     TARGET_LOOKBEHIND = 200 # shares
@@ -766,7 +766,7 @@ class BitcoinTestnet(bitcoin_data.Testnet):
     PERSIST = False
     WORKER_PORT = 19332
 
-class NamecoinMainnet(namecoin.Mainnet):
+class NamecoinMainnet(networks.NamecoinMainnet):
     SHARE_PERIOD = 10 # seconds
     CHAIN_LENGTH = 24*60*60//10 # shares
     TARGET_LOOKBEHIND = 3600//10 # shares
@@ -780,7 +780,7 @@ class NamecoinMainnet(namecoin.Mainnet):
     PERSIST = True
     WORKER_PORT = 9331
 
-class NamecoinTestnet(namecoin.Testnet):
+class NamecoinTestnet(networks.NamecoinTestnet):
     SHARE_PERIOD = 1 # seconds
     CHAIN_LENGTH = 24*60*60//5 # shares
     TARGET_LOOKBEHIND = 200 # shares
@@ -794,7 +794,7 @@ class NamecoinTestnet(namecoin.Testnet):
     PERSIST = False
     WORKER_PORT = 19331
 
-class IxcoinMainnet(ixcoin.Mainnet):
+class IxcoinMainnet(networks.IxcoinMainnet):
     SHARE_PERIOD = 10 # seconds
     CHAIN_LENGTH = 24*60*60//10 # shares
     TARGET_LOOKBEHIND = 3600//10 # shares
@@ -808,7 +808,7 @@ class IxcoinMainnet(ixcoin.Mainnet):
     PERSIST = True
     WORKER_PORT = 9330
 
-class IxcoinTestnet(ixcoin.Testnet):
+class IxcoinTestnet(networks.IxcoinTestnet):
     SHARE_PERIOD = 1 # seconds
     CHAIN_LENGTH = 24*60*60//5 # shares
     TARGET_LOOKBEHIND = 200 # shares
@@ -822,7 +822,7 @@ class IxcoinTestnet(ixcoin.Testnet):
     PERSIST = False
     WORKER_PORT = 19330
 
-class I0coinMainnet(i0coin.Mainnet):
+class I0coinMainnet(networks.I0coinMainnet):
     SHARE_PERIOD = 10 # seconds
     CHAIN_LENGTH = 24*60*60//10 # shares
     TARGET_LOOKBEHIND = 3600//10 # shares
@@ -836,7 +836,7 @@ class I0coinMainnet(i0coin.Mainnet):
     PERSIST = False
     WORKER_PORT = 9329
 
-class I0coinTestnet(i0coin.Testnet):
+class I0coinTestnet(networks.I0coinTestnet):
     SHARE_PERIOD = 1 # seconds
     CHAIN_LENGTH = 24*60*60//5 # shares
     TARGET_LOOKBEHIND = 200 # shares
@@ -850,12 +850,12 @@ class I0coinTestnet(i0coin.Testnet):
     PERSIST = False
     WORKER_PORT = 19329
 
-class SolidcoinMainnet(solidcoin.Mainnet):
+class SolidcoinMainnet(networks.SolidcoinMainnet):
     SHARE_PERIOD = 10
     CHAIN_LENGTH = 24*60*60//10 # shares
     TARGET_LOOKBEHIND = 3600//10 # shares
     SPREAD = 3 # blocks
-    SCRIPT = bitcoin_data.pubkey_hash_to_script2(bitcoin_data.address_to_pubkey_hash('sMKZ1yxHETxPYKh4Z2anWnwZDJZU7ztroy', solidcoin.Mainnet))
+    SCRIPT = bitcoin_data.pubkey_hash_to_script2(bitcoin_data.address_to_pubkey_hash('sMKZ1yxHETxPYKh4Z2anWnwZDJZU7ztroy', networks.SolidcoinMainnet))
     IDENTIFIER = '9cc9c421cca258cd'.decode('hex')
     PREFIX = 'c059125b8070f00a'.decode('hex')
     NAME = 'solidcoin'
@@ -864,7 +864,7 @@ class SolidcoinMainnet(solidcoin.Mainnet):
     PERSIST = True
     WORKER_PORT = 9328
 
-class LitecoinMainnet(litecoin.Mainnet):
+class LitecoinMainnet(networks.LitecoinMainnet):
     SHARE_PERIOD = 10 # seconds
     CHAIN_LENGTH = 24*60*60//5 # shares
     TARGET_LOOKBEHIND = 200 # shares
@@ -878,7 +878,7 @@ class LitecoinMainnet(litecoin.Mainnet):
     PERSIST = True
     WORKER_PORT = 9327
 
-class LitecoinTestnet(litecoin.Testnet):
+class LitecoinTestnet(networks.LitecoinTestnet):
     SHARE_PERIOD = 1 # seconds
     CHAIN_LENGTH = 24*60*60//5 # shares
     TARGET_LOOKBEHIND = 200 # shares