separated p2pool and bitcoin network definitions
[p2pool.git] / p2pool / networks.py
1 from p2pool.bitcoin import networks
2
3 # CHAIN_LENGTH = number of shares back client keeps
4 # REAL_CHAIN_LENGTH = maximum number of shares back client uses to compute payout
5 # REAL_CHAIN_LENGTH must always be <= CHAIN_LENGTH
6 # REAL_CHAIN_LENGTH must be changed in sync with all other clients
7 # changes can be done by changing one, then the other
8
9 class BitcoinMainnet(object):
10     PARENT = networks.BitcoinMainnet
11     SHARE_PERIOD = 10 # seconds
12     CHAIN_LENGTH = 24*60*60//10 # shares
13     REAL_CHAIN_LENGTH_FUNC = staticmethod(lambda ts: 24*60*60//10 if ts >= 1325805105 else 24*60*60//10//2) # shares
14     TARGET_LOOKBEHIND = 200 # shares
15     SPREAD = 3 # blocks
16     IDENTIFIER = 'fc70035c7a81bc6f'.decode('hex')
17     PREFIX = '2472ef181efcd37b'.decode('hex')
18     NAME = 'bitcoin'
19     P2P_PORT = 9333
20     MAX_TARGET = 2**256//2**32 - 1
21     PERSIST = True
22     WORKER_PORT = 9332
23
24 class BitcoinTestnet(object):
25     PARENT = networks.BitcoinTestnet
26     SHARE_PERIOD = 10 # seconds
27     CHAIN_LENGTH = 24*60*60//10 # shares
28     REAL_CHAIN_LENGTH_FUNC = staticmethod(lambda ts: 24*60*60//10 if ts >= 1325805105 else 24*60*60//10//2) # shares
29     TARGET_LOOKBEHIND = 200 # shares
30     SPREAD = 3 # blocks
31     IDENTIFIER = '5fc2be2d4f0d6bfb'.decode('hex')
32     PREFIX = '3f6057a15036f441'.decode('hex')
33     NAME = 'bitcoin_testnet'
34     P2P_PORT = 19333
35     MAX_TARGET = 2**256//2**32 - 1
36     PERSIST = False
37     WORKER_PORT = 19332
38
39 class NamecoinMainnet(object):
40     PARENT = networks.NamecoinMainnet
41     SHARE_PERIOD = 10 # seconds
42     CHAIN_LENGTH = 24*60*60//10 # shares
43     REAL_CHAIN_LENGTH = 24*60*60//10 # shares
44     TARGET_LOOKBEHIND = 3600//10 # shares
45     SPREAD = 3 # blocks
46     IDENTIFIER = 'd5b1192062c4c454'.decode('hex')
47     PREFIX = 'b56f3d0fb24fc982'.decode('hex')
48     NAME = 'namecoin'
49     P2P_PORT = 9334
50     MAX_TARGET = 2**256//2**32 - 1
51     PERSIST = True
52     WORKER_PORT = 9331
53
54 class NamecoinTestnet(object):
55     PARENT = networks.NamecoinTestnet
56     SHARE_PERIOD = 10 # seconds
57     CHAIN_LENGTH = 24*60*60//10 # shares
58     REAL_CHAIN_LENGTH = 24*60*60//10 # shares
59     TARGET_LOOKBEHIND = 200 # shares
60     SPREAD = 3 # blocks
61     IDENTIFIER = '8dd303d014a01a60'.decode('hex')
62     PREFIX = '4d6581d24f51acbf'.decode('hex')
63     NAME = 'namecoin_testnet'
64     P2P_PORT = 19334
65     MAX_TARGET = 2**256//2**32 - 1
66     PERSIST = False
67     WORKER_PORT = 19331
68
69 class LitecoinMainnet(object):
70     PARENT = networks.LitecoinMainnet
71     SHARE_PERIOD = 10 # seconds
72     CHAIN_LENGTH = 24*60*60//10 # shares
73     REAL_CHAIN_LENGTH_FUNC = staticmethod(lambda ts: 24*60*60//10 if ts >= 1325805105 else 24*60*60//10//2) # shares
74     TARGET_LOOKBEHIND = 200 # shares
75     SPREAD = 12 # blocks
76     IDENTIFIER = 'e037d5b8c6923410'.decode('hex')
77     PREFIX = '7208c1a53ef629b0'.decode('hex')
78     NAME = 'litecoin'
79     P2P_PORT = 9338
80     MAX_TARGET = 2**256//2**20 - 1
81     PERSIST = True
82     WORKER_PORT = 9327
83
84 class LitecoinTestnet(object):
85     PARENT = networks.LitecoinTestnet
86     SHARE_PERIOD = 10 # seconds
87     CHAIN_LENGTH = 24*60*60//10 # shares
88     REAL_CHAIN_LENGTH_FUNC = staticmethod(lambda ts: 24*60*60//10 if ts >= 1325805105 else 24*60*60//10//2) # shares
89     TARGET_LOOKBEHIND = 200 # shares
90     SPREAD = 12 # blocks
91     IDENTIFIER = 'cca5e24ec6408b1e'.decode('hex')
92     PREFIX = 'ad9614f6466a39cf'.decode('hex')
93     NAME = 'litecoin_testnet'
94     P2P_PORT = 19338
95     MAX_TARGET = 2**256//2**17 - 1
96     PERSIST = False
97     WORKER_PORT = 19327
98
99 nets = dict((net.NAME, net) for net in set([BitcoinMainnet, BitcoinTestnet, NamecoinMainnet, NamecoinTestnet, LitecoinMainnet, LitecoinTestnet]))
100 realnets = dict((net.NAME, net) for net in nets.itervalues() if '_testnet' not in net.NAME)