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