Bugfix: Stratum: Replies should not be sent if request id is null
[bitcoin:eloipool.git] / config.py.example
1 ### Settings relating to server identity
2
3 # Name of the server
4 ServerName = 'Private Eloipool'
5
6 ### Settings relating to server scaling/load
7
8 # Share hashes must be below this to be valid shares
9 # If dynamic targetting is enabled, this is a minimum
10 ShareTarget = 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
11
12 # Automatically adjust targets per username
13 # 0 = disabled
14 # 1 = arbitrary targets
15 # 2 = power of two difficulties (zero bit counts)
16 DynamicTargetting = 0
17
18 # How many shares per minute to try to achieve on average
19 DynamicTargetGoal = 8
20
21 # Number of seconds hashrate is measured over
22 DynamicTargetWindow = 120
23
24 # Minimum and maximum of merkle roots to keep queued
25 WorkQueueSizeRegular = (0x100, 0x1000)
26
27 # Minimum and maximum of BLANK merkle roots to keep queued
28 # (used if we run out of populated ones)
29 WorkQueueSizeClear = (0x1000, 0x2000)
30
31 # Minimum and maximum of BLANK merkle roots to keep queued, one height up
32 # (used for longpolls)
33 WorkQueueSizeLongpoll = (0x1000, 0x2000)
34
35 # How long to wait between getmemorypool updates normally
36 MinimumTxnUpdateWait = 5
37
38 # How long to wait between retries if getmemorypool fails
39 TxnUpdateRetryWait = 1
40
41 # How long to sleep in idle loops (temporary!)
42 IdleSleepTime = 0.1
43
44 ### Settings relating to reward generation
45
46 # Address to generate rewards to
47 TrackerAddr = 'mrsP7M31efGkQHXb7nRiWLDjfV2M8oakf2'  # testnet
48
49 # Coinbaser command to control reward delegation
50 # NOTE: This example donates 1% of block rewards to Luke-Jr for Eloipool development
51 CoinbaserCmd = 'echo -e "1\\n$((%d / 100))\\n1579aXhdwvKZEMrAKoCZhzGuqMa8EonuXU"'
52
53 ### Settings relating to upstream data providers
54
55 # JSON-RPC server for getmemorypool
56 UpstreamURI = 'http://user:pass@localhost:18332'
57
58 # Bitcoin p2p server for announcing blocks found
59 UpstreamBitcoindNode = ('127.0.0.1', 18333)  # testnet
60
61 # Network ID for the primary blockchain
62 UpstreamNetworkId = b'\xFA\xBF\xB5\xDA'  # testnet
63
64 # Secret username allowed to use setworkaux
65 #SecretUser = ""
66
67 # URI to send gotwork with info for every share submission
68 #GotWorkURI = ''
69
70 # Share hashes must be below this to be submitted to gotwork
71 GotWorkTarget = 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
72
73 # Aim to produce blocks with transaction counts that are a power of two
74 # This helps avoid any chance of someone abusing CVE-2012-2459 with them
75 # 1 = cut out feeless transactions; 2 = cut out even fee-included transactions (if possible)
76 POT = 2
77
78 # Avoid mining feeless transactions except to satisfy POT
79 # Note this only works if POT is in fact enabled in the first place
80 Greedy = False
81
82 ### Settings relating to network services
83
84 # Addresses to listen on for JSON-RPC getwork server
85 # Note that Eloipool only supports IPv6 sockets, and if you want to bind to an
86 # IPv4 address you will need to prepend it with ::ffff: eg ::ffff:192.168.1.2
87 JSONRPCAddresses = (
88         ('', 8337),
89 )
90
91 # Addresses to listen on for Bitcoin node
92 # Note that Eloipool only supports IPv6 sockets, and if you want to bind to an
93 # IPv4 address you will need to prepend it with ::ffff: eg ::ffff:192.168.1.2
94 BitcoinNodeAddresses = (
95         ('', 8338),
96 )
97
98 # Addresses that are allowed to "spoof" from address with the X-Forwarded-For header
99 TrustedForwarders = ('::ffff:127.0.0.1',)
100
101
102 # Logging of shares:
103 ShareLogging = (
104         {
105                 'type': 'logfile',
106                 'filename': 'share-logfile',
107                 'format': "{time} {Q(remoteHost)} {username} {YN(not(rejectReason))} {dash(YN(upstreamResult))} {dash(rejectReason)} {solution}\n",
108         },
109         {
110                 'type': 'sql',
111                 'engine': 'postgres',
112                 'dbopts': {
113                         'host': 'localhost',
114                         'database': 'pooldb',
115                         'user': 'eloipool',
116                         'password': 'somethingsecret',
117                 },
118                 'statement': "insert into shares (rem_host, username, our_result, upstream_result, reason, solution) values ({Q(remoteHost)}, {username}, {YN(not(rejectReason))}, {YN(upstreamResult)}, {rejectReason}, decode({solution}, 'hex'))",
119         },
120         {
121                 'type': 'sql',
122                 'engine': 'mysql',
123                 'dbopts': {
124                         'host': 'localhost',
125                         'db': 'pooldb',
126                         'user': 'eloipool',
127                         'password': 'somethingsecret',
128                 },
129                 'statement': "insert into shares (rem_host, username, our_result, upstream_result, reason, solution) values ({Q(remoteHost)}, {username}, {YN(not(rejectReason))}, {YN(upstreamResult)}, {rejectReason}, unhex({solution}))",
130         },
131         {
132                 'type': 'sql',
133                 'engine': 'sqlite',
134                 'dbopts': {
135                         'database': 'share.db',
136                 },
137                 'statement': "insert into shares (remoteHost, username, rejectReason, upstreamResult, solution) values ({remoteHost}, {username}, {rejectReason}, {upstreamResult}, {solution})",
138         },
139 )
140