1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
|
# Generated Server Configuration File for Grin
#
# When running the grin executable without specifying any command line
# arguments, it will look for this file in two places, in the following
# order:
#
# -The working directory
# -[user home]/.grin
#
config_file_version = 2
#########################################
### SERVER CONFIGURATION ###
#########################################
#Server connection details
[server]
#the directory, relative to current, in which the grin blockchain
#is stored
db_root = "/var/lib/grin/main/chain_data"
#path of TLS certificate file, self-signed certificates are not supported
#tls_certificate_file = ""
#private key for the TLS certificate
#tls_certificate_key = ""
#the address on which services will listen, e.g. Transaction Pool
api_http_addr = "127.0.0.1:3413"
#path of the secret token used by the Rest API and v2 Owner API to authenticate the calls
#comment the it to disable basic auth
api_secret_path = "/var/lib/grin/main/.api_secret"
#path of the secret token used by the Foreign API to authenticate the calls
#comment the it to disable basic auth
foreign_api_secret_path = ".foreign_api_secret"
#The chain type, which defines the genesis block and the set of cuckoo
#parameters used for mining as well as wallet output coinbase maturity. Can be:
#AutomatedTesting - For CI builds and instant blockchain creation
#UserTesting - For regular user testing (cuckoo 16)
#Testnet - For the long term test network
#Mainnet - For mainnet
chain_type = "Mainnet"
#The Future Time Limit (FTL) is a limit on how far into the future,
#relative to a node's local time, the timestamp on a new block can be,
#in order for the block to be accepted.
#At Hard Fork 4, this was reduced from 12 minutes down to 5 minutes,
#so as to limit possible timestamp manipulation on the new
#wtema difficulty adjustment algorithm
future_time_limit = 300
#the chain validation mode, defines how often (if at all) we
#want to run a full chain validation. Can be:
#"EveryBlock" - run full chain validation when processing each block (except during sync)
#"Disabled" - disable full chain validation (just run regular block validation)
chain_validation_mode = "Disabled"
#run the node in "full archive" mode (default is fast-sync, pruned node)
archive_mode = false
#skip waiting for sync on startup, (optional param, mostly for testing)
skip_sync_wait = false
#whether to run the ncurses TUI (Ncurses must be installed)
run_tui = false
#Whether to run a test miner. This is only for developer testing (chaintype
#usertesting) at cuckoo 16, and will only mine into the default wallet port.
#real mining should use the standalone grin-miner
run_test_miner = false
#test miner wallet URL (burns if this doesn't exist)
#test_miner_wallet_url = "http://127.0.0.1:3415"
#########################################
### SERVER P2P CONFIGURATION ###
#########################################
#The P2P server details (i.e. the server that communicates with other
[server.p2p_config]
#The interface on which to listen.
#0.0.0.0 will listen on all interfaces, allowing others to interact
#127.0.0.1 will listen on the local machine only
host = "0.0.0.0"
#The port on which to listen.
port = 3414
#All seeds/peers can be either IP address or DNS names. Port number must always be specified
#how to seed this server, can be None, List or DNSSeed
seeding_type = "DNSSeed"
#If the seeding type is List, the list of peers to connect to can
#be specified as follows:
#seeds = ["192.168.0.1:3414","192.168.0.2:3414"]
#hardcoded peer lists for allow/deny
#will *only* connect to peers in allow list
#peers_allow = ["192.168.0.1:3414", "192.168.0.2:3414"]
#will *never* connect to peers in deny list
#peers_deny = ["192.168.0.3:3414", "192.168.0.4:3414"]
#a list of preferred peers to connect to
#peers_preferred = ["192.168.0.1:3414","192.168.0.2:3414"]
#how long a banned peer should stay banned
#ban_window = 10800
#maximum number of inbound peer connections
#peer_max_inbound_count = 128
#maximum number of outbound peer connections
#peer_max_outbound_count = 8
#preferred minimum number of outbound peers (we'll actively keep trying to add peers
#until we get to at least this number)
#peer_min_preferred_outbound_count = 8
#amount of incoming connections temporarily allowed to exceed peer_max_inbound_count
#peer_listener_buffer_count = 8
# A preferred dandelion_peer, mainly used for testing dandelion
# dandelion_peer = "10.0.0.1:13144"
#########################################
### MEMPOOL CONFIGURATION ###
#########################################
[server.pool_config]
#base fee that's accepted into the pool
accept_fee_base = 500000
#reorg cache retention period in minute.
#the reorg cache repopulates local mempool in a reorg scenario.
reorg_cache_period = 30
#maximum number of transactions allowed in the pool
max_pool_size = 50000
#maximum number of transactions allowed in the stempool
max_stempool_size = 50000
#maximum total weight of transactions that can get selected to build a block
mineable_max_weight = 40000
#########################################
### DANDELION CONFIGURATION ###
#########################################
[server.dandelion_config]
#dandelion epoch duration
epoch_secs = 600
#fluff and broadcast after embargo expires if tx not seen on network
embargo_secs = 180
#dandelion aggregation period in secs
aggregation_secs = 30
#dandelion stem probability (stem 90% of the time, fluff 10% of the time)
stem_probability = 90
#always stem our (pushed via api) txs regardless of stem/fluff epoch (as per Dandelion++ paper)
always_stem_our_txs = true
################################################
### STRATUM MINING SERVER CONFIGURATION ###
################################################
[server.stratum_mining_config]
#whether stratum server is enabled
enable_stratum_server = false
#what port and address for the stratum server to listen on
stratum_server_addr = "127.0.0.1:3416"
#the amount of time, in seconds, to attempt to mine on a particular
#header before stopping and re-collecting transactions from the pool
attempt_time_per_block = 15
#the minimum acceptable share difficulty to request from miners
minimum_share_difficulty = 1
#the wallet receiver to which coinbase rewards will be sent
wallet_listener_url = "http://127.0.0.1:3415"
#whether to ignore the reward (mostly for testing)
burn_reward = false
#########################################
### WEBHOOK CONFIGURATION ###
#########################################
[server.webhook_config]
#The url where a POST request will be sent when a new block is accepted by our node.
#block_accepted_url = "http://127.0.0.1:8080/acceptedblock"
#The url where a POST request will be sent when a new transaction is received by a peer.
#tx_received_url = "http://127.0.0.1:8080/tx"
#The url where a POST request will be sent when a new header is received by a peer.
#header_received_url = "http://127.0.0.1:8080/header"
#The url where a POST request will be sent when a new block is received by a peer.
#block_received_url = "http://127.0.0.1:8080/block"
#The number of worker threads that will be assigned to making the http requests.
nthreads = 4
#The timeout of the http request in seconds.
timeout = 10
#########################################
### LOGGING CONFIGURATION ###
#########################################
[logging]
#whether to log to stdout
log_to_stdout = true
#log level for stdout: Error, Warning, Info, Debug, Trace
stdout_log_level = "Info"
#whether to log to a file
log_to_file = false
#log level for file: Error, Warning, Info, Debug, Trace
file_log_level = "Info"
#log file path
log_file_path = "/var/log/grin/main/server.log"
#whether to append to the log file (true), or replace it on every run (false)
log_file_append = true
#maximum log file size in bytes before performing log rotation
#comment it to disable log rotation
log_max_size = 16777216
#maximum count of the log files to rotate over
log_max_files = 32
|