• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

libbitcoin / libbitcoin-server / 41719031671

03 Nov 2026 09:08PM UTC coverage: 94.853% (+0.3%) from 94.513%
41719031671

push

github

web-flow
Merge pull request #1117 from evoskuil/master

Assert the bip54 forks in the native header context.

12035 of 12688 relevant lines covered (94.85%)

238.96 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

99.07
/src/parser.cpp
1
/**
2
 * Copyright (c) 2011-2026 libbitcoin developers
3
 *
4
 * This file is part of libbitcoin.
5
 *
6
 * This program is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU Affero General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU Affero General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Affero General Public License
17
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
 */
19
#include <bitcoin/server/parser.hpp>
20

21
#include <filesystem>
22
#include <bitcoin/server/configuration.hpp>
23
#include <bitcoin/server/define.hpp>
24
#include <bitcoin/server/server_node.hpp>
25
#include <bitcoin/server/settings.hpp>
26

27
////std::filesystem::path config_default_path() NOEXCEPT
28
////{
29
////    return { "libbitcoin/bn.cfg" };
30
////}
31

32
namespace libbitcoin {
33
namespace server {
34

35
using namespace bc::system;
36
using namespace bc::system::config;
37
namespace table = bc::database::table;
38
using namespace bc::system::options;
39

40
// Initialize configuration using defaults of the given context.
41
parser::parser(system::chain::selection context,
24 ✔
42
    const server::settings::embedded_pages& native,
43
    const server::settings::embedded_pages& admin) NOEXCEPT
24 ✔
44
  : configured(context, native, admin)
24 ✔
45
{
46
}
24 ✔
47

48
// Hashmap buckets derive from expected and installed memory; a configured
49
// count governs, and zero disables an optional table.
50
void parser::derive_buckets() NOEXCEPT
24 ✔
51
{
52
    constexpr uint32_t contested = 75;
53
    constexpr uint32_t target = 25;
54
    constexpr uint32_t address_contested = 500;
55
    constexpr uint32_t address_target = 50;
56
    auto& database = configured.database;
57

58
    if (!is_configured("table.header.buckets"))
24 ✔
59
        database.header.buckets = table::header::derive_buckets(
24 ✔
60
            database.header.expected, contested, target);
61

62
    if (!is_configured("table.tx.buckets"))
24 ✔
63
        database.tx.buckets = table::transaction::derive_buckets(
24 ✔
64
            database.tx.expected, contested, target);
65

66
    if (!is_configured("table.strong.buckets"))
24 ✔
67
        database.strong.buckets = possible_narrow_cast<uint32_t>(
23 ✔
68
            database.tx.expected);
69

70
    if (!is_configured("table.ins.buckets"))
24 ✔
71
        database.ins.buckets = table::ins::derive_buckets(
24 ✔
72
            database.ins.expected, contested, target);
73

74
    if (!is_configured("table.outs.buckets"))
24 ✔
75
        database.outs.buckets = table::outs::derive_buckets(
24 ✔
76
            database.outs.expected, address_contested, address_target);
77

78
    if (!is_configured("table.pool.buckets"))
24 ✔
79
        database.pool.buckets = table::pool::derive_buckets(
24 ✔
80
            database.pool.expected, contested, target);
81

82
    if (!is_configured("table.wtxid.buckets"))
24 ✔
83
        database.wtxid.buckets = table::wtxid::derive_buckets(
24 ✔
84
            database.wtxid.expected, contested, target);
85
}
24 ✔
86

87
// A specified network governs, otherwise configuration.
88
void parser::select_network() NOEXCEPT
22 ✔
89
{
90
    const chain::selection selected = configured.net;
22 ✔
91
    const auto specified = selected != chain::selection::none &&
22 ✔
92
        selected != chain::selection::mainnet;
93

94
    chain::selection network = configured.bitcoin.network;
22 ✔
95
    if (specified)
22 ✔
96
        network = selected;
97

98
    if (network != configured.node.network)
22 ✔
99
        reset_network(network);
17 ✔
100

101
    if (specified)
22 ✔
102
        configured.bitcoin.network = network;
12 ✔
103
}
22 ✔
104

105
// A configured path is the base of the network-named store directory.
106
void parser::select_path() NOEXCEPT
22 ✔
107
{
108
    auto& path = configured.database.path;
22 ✔
109
    if (is_configured("database.path"))
22 ✔
110
        path = path / std::string{ config::selection::to_word(
32 ✔
111
            configured.node.network) };
32 ✔
112
}
22 ✔
113

114
// The network of an existing store governs at its path, for commands that
115
// use the store.
116
void parser::read_envelope() NOEXCEPT
4 ✔
117
{
118
    if (configured.make || configured.help || configured.hardware ||
4 ✔
119
        configured.daemon.has_value())
3 ✔
120
        return;
2 ✔
121

122
    server_node::store store{ configured.database };
3 ✔
123
    stored_code = store.read_envelope(stored);
3 ✔
124
    if (stored_code || stored.network == configured.node.network)
3 ✔
125
        return;
126

127
    const chain::selection selected = configured.net;
2 ✔
128
    const auto specified = selected != chain::selection::none &&
2 ✔
129
        selected != chain::selection::mainnet;
130

131
    const auto path = configured.database.path;
2 ✔
132
    reset_network(stored.network);
2 ✔
133
    configured.database.path = path;
2 ✔
134
    derive_buckets();
2 ✔
135

136
    // A specified network is retained as configured, for override reporting.
137
    if (specified)
2 ✔
138
        configured.bitcoin.network = selected;
1 ✔
139
}
3 ✔
140

141
// Network defaults are reset, and then configured settings are reapplied.
142
void parser::reset_network(chain::selection context) NOEXCEPT
19 ✔
143
{
144
    configured.bitcoin = system::settings{ context };
19 ✔
145
    configured.database = database::settings{ context };
19 ✔
146
    configured.network = network::settings{ context };
19 ✔
147
    configured.node = node::settings{ context };
19 ✔
148
    configured.server.network = context;
19 ✔
149
    configured.server.wallet = server::settings::wallet_settings{ context };
19 ✔
150

151
    BC_PUSH_WARNING(NO_THROW_IN_NOEXCEPT)
152
    for (const auto& option: settings().options())
8,854 ✔
153
    {
154
        const auto& name = option->long_name();
8,835 ✔
155
        if (is_configured(name))
8,835 ✔
156
            option->semantic()->notify(variables().at(name).value());
24 ✔
157
    }
158
    BC_POP_WARNING()
159
}
19 ✔
160

161
// Composes a variable name with its command line shortcut.
162
static std::string alias(const std::string& variable, char shortcut)
384 ✔
163
{
164
    return variable + ',' + shortcut;
384 ✔
165
}
166

167
options_metadata parser::load_options() THROWS
24 ✔
168
{
169
    options_metadata description("options");
24 ✔
170
    description.add_options()
24 ✔
171
    (
48 ✔
172
        alias(config_variable, 'c').c_str(),
48 ✔
173
        value<config::path>(&configured.file),
24 ✔
174
        "Specify path to a configuration settings file."
175
    )
176
    (
48 ✔
177
        alias(net_variable, 'n').c_str(),
48 ✔
178
        value<config::selection>(&configured.net),
24 ✔
179
        ("Specify the network (" + config::selection::names() + "), "
48 ✔
180
            "defaults to the configured network.").c_str()
181
    )
182
    // Prompts.
183
    (
72 ✔
184
        alias(accept_variable, 'a').c_str(),
48 ✔
185
        value<bool>(&configured.accept)->
186
            default_value(false)->zero_tokens(),
48 ✔
187
        "Accept startup prompts without interaction."
188
    )
189
    // Information.
190
    (
72 ✔
191
        alias(help_variable, 'h').c_str(),
48 ✔
192
        value<bool>(&configured.help)->
193
            default_value(false)->zero_tokens(),
48 ✔
194
        "Display command line options."
195
    )
196
    (
72 ✔
197
        alias(hardware_variable, 'w').c_str(),
48 ✔
198
        value<bool>(&configured.hardware)->
199
            default_value(false)->zero_tokens(),
48 ✔
200
        "Display hardware compatibility."
201
    )
202
    (
72 ✔
203
        alias(settings_variable, 's').c_str(),
48 ✔
204
        value<bool>(&configured.settings)->
205
            default_value(false)->zero_tokens(),
48 ✔
206
        "Display all configuration settings."
207
    )
208
    (
72 ✔
209
        alias(version_variable, 'v').c_str(),
48 ✔
210
        value<bool>(&configured.version)->
211
            default_value(false)->zero_tokens(),
48 ✔
212
        "Display version information."
213
    )
214
    // Actions.
215
    (
72 ✔
216
        alias(make_variable, 'm').c_str(),
48 ✔
217
        value<bool>(&configured.make)->
218
            default_value(false)->zero_tokens(),
48 ✔
219
        "Make new store in configured directory."
220
    )
221
    (
72 ✔
222
        alias(backup_variable, 'b').c_str(),
48 ✔
223
        value<bool>(&configured.backup)->
224
            default_value(false)->zero_tokens(),
48 ✔
225
        "Backup to a snapshot (can also do live)."
226
    )
227
    (
72 ✔
228
        alias(restore_variable, 'r').c_str(),
48 ✔
229
        value<bool>(&configured.restore)->
230
            default_value(false)->zero_tokens(),
48 ✔
231
        "Restore from most recent snapshot."
232
    )
233
    // Service.
234
    (
72 ✔
235
        alias(daemon_variable, 'd').c_str(),
48 ✔
236
        value<bool>()->implicit_value(true)->
48 ✔
237
            notifier([&](bool value) { configured.daemon = value; }),
48 ✔
238
        "Install ('true') or uninstall ('false') as a daemon."
239
    )
240
    (
72 ✔
241
        alias(user_variable, 'u').c_str(),
48 ✔
242
        value<network::config::credential>()->
243
            notifier([&](const network::config::credential& value)
48 ✔
244
                { configured.user = value; }),
×
245
        "Daemon logon credential, defaults to system account."
246
    )
247
    // Chain scans.
248
    (
72 ✔
249
        alias(flags_variable, 'f').c_str(),
48 ✔
250
        value<bool>(&configured.flags)->
251
            default_value(false)->zero_tokens(),
48 ✔
252
        "Scan and display all flag transitions."
253
    )
254
    (
72 ✔
255
        alias(buckets_variable, 'k').c_str(),
48 ✔
256
        value<bool>(&configured.buckets)->
257
            default_value(false)->zero_tokens(),
48 ✔
258
        "Scan and display hashmap bucket fill."
259
    )
260
    (
72 ✔
261
        alias(collisions_variable, 'l').c_str(),
48 ✔
262
        value<bool>(&configured.collisions)->
263
            default_value(false)->zero_tokens(),
48 ✔
264
        "Scan and show hashmap collision stats (may SIGKILL)."
265
    )
266
    (
72 ✔
267
        alias(information_variable, 'i').c_str(),
48 ✔
268
        value<bool>(&configured.information)->
269
            default_value(false)->zero_tokens(),
48 ✔
270
        "Scan and display store information."
271
    );
272

273
#if defined(WITH_BUILTIN_TESTS)
274
    description.add_options()
275
    // Ad-hoc Testing.
276
    (
277
        alias(get_variable, 'g').c_str(),
278
        value<config::hash256>(&configured.get)->
279
            default_value(system::null_hash),
280
        "Run built-in read test and display."
281
    )
282
    (
283
        alias(put_variable, 'p').c_str(),
284
        value<config::hash256>(&configured.put)->
285
            default_value(system::null_hash),
286
        "Run built-in write test and display."
287
    );
288
#endif
289

290
    return description;
24 ✔
291
}
×
292

293
arguments_metadata parser::load_arguments() THROWS
24 ✔
294
{
295
    // There are no positional arguments, the config path requires --config.
296
    return arguments_metadata{};
24 ✔
297
}
298

299
options_metadata parser::load_environment() THROWS
×
300
{
301
    options_metadata description("environment");
×
302
    description.add_options()
×
303
    (
×
304
        // For some reason po requires this to be a lower case name.
305
        // The case must match the other declarations for it to compose.
306
        // This composes with the cmdline options and inits to default path.
307
        config_variable,
308
        value<config::path>(&configured.file)->composing()
×
309
            /*->default_value(config_default_path())*/,
310
        "The path to the configuration settings file."
311
    );
312

313
    return description;
×
314
}
×
315

316
options_metadata parser::load_settings() THROWS
22 ✔
317
{
318
    options_metadata description("settings");
22 ✔
319
    description.add_options()
22 ✔
320

321
    /* [forks] */
322
    (
66 ✔
323
        "forks.difficult",
324
        setting<bool>(&configured.bitcoin.forks.difficult),
22 ✔
325
        "Require difficult blocks, defaults to {} (use false for testnet)."
326
    )
327
    (
66 ✔
328
        "forks.retarget",
329
        setting<bool>(&configured.bitcoin.forks.retarget),
22 ✔
330
        "Retarget difficulty, defaults to {} (use false for regtest)."
331
    )
332
    (
66 ✔
333
        "forks.bip16",
334
        setting<bool>(&configured.bitcoin.forks.bip16),
22 ✔
335
        "Add pay-to-script-hash processing, defaults to {} (soft fork)."
336
    )
337
    (
66 ✔
338
        "forks.bip30",
339
        setting<bool>(&configured.bitcoin.forks.bip30),
22 ✔
340
        "Disallow collision of unspent transaction hashes, defaults to {} (soft fork)."
341
    )
342
    (
66 ✔
343
        "forks.bip34",
344
        setting<bool>(&configured.bitcoin.forks.bip34),
22 ✔
345
        "Require coinbase input includes block height, defaults to {} (soft fork)."
346
    )
347
    (
66 ✔
348
        "forks.bip42",
349
        setting<bool>(&configured.bitcoin.forks.bip42),
22 ✔
350
        "Finite monetary supply, defaults to {} (soft fork)."
351
    )
352
    (
66 ✔
353
        "forks.bip66",
354
        setting<bool>(&configured.bitcoin.forks.bip66),
22 ✔
355
        "Require strict signature encoding, defaults to {} (soft fork)."
356
    )
357
    (
66 ✔
358
        "forks.bip65",
359
        setting<bool>(&configured.bitcoin.forks.bip65),
22 ✔
360
        "Add check-locktime-verify op code, defaults to {} (soft fork)."
361
    )
362
    (
66 ✔
363
        "forks.bip90",
364
        setting<bool>(&configured.bitcoin.forks.bip90),
22 ✔
365
        "Assume bip34, bip65, and bip66 activation if enabled, defaults to {} (hard fork)."
366
    )
367
    (
66 ✔
368
        "forks.bip68",
369
        setting<bool>(&configured.bitcoin.forks.bip68),
22 ✔
370
        "Add relative locktime enforcement, defaults to {} (soft fork)."
371
    )
372
    (
66 ✔
373
        "forks.bip112",
374
        setting<bool>(&configured.bitcoin.forks.bip112),
22 ✔
375
        "Add check-sequence-verify op code, defaults to {} (soft fork)."
376
    )
377
    (
66 ✔
378
        "forks.bip113",
379
        setting<bool>(&configured.bitcoin.forks.bip113),
22 ✔
380
        "Use median time past for locktime, defaults to {} (soft fork)."
381
    )
382
    (
66 ✔
383
        "forks.bip141",
384
        setting<bool>(&configured.bitcoin.forks.bip141),
22 ✔
385
        "Segregated witness consensus layer, defaults to {} (soft fork)."
386
    )
387
    (
66 ✔
388
        "forks.bip143",
389
        setting<bool>(&configured.bitcoin.forks.bip143),
22 ✔
390
        "Witness version 0 (segwit), defaults to {} (soft fork)."
391
    )
392
    (
66 ✔
393
        "forks.bip147",
394
        setting<bool>(&configured.bitcoin.forks.bip147),
22 ✔
395
        "Prevent dummy value malleability, defaults to {} (soft fork)."
396
    )
397
    (
66 ✔
398
        "forks.bip341",
399
        setting<bool>(&configured.bitcoin.forks.bip341),
22 ✔
400
        "Witness version 1 (taproot), defaults to {} (soft fork)."
401
    )
402
    (
66 ✔
403
        "forks.bip342",
404
        setting<bool>(&configured.bitcoin.forks.bip342),
22 ✔
405
        "Validation of taproot script, defaults to {} (soft fork)."
406
    )
407
    (
66 ✔
408
        "forks.bip54_timewarp",
409
        setting<bool>(&configured.bitcoin.forks.bip54_timewarp),
22 ✔
410
        "Limit timestamp regression on retarget blocks, defaults to {} (soft fork)."
411
    )
412
    (
66 ✔
413
        "forks.bip54_timespan",
414
        setting<bool>(&configured.bitcoin.forks.bip54_timespan),
22 ✔
415
        "Require non-negative retarget timespans, defaults to {} (soft fork)."
416
    )
417
    (
66 ✔
418
        "forks.bip54_sigops",
419
        setting<bool>(&configured.bitcoin.forks.bip54_sigops),
22 ✔
420
        "Limit legacy signature operations per transaction, defaults to {} (soft fork)."
421
    )
422
    (
66 ✔
423
        "forks.bip54_txsize",
424
        setting<bool>(&configured.bitcoin.forks.bip54_txsize),
22 ✔
425
        "Disallow 64 byte witness-stripped transactions, defaults to {} (soft fork)."
426
    )
427
    (
66 ✔
428
        "forks.bip54_coinbase",
429
        setting<bool>(&configured.bitcoin.forks.bip54_coinbase),
22 ✔
430
        "Require coinbase locktime of parent height and non-final sequence, defaults to {} (soft fork)."
431
    )
432
    (
66 ✔
433
        "forks.time_warp_patch",
434
        setting<bool>(&configured.bitcoin.forks.time_warp_patch),
22 ✔
435
        "Assume time_warp_patch activation if enabled, defaults to {} (testnet4)."
436
    )
437
    (
66 ✔
438
        "forks.block_storm_patch",
439
        setting<bool>(&configured.bitcoin.forks.block_storm_patch),
22 ✔
440
        "Assume block_storm_patch activation if enabled, defaults to {} (testnet4)."
441
    )
442
    (
66 ✔
443
        "forks.signet",
444
        setting<bool>(&configured.bitcoin.forks.signet),
22 ✔
445
        "Require signet block solutions, defaults to {} (signet)."
446
    )
447
    (
66 ✔
448
        "forks.ltc_time_warp_patch",
449
        setting<bool>(&configured.bitcoin.forks.ltc_time_warp_patch),
22 ✔
450
        "Fix time warp bug, defaults to {} (litecoin)."
451
    )
452
    (
66 ✔
453
        "forks.ltc_retarget_overflow_patch",
454
        setting<bool>(&configured.bitcoin.forks.ltc_retarget_overflow_patch),
22 ✔
455
        "Fix target overflow for very low difficulty, defaults to {} (litecoin)."
456
    )
457
    (
66 ✔
458
        "forks.ltc_scrypt_proof_of_work",
459
        setting<bool>(&configured.bitcoin.forks.ltc_scrypt_proof_of_work),
22 ✔
460
        "Use scrypt hashing for proof of work, defaults to {} (litecoin)."
461
    )
462

463
    /* [bitcoin] */
464
    (
66 ✔
465
        "bitcoin.network",
466
        setting<config::selection>(&configured.bitcoin.network),
22 ✔
467
        ("The network of the defaults (" + config::selection::names() +
44 ✔
468
            "), defaults to {}.").c_str()
469
    )
470
    (
66 ✔
471
        "bitcoin.initial_block_subsidy_bitcoin",
472
        setting<uint64_t>(&configured.bitcoin.initial_subsidy_bitcoin),
22 ✔
473
        "The initial block subsidy, defaults to {}."
474
    )
475
    (
66 ✔
476
        "bitcoin.subsidy_interval",
477
        setting<uint32_t>(&configured.bitcoin.subsidy_interval_blocks),
22 ✔
478
        "The subsidy halving period, defaults to {}."
479
    )
480
    (
66 ✔
481
        "bitcoin.timestamp_limit_seconds",
482
        setting<uint32_t>(&configured.bitcoin.timestamp_limit_seconds),
22 ✔
483
        "The future timestamp allowance, defaults to {}."
484
    )
485
    (
66 ✔
486
        "bitcoin.retargeting_factor",
487
        setting<uint32_t>(&configured.bitcoin.retargeting_factor),
22 ✔
488
        "The difficulty retargeting factor, defaults to {}."
489
    )
490
    (
66 ✔
491
        "bitcoin.retargeting_interval_seconds",
492
        setting<uint32_t>(&configured.bitcoin.retargeting_interval_seconds),
22 ✔
493
        "The difficulty retargeting period, defaults to {}."
494
    )
495
    (
66 ✔
496
        "bitcoin.block_spacing_seconds",
497
        setting<uint32_t>(&configured.bitcoin.block_spacing_seconds),
22 ✔
498
        "The target block period, defaults to {}."
499
    )
500
    (
66 ✔
501
        "bitcoin.proof_of_work_limit",
502
        setting<uint32_t>(&configured.bitcoin.proof_of_work_limit),
22 ✔
503
        "The proof of work limit, defaults to {}."
504
    )
505
    (
66 ✔
506
        "bitcoin.genesis_block",
507
        setting<config::block>(&configured.bitcoin.genesis_block),
22 ✔
508
        "The hexadecimal encoding of the genesis block, defaults to mainnet."
509
    )
510
    (
66 ✔
511
        "bitcoin.signet_challenge",
512
        setting<config::script>(&configured.bitcoin.signet_challenge),
22 ✔
513
        "The signet block challenge script, defaults to none (signet)."
514
    )
515
    (
66 ✔
516
        "bitcoin.checkpoint",
517
        setting<chain::checkpoints>(&configured.bitcoin.checkpoints),
22 ✔
518
        "The blockchain checkpoints, defaults to the consensus set."
519
    )
520
    // [version properties excluded here]
521
    (
66 ✔
522
        "bitcoin.bip16_activation_time",
523
        setting<uint32_t>(&configured.bitcoin.bip16_activation_time),
22 ✔
524
        "The activation time for bip16 in unix time, defaults to {}."
525
    )
526
    (
66 ✔
527
        "bitcoin.bip34_activation_threshold",
528
        setting<size_t>(&configured.bitcoin.bip34_activation_threshold),
22 ✔
529
        "The number of new version blocks required for bip34 style soft fork activation, defaults to {}."
530
    )
531
    (
66 ✔
532
        "bitcoin.bip34_enforcement_threshold",
533
        setting<size_t>(&configured.bitcoin.bip34_enforcement_threshold),
22 ✔
534
        "The number of new version blocks required for bip34 style soft fork enforcement, defaults to {}."
535
    )
536
    (
66 ✔
537
        "bitcoin.bip34_activation_sample",
538
        setting<size_t>(&configured.bitcoin.bip34_activation_sample),
22 ✔
539
        "The number of blocks considered for bip34 style soft fork activation, defaults to {}."
540
    )
541
    (
66 ✔
542
        "bitcoin.bip34_freeze",
543
        setting<size_t>(&configured.bitcoin.bip90_bip34_height),
22 ✔
544
        "The block height to freeze the bip34 softfork for bip90, defaults to {}."
545
    )
546
    (
66 ✔
547
        "bitcoin.bip65_freeze",
548
        setting<size_t>(&configured.bitcoin.bip90_bip65_height),
22 ✔
549
        "The block height to freeze the bip65 softfork for bip90, defaults to {}."
550
    )
551
    (
66 ✔
552
        "bitcoin.bip66_freeze",
553
        setting<size_t>(&configured.bitcoin.bip90_bip66_height),
22 ✔
554
        "The block height to freeze the bip66 softfork for bip90, defaults to {}."
555
    )
556
    (
66 ✔
557
        "bitcoin.bip9_bit0_active_checkpoint",
558
        setting<chain::checkpoint>(&configured.bitcoin.bip9_bit0_active_checkpoint),
22 ✔
559
        "The hash:height checkpoint for bip9 bit0 activation, defaults to {}."
560
    )
561
    (
66 ✔
562
        "bitcoin.bip9_bit1_active_checkpoint",
563
        setting<chain::checkpoint>(&configured.bitcoin.bip9_bit1_active_checkpoint),
22 ✔
564
        "The hash:height checkpoint for bip9 bit1 activation, defaults to {}."
565
    )
566
    (
66 ✔
567
        "bitcoin.bip9_bit2_active_checkpoint",
568
        setting<chain::checkpoint>(&configured.bitcoin.bip9_bit2_active_checkpoint),
22 ✔
569
        "The hash:height checkpoint for bip9 bit2 activation, defaults to {}."
570
    )
571
    (
66 ✔
572
        "bitcoin.bip9_activation_period",
573
        setting<size_t>(&configured.bitcoin.bip9_activation_period),
22 ✔
574
        "The number of blocks in a bip9 signaling period, defaults to {}."
575
    )
576
    (
66 ✔
577
        "bitcoin.bip9_bit0_start",
578
        setting<uint32_t>(&configured.bitcoin.bip9_bit0_deployment.start),
22 ✔
579
        "The median time past to start bip9 bit0 signaling, 4294967295 for always active, defaults to {}."
580
    )
581
    (
66 ✔
582
        "bitcoin.bip9_bit0_timeout",
583
        setting<uint32_t>(&configured.bitcoin.bip9_bit0_deployment.timeout),
22 ✔
584
        "The median time past to time out bip9 bit0 signaling, defaults to {}."
585
    )
586
    (
66 ✔
587
        "bitcoin.bip9_bit0_threshold",
588
        setting<size_t>(&configured.bitcoin.bip9_bit0_deployment.threshold),
22 ✔
589
        "The signaling blocks per period to lock in bip9 bit0, zero to disable, defaults to {}."
590
    )
591
    (
66 ✔
592
        "bitcoin.bip9_bit0_activation_height",
593
        setting<size_t>(&configured.bitcoin.bip9_bit0_deployment.activation_height),
22 ✔
594
        "The minimum bip9 bit0 activation height, defaults to {}."
595
    )
596
    (
66 ✔
597
        "bitcoin.bip9_bit0_speedy_trial",
598
        setting<bool>(&configured.bitcoin.bip9_bit0_deployment.speedy),
22 ✔
599
        "Check the bip9 bit0 threshold before timeout (speedy trial), defaults to {}."
600
    )
601
    (
66 ✔
602
        "bitcoin.bip9_bit1_start",
603
        setting<uint32_t>(&configured.bitcoin.bip9_bit1_deployment.start),
22 ✔
604
        "The median time past to start bip9 bit1 signaling, 4294967295 for always active, defaults to {}."
605
    )
606
    (
66 ✔
607
        "bitcoin.bip9_bit1_timeout",
608
        setting<uint32_t>(&configured.bitcoin.bip9_bit1_deployment.timeout),
22 ✔
609
        "The median time past to time out bip9 bit1 signaling, defaults to {}."
610
    )
611
    (
66 ✔
612
        "bitcoin.bip9_bit1_threshold",
613
        setting<size_t>(&configured.bitcoin.bip9_bit1_deployment.threshold),
22 ✔
614
        "The signaling blocks per period to lock in bip9 bit1, zero to disable, defaults to {}."
615
    )
616
    (
66 ✔
617
        "bitcoin.bip9_bit1_activation_height",
618
        setting<size_t>(&configured.bitcoin.bip9_bit1_deployment.activation_height),
22 ✔
619
        "The minimum bip9 bit1 activation height, defaults to {}."
620
    )
621
    (
66 ✔
622
        "bitcoin.bip9_bit1_speedy_trial",
623
        setting<bool>(&configured.bitcoin.bip9_bit1_deployment.speedy),
22 ✔
624
        "Check the bip9 bit1 threshold before timeout (speedy trial), defaults to {}."
625
    )
626
    (
66 ✔
627
        "bitcoin.bip9_bit2_start",
628
        setting<uint32_t>(&configured.bitcoin.bip9_bit2_deployment.start),
22 ✔
629
        "The median time past to start bip9 bit2 signaling, 4294967295 for always active, defaults to {}."
630
    )
631
    (
66 ✔
632
        "bitcoin.bip9_bit2_timeout",
633
        setting<uint32_t>(&configured.bitcoin.bip9_bit2_deployment.timeout),
22 ✔
634
        "The median time past to time out bip9 bit2 signaling, defaults to {}."
635
    )
636
    (
66 ✔
637
        "bitcoin.bip9_bit2_threshold",
638
        setting<size_t>(&configured.bitcoin.bip9_bit2_deployment.threshold),
22 ✔
639
        "The signaling blocks per period to lock in bip9 bit2, zero to disable, defaults to {}."
640
    )
641
    (
66 ✔
642
        "bitcoin.bip9_bit2_activation_height",
643
        setting<size_t>(&configured.bitcoin.bip9_bit2_deployment.activation_height),
22 ✔
644
        "The minimum bip9 bit2 activation height, defaults to {}."
645
    )
646
    (
66 ✔
647
        "bitcoin.bip9_bit2_speedy_trial",
648
        setting<bool>(&configured.bitcoin.bip9_bit2_deployment.speedy),
22 ✔
649
        "Check the bip9 bit2 threshold before timeout (speedy trial), defaults to {}."
650
    )
651
    (
66 ✔
652
        "bitcoin.bip54_timewarp_start",
653
        setting<uint32_t>(&configured.bitcoin.bip54_timewarp_deployment.start),
22 ✔
654
        "The median time past to start bip54 timewarp signaling, 4294967295 for always active, defaults to {}."
655
    )
656
    (
66 ✔
657
        "bitcoin.bip54_timewarp_timeout",
658
        setting<uint32_t>(&configured.bitcoin.bip54_timewarp_deployment.timeout),
22 ✔
659
        "The median time past to time out bip54 timewarp signaling, defaults to {}."
660
    )
661
    (
66 ✔
662
        "bitcoin.bip54_timewarp_threshold",
663
        setting<size_t>(&configured.bitcoin.bip54_timewarp_deployment.threshold),
22 ✔
664
        "The signaling blocks per period to lock in bip54 timewarp, zero to disable, defaults to {}."
665
    )
666
    (
66 ✔
667
        "bitcoin.bip54_timewarp_activation_height",
668
        setting<size_t>(&configured.bitcoin.bip54_timewarp_deployment.activation_height),
22 ✔
669
        "The minimum bip54 timewarp activation height, defaults to {}."
670
    )
671
    (
66 ✔
672
        "bitcoin.bip54_timewarp_speedy_trial",
673
        setting<bool>(&configured.bitcoin.bip54_timewarp_deployment.speedy),
22 ✔
674
        "Check the bip54 timewarp threshold before timeout (speedy trial), defaults to {}."
675
    )
676
    (
66 ✔
677
        "bitcoin.bip54_timespan_start",
678
        setting<uint32_t>(&configured.bitcoin.bip54_timespan_deployment.start),
22 ✔
679
        "The median time past to start bip54 timespan signaling, 4294967295 for always active, defaults to {}."
680
    )
681
    (
66 ✔
682
        "bitcoin.bip54_timespan_timeout",
683
        setting<uint32_t>(&configured.bitcoin.bip54_timespan_deployment.timeout),
22 ✔
684
        "The median time past to time out bip54 timespan signaling, defaults to {}."
685
    )
686
    (
66 ✔
687
        "bitcoin.bip54_timespan_threshold",
688
        setting<size_t>(&configured.bitcoin.bip54_timespan_deployment.threshold),
22 ✔
689
        "The signaling blocks per period to lock in bip54 timespan, zero to disable, defaults to {}."
690
    )
691
    (
66 ✔
692
        "bitcoin.bip54_timespan_activation_height",
693
        setting<size_t>(&configured.bitcoin.bip54_timespan_deployment.activation_height),
22 ✔
694
        "The minimum bip54 timespan activation height, defaults to {}."
695
    )
696
    (
66 ✔
697
        "bitcoin.bip54_timespan_speedy_trial",
698
        setting<bool>(&configured.bitcoin.bip54_timespan_deployment.speedy),
22 ✔
699
        "Check the bip54 timespan threshold before timeout (speedy trial), defaults to {}."
700
    )
701
    (
66 ✔
702
        "bitcoin.bip54_sigops_start",
703
        setting<uint32_t>(&configured.bitcoin.bip54_sigops_deployment.start),
22 ✔
704
        "The median time past to start bip54 sigops signaling, 4294967295 for always active, defaults to {}."
705
    )
706
    (
66 ✔
707
        "bitcoin.bip54_sigops_timeout",
708
        setting<uint32_t>(&configured.bitcoin.bip54_sigops_deployment.timeout),
22 ✔
709
        "The median time past to time out bip54 sigops signaling, defaults to {}."
710
    )
711
    (
66 ✔
712
        "bitcoin.bip54_sigops_threshold",
713
        setting<size_t>(&configured.bitcoin.bip54_sigops_deployment.threshold),
22 ✔
714
        "The signaling blocks per period to lock in bip54 sigops, zero to disable, defaults to {}."
715
    )
716
    (
66 ✔
717
        "bitcoin.bip54_sigops_activation_height",
718
        setting<size_t>(&configured.bitcoin.bip54_sigops_deployment.activation_height),
22 ✔
719
        "The minimum bip54 sigops activation height, defaults to {}."
720
    )
721
    (
66 ✔
722
        "bitcoin.bip54_sigops_speedy_trial",
723
        setting<bool>(&configured.bitcoin.bip54_sigops_deployment.speedy),
22 ✔
724
        "Check the bip54 sigops threshold before timeout (speedy trial), defaults to {}."
725
    )
726
    (
66 ✔
727
        "bitcoin.bip54_txsize_start",
728
        setting<uint32_t>(&configured.bitcoin.bip54_txsize_deployment.start),
22 ✔
729
        "The median time past to start bip54 txsize signaling, 4294967295 for always active, defaults to {}."
730
    )
731
    (
66 ✔
732
        "bitcoin.bip54_txsize_timeout",
733
        setting<uint32_t>(&configured.bitcoin.bip54_txsize_deployment.timeout),
22 ✔
734
        "The median time past to time out bip54 txsize signaling, defaults to {}."
735
    )
736
    (
66 ✔
737
        "bitcoin.bip54_txsize_threshold",
738
        setting<size_t>(&configured.bitcoin.bip54_txsize_deployment.threshold),
22 ✔
739
        "The signaling blocks per period to lock in bip54 txsize, zero to disable, defaults to {}."
740
    )
741
    (
66 ✔
742
        "bitcoin.bip54_txsize_activation_height",
743
        setting<size_t>(&configured.bitcoin.bip54_txsize_deployment.activation_height),
22 ✔
744
        "The minimum bip54 txsize activation height, defaults to {}."
745
    )
746
    (
66 ✔
747
        "bitcoin.bip54_txsize_speedy_trial",
748
        setting<bool>(&configured.bitcoin.bip54_txsize_deployment.speedy),
22 ✔
749
        "Check the bip54 txsize threshold before timeout (speedy trial), defaults to {}."
750
    )
751
    (
66 ✔
752
        "bitcoin.bip54_coinbase_start",
753
        setting<uint32_t>(&configured.bitcoin.bip54_coinbase_deployment.start),
22 ✔
754
        "The median time past to start bip54 coinbase signaling, 4294967295 for always active, defaults to {}."
755
    )
756
    (
66 ✔
757
        "bitcoin.bip54_coinbase_timeout",
758
        setting<uint32_t>(&configured.bitcoin.bip54_coinbase_deployment.timeout),
22 ✔
759
        "The median time past to time out bip54 coinbase signaling, defaults to {}."
760
    )
761
    (
66 ✔
762
        "bitcoin.bip54_coinbase_threshold",
763
        setting<size_t>(&configured.bitcoin.bip54_coinbase_deployment.threshold),
22 ✔
764
        "The signaling blocks per period to lock in bip54 coinbase, zero to disable, defaults to {}."
765
    )
766
    (
66 ✔
767
        "bitcoin.bip54_coinbase_activation_height",
768
        setting<size_t>(&configured.bitcoin.bip54_coinbase_deployment.activation_height),
22 ✔
769
        "The minimum bip54 coinbase activation height, defaults to {}."
770
    )
771
    (
66 ✔
772
        "bitcoin.bip54_coinbase_speedy_trial",
773
        setting<bool>(&configured.bitcoin.bip54_coinbase_deployment.speedy),
22 ✔
774
        "Check the bip54 coinbase threshold before timeout (speedy trial), defaults to {}."
775
    )
776
    (
66 ✔
777
        settings::milestone,
778
        setting<chain::checkpoint>(&configured.bitcoin.milestone),
22 ✔
779
        "A block presumed to be valid but not required to be present, defaults to {}."
780
    )
781
    (
66 ✔
782
        "bitcoin.minimum_work",
783
        setting<config::hash256>(&configured.bitcoin.minimum_work),
22 ✔
784
        "The minimum work for any branch to be considered valid, defaults to {}."
785
    )
786

787
    /* [network] */
788
    (
66 ✔
789
        "network.threads",
790
        setting<uint32_t>(&configured.network.threads),
22 ✔
791
        "The minimum number of threads in the network threadpool, defaults to {} (hardware threads, at most 32)."
792
    )
793
    (
66 ✔
794
        "network.retry_timeout_seconds",
795
        setting<uint32_t>(&configured.network.retry_timeout_seconds),
22 ✔
796
        "The time delay for failed connection retry, defaults to {}."
797
    )
798
    (
66 ✔
799
        "network.connect_timeout_seconds",
800
        setting<uint32_t>(&configured.network.connect_timeout_seconds),
22 ✔
801
        "The time limit for connection establishment, defaults to {}."
802
    )
803
    (
66 ✔
804
        "network.rate_limit",
805
        setting<uint32_t>(&configured.network.rate_limit),
22 ✔
806
        "The per channel send rate limit in bytes per second, defaults to {} (unlimited)."
807
    )
808
    (
66 ✔
809
        "network.blacklist",
810
        setting<network::config::authorities>(&configured.network.blacklists),
22 ✔
811
        "IP address to disallow, allows all others, multiple allowed."
812
    )
813
    (
66 ✔
814
        "network.whitelist",
815
        setting<network::config::authorities>(&configured.network.whitelists),
22 ✔
816
        "IP address to allow, prohibits all others, multiple allowed."
817
    )
818

819
    /* [peer] */
820
    (
66 ✔
821
        "peer.address_upper",
822
        setting<uint16_t>(&configured.network.address_upper),
22 ✔
823
        "The upper bound for address selection divisor, defaults to {}."
824
    )
825
    (
66 ✔
826
        "peer.address_lower",
827
        setting<uint16_t>(&configured.network.address_lower),
22 ✔
828
        "The lower bound for address selection divisor, defaults to {}."
829
    )
830
    (
66 ✔
831
        "peer.protocol_maximum",
832
        setting<uint32_t>(&configured.network.protocol_maximum),
22 ✔
833
        "The maximum network protocol version, defaults to {}."
834
    )
835
    (
66 ✔
836
        "peer.protocol_minimum",
837
        setting<uint32_t>(&configured.network.protocol_minimum),
22 ✔
838
        "The minimum network protocol version, defaults to {}."
839
    )
840
    (
66 ✔
841
        "peer.invalid_services",
842
        setting<uint64_t>(&configured.network.invalid_services),
22 ✔
843
        "The advertised services that cause a peer to be dropped, defaults to {}."
844
    )
845
    (
66 ✔
846
        "peer.enable_address",
847
        setting<bool>(&configured.network.enable_address),
22 ✔
848
        "Enable address gossip, defaults to {}."
849
    )
850
    (
66 ✔
851
        "peer.enable_address_v2",
852
        setting<bool>(&configured.network.enable_address_v2),
22 ✔
853
        "Enable privacy network (Tor and I2P) address gossip, defaults to {}."
854
    )
855
    (
66 ✔
856
        "peer.enable_witness_tx",
857
        setting<bool>(&configured.network.enable_witness_tx),
22 ✔
858
        "Enable witness transaction identifier relay, defaults to {}."
859
    )
860
    (
66 ✔
861
        "peer.enable_compact",
862
        setting<bool>(&configured.network.enable_compact),
22 ✔
863
        "Enable compact block messages, defaults to {}."
864
    )
865
    (
66 ✔
866
        "peer.enable_alert",
867
        setting<bool>(&configured.network.enable_alert),
22 ✔
868
        "Enable alert messages, defaults to {}."
869
    )
870
    (
66 ✔
871
        "peer.enable_reject",
872
        setting<bool>(&configured.network.enable_reject),
22 ✔
873
        "Enable reject messages, defaults to {}."
874
    )
875
    (
66 ✔
876
        "peer.enable_not_found",
877
        setting<bool>(&configured.network.enable_not_found),
22 ✔
878
        "Enable not found messages, defaults to {}."
879
    )
880
    (
66 ✔
881
        "peer.enable_memory_pool",
882
        setting<bool>(&configured.network.enable_memory_pool),
22 ✔
883
        "Enable memory pool messages, defaults to {}."
884
    )
885
    (
66 ✔
886
        "peer.enable_relay",
887
        setting<bool>(&configured.network.enable_relay),
22 ✔
888
        "Enable transaction relay, defaults to {}."
889
    )
890
    (
66 ✔
891
        "peer.validate_checksum",
892
        setting<bool>(&configured.network.validate_checksum),
22 ✔
893
        "Validate the checksum of network messages, defaults to {}."
894
    )
895
    (
66 ✔
896
        "peer.gossip_ipv4",
897
        setting<bool>(&configured.network.gossip_ipv4),
22 ✔
898
        "Gossip internet protocol version 4 (IPv4) addresses, defaults to {}."
899
    )
900
    (
66 ✔
901
        "peer.gossip_ipv6",
902
        setting<bool>(&configured.network.gossip_ipv6),
22 ✔
903
        "Gossip internet protocol version 6 (IPv6) addresses, defaults to {}."
904
    )
905
    (
66 ✔
906
        "peer.gossip_tor",
907
        setting<bool>(&configured.network.gossip_tor),
22 ✔
908
        "Gossip tor (onion) addresses, defaults to {}."
909
    )
910
    (
66 ✔
911
        "peer.gossip_i2p",
912
        setting<bool>(&configured.network.gossip_i2p),
22 ✔
913
        "Gossip i2p addresses, defaults to {}."
914
    )
915
    (
66 ✔
916
        "peer.identifier",
917
        setting<uint32_t>(&configured.network.identifier),
22 ✔
918
        "The magic number for message headers, defaults to {}."
919
    )
920
    (
66 ✔
921
        "peer.handshake_timeout_seconds",
922
        setting<uint32_t>(&configured.network.handshake_timeout_seconds),
22 ✔
923
        "The time limit to complete the connection handshake, defaults to {} (0 disables)."
924
    )
925
    (
66 ✔
926
        "peer.channel_heartbeat_minutes",
927
        setting<uint32_t>(&configured.network.channel_heartbeat_minutes),
22 ✔
928
        "The time between ping messages, defaults to {} (0 disables)."
929
    )
930
    (
66 ✔
931
        "peer.maximum_skew_minutes",
932
        setting<uint32_t>(&configured.network.maximum_skew_minutes),
22 ✔
933
        "The maximum allowable channel clock skew, defaults to {}."
934
    )
935
    (
66 ✔
936
        "peer.user_agent",
937
        setting<std::string>(&configured.network.user_agent),
22 ✔
938
        "The node user agent string, defaults to {}."
939
    )
940
    (
66 ✔
941
        "peer.path",
942
        setting<config::path>(&configured.network.path),
22 ✔
943
        "The peer address cache file directory, defaults to {}."
944
    )
945

946
    /* [outbound] */
947
    (
66 ✔
948
        "outbound.bind",
949
        setting<network::config::authorities>(&configured.network.outbound.binds),
22 ✔
950
        "IP address to bind outbound connections, multiple allowed, defaults to {}."
951
    )
952
    (
66 ✔
953
        "outbound.connections",
954
        setting<uint16_t>(&configured.network.outbound.connections),
22 ✔
955
        "The target number of outgoing network connections, defaults to {}."
956
    )
957
    (
66 ✔
958
        "outbound.current_connections",
959
        setting<uint16_t>(&configured.node.current_connections),
22 ✔
960
        "The target number of outgoing connections when current, defaults to {} (0 disables)."
961
    )
962
    (
66 ✔
963
        "outbound.rate_limit",
964
        setting<uint32_t>(&configured.network.outbound.rate_limit),
22 ✔
965
        "The send rate limit in bytes per second, defaults to {} (network controls)."
966
    )
967
    (
66 ✔
968
        "outbound.connect_timeout_seconds",
969
        setting<uint32_t>(&configured.network.outbound.connect_timeout_seconds),
22 ✔
970
        "The time limit for connection establishment, defaults to {} (network controls)."
971
    )
972
    (
66 ✔
973
        "outbound.inactivity_minutes",
974
        setting<uint32_t>(&configured.network.outbound.inactivity_minutes),
22 ✔
975
        "The inactivity time limit for any connection, defaults to {} (0 disables)."
976
    )
977
    (
66 ✔
978
        "outbound.expiration_minutes",
979
        setting<uint32_t>(&configured.network.outbound.expiration_minutes),
22 ✔
980
        "The age limit for any connection, defaults to {} (0 disables)."
981
    )
982
    (
66 ✔
983
        "outbound.minimum_buffer",
984
        setting<uint32_t>(&configured.network.outbound.minimum_buffer),
22 ✔
985
        "The minimum retained read buffer size, defaults to {}."
986
    )
987
    (
66 ✔
988
        "outbound.maximum_backlog",
989
        setting<uint32_t>(&configured.network.outbound.maximum_backlog),
22 ✔
990
        "The maximum write backlog of a channel, defaults to {}."
991
    )
992
    (
66 ✔
993
        "outbound.maximum_request",
994
        setting<uint32_t>(&configured.network.outbound.maximum_request),
22 ✔
995
        "The maximum allowed request size, defaults to {}."
996
    )
997
    (
66 ✔
998
        "outbound.seed",
999
        setting<network::config::endpoints>(&configured.network.outbound.seeds),
22 ✔
1000
        "A seed node for initializing the host pool, multiple allowed."
1001
    )
1002
    (
66 ✔
1003
        "outbound.connect_batch_size",
1004
        setting<uint16_t>(&configured.network.outbound.connect_batch_size),
22 ✔
1005
        "The number of concurrent attempts to establish one connection, defaults to {}."
1006
    )
1007
    (
66 ✔
1008
        "outbound.host_pool_capacity",
1009
        setting<uint32_t>(&configured.network.outbound.host_pool_capacity),
22 ✔
1010
        "The maximum number of peer hosts in the pool, defaults to {}."
1011
    )
1012
    (
66 ✔
1013
        "outbound.seeding_timeout_seconds",
1014
        setting<uint32_t>(&configured.network.outbound.seeding_timeout_seconds),
22 ✔
1015
        "The time limit for obtaining seed connections and addresses, defaults to {}."
1016
    )
1017
    (
66 ✔
1018
        "outbound.username",
1019
        setting<std::string>(&configured.network.outbound.username),
22 ✔
1020
        "The socks5 proxy username (optional)."
1021
    )
1022
    (
66 ✔
1023
        "outbound.password",
1024
        secret<std::string>(&configured.network.outbound.password),
22 ✔
1025
        "The socks5 proxy password (optional)."
1026
    )
1027
    (
66 ✔
1028
        "outbound.socks",
1029
        setting<config::endpoint>(&configured.network.outbound.socks),
22 ✔
1030
        "The socks5 proxy endpoint (port required)."
1031
    )
1032

1033
    /* [inbound] */
1034
    ////(
1035
    ////    "inbound.secure",
1036
    ////    setting<bool>(&configured.network.inbound.secure),
1037
    ////    "Require transport layer security, defaults to {} (not implemented)."
1038
    ////)
1039
    (
66 ✔
1040
        "inbound.bind",
1041
        setting<network::config::authorities>(&configured.network.inbound.binds),
22 ✔
1042
        "IP address to bind for listening, multiple allowed, defaults to {} (all IPv4)."
1043
    )
1044
    (
66 ✔
1045
        "inbound.connections",
1046
        setting<uint16_t>(&configured.network.inbound.connections),
22 ✔
1047
        "The target number of incoming network connections, defaults to {}."
1048
    )
1049
    (
66 ✔
1050
        "inbound.rate_limit",
1051
        setting<uint32_t>(&configured.network.inbound.rate_limit),
22 ✔
1052
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1053
    )
1054
    (
66 ✔
1055
        "inbound.connect_timeout_seconds",
1056
        setting<uint32_t>(&configured.network.inbound.connect_timeout_seconds),
22 ✔
1057
        "The time limit for connection establishment, defaults to {} (network controls)."
1058
    )
1059
    (
66 ✔
1060
        "inbound.inactivity_minutes",
1061
        setting<uint32_t>(&configured.network.inbound.inactivity_minutes),
22 ✔
1062
        "The inactivity time limit for any connection, defaults to {} (0 disables)."
1063
    )
1064
    (
66 ✔
1065
        "inbound.expiration_minutes",
1066
        setting<uint32_t>(&configured.network.inbound.expiration_minutes),
22 ✔
1067
        "The age limit for any connection, defaults to {} (0 disables)."
1068
    )
1069
    (
66 ✔
1070
        "inbound.minimum_buffer",
1071
        setting<uint32_t>(&configured.network.inbound.minimum_buffer),
22 ✔
1072
        "The minimum retained read buffer size, defaults to {}."
1073
    )
1074
    (
66 ✔
1075
        "inbound.maximum_backlog",
1076
        setting<uint32_t>(&configured.network.inbound.maximum_backlog),
22 ✔
1077
        "The maximum write backlog of a channel, defaults to {}."
1078
    )
1079
    (
66 ✔
1080
        "inbound.maximum_request",
1081
        setting<uint32_t>(&configured.network.inbound.maximum_request),
22 ✔
1082
        "The maximum allowed request size, defaults to {}."
1083
    )
1084
    (
66 ✔
1085
        "inbound.enable_loopback",
1086
        setting<bool>(&configured.network.inbound.enable_loopback),
22 ✔
1087
        "Allow connections from the node to itself, defaults to {}."
1088
    )
1089
    (
66 ✔
1090
        "inbound.self",
1091
        setting<network::config::addresses>(&configured.network.inbound.selfs),
22 ✔
1092
        "Address to advertise, multiple allowed."
1093
    )
1094
    (
66 ✔
1095
        "inbound.username",
1096
        setting<std::string>(&configured.network.inbound.username),
22 ✔
1097
        "The sam bridge username (optional)."
1098
    )
1099
    (
66 ✔
1100
        "inbound.password",
1101
        secret<std::string>(&configured.network.inbound.password),
22 ✔
1102
        "The sam bridge password (optional)."
1103
    )
1104
    (
66 ✔
1105
        "inbound.sam",
1106
        setting<config::endpoint>(&configured.network.inbound.bridge),
22 ✔
1107
        "The i2p sam bridge endpoint (port required)."
1108
    )
1109
    (
66 ✔
1110
        "inbound.key_path",
1111
        setting<config::path>(&configured.network.inbound.key_path),
22 ✔
1112
        "The i2p destination private key file path, created if not existing."
1113
    )
1114

1115
    /* [manual] */
1116
    ////(
1117
    ////    "manual.secure",
1118
    ////    setting<bool>(&configured.network.manual.secure),
1119
    ////    "Require transport layer security, defaults to {} (not implemented)."
1120
    ////)
1121
    (
66 ✔
1122
        "manual.bind",
1123
        setting<network::config::authorities>(&configured.network.manual.binds),
22 ✔
1124
        "IP address to bind manual connections, multiple allowed, defaults to {}."
1125
    )
1126
    ////(
1127
    ////    "manual.connections",
1128
    ////    setting<uint16_t>(&configured.network.manual.connections),
1129
    ////    "The target number of outgoing manual connections (not implemented)."
1130
    ////)
1131
    (
66 ✔
1132
        "manual.rate_limit",
1133
        setting<uint32_t>(&configured.network.manual.rate_limit),
22 ✔
1134
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1135
    )
1136
    (
66 ✔
1137
        "manual.connect_timeout_seconds",
1138
        setting<uint32_t>(&configured.network.manual.connect_timeout_seconds),
22 ✔
1139
        "The time limit for connection establishment, defaults to {} (network controls)."
1140
    )
1141
    (
66 ✔
1142
        "manual.inactivity_minutes",
1143
        setting<uint32_t>(&configured.network.manual.inactivity_minutes),
22 ✔
1144
        "The inactivity time limit for any connection, defaults to {} (0 disables, will attempt reconnect)."
1145
    )
1146
    (
66 ✔
1147
        "manual.expiration_minutes",
1148
        setting<uint32_t>(&configured.network.manual.expiration_minutes),
22 ✔
1149
        "The age limit for any connection, defaults to {} (0 disables, will attempt reconnect)."
1150
    )
1151
    (
66 ✔
1152
        "manual.minimum_buffer",
1153
        setting<uint32_t>(&configured.network.manual.minimum_buffer),
22 ✔
1154
        "The minimum retained read buffer size, defaults to {}."
1155
    )
1156
    (
66 ✔
1157
        "manual.maximum_backlog",
1158
        setting<uint32_t>(&configured.network.manual.maximum_backlog),
22 ✔
1159
        "The maximum write backlog of a channel, defaults to {}."
1160
    )
1161
    (
66 ✔
1162
        "manual.maximum_request",
1163
        setting<uint32_t>(&configured.network.manual.maximum_request),
22 ✔
1164
        "The maximum allowed request size, defaults to {}."
1165
    )
1166
    (
66 ✔
1167
        "manual.peer",
1168
        setting<network::config::endpoints>(&configured.network.manual.peers),
22 ✔
1169
        "A persistent peer node, multiple allowed."
1170
    )
1171
    (
66 ✔
1172
        "manual.username",
1173
        setting<std::string>(&configured.network.manual.username),
22 ✔
1174
        "The socks5 proxy username (optional)."
1175
    )
1176
    (
66 ✔
1177
        "manual.password",
1178
        secret<std::string>(&configured.network.manual.password),
22 ✔
1179
        "The socks5 proxy password (optional)."
1180
    )
1181
    (
66 ✔
1182
        "manual.socks",
1183
        setting<config::endpoint>(&configured.network.manual.socks),
22 ✔
1184
        "The socks5 proxy endpoint (port required)."
1185
    )
1186

1187
    /* [wallet] */
1188
    (
66 ✔
1189
        "wallet.p2kh_prefix",
1190
        setting<config::byte>(&configured.server.wallet.p2kh_prefix),
22 ✔
1191
        "The pay-to-public-key-hash address prefix, defaults to {} (use '111' for testnet)."
1192
    )
1193
    (
66 ✔
1194
        "wallet.p2sh_prefix",
1195
        setting<config::byte>(&configured.server.wallet.p2sh_prefix),
22 ✔
1196
        "The pay-to-script-hash address prefix, defaults to {} (use '196' for testnet)."
1197
    )
1198
    (
66 ✔
1199
        "wallet.wif_prefix",
1200
        setting<config::byte>(&configured.server.wallet.wif_prefix),
22 ✔
1201
        "The wallet import format prefix, defaults to {} (use '239' for testnet)."
1202
    )
1203
    (
66 ✔
1204
        "wallet.witness_prefix",
1205
        setting<std::string>(&configured.server.wallet.witness_prefix),
22 ✔
1206
        "The witness address prefix, defaults to {} (use 'tb' for testnet)."
1207
    )
1208
    (
66 ✔
1209
        "wallet.silent_prefix",
1210
        setting<std::string>(&configured.server.wallet.silent_prefix),
22 ✔
1211
        "The silent payment address prefix, defaults to {} (use 'tsp' for testnet)."
1212
    )
1213
    (
66 ✔
1214
        "wallet.hd_private_prefix",
1215
        setting<uint32_t>(&configured.server.wallet.hd_private_prefix),
22 ✔
1216
        "The extended private key prefix, defaults to {} (use '70615956' for testnet)."
1217
    )
1218
    (
66 ✔
1219
        "wallet.hd_public_prefix",
1220
        setting<uint32_t>(&configured.server.wallet.hd_public_prefix),
22 ✔
1221
        "The extended public key prefix, defaults to {} (use '70617039' for testnet)."
1222
    )
1223

1224
    /* [admin] */
1225
    (
66 ✔
1226
        "admin.bind",
1227
        setting<network::config::authorities>(&configured.server.admin.binds),
22 ✔
1228
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1229
    )
1230
    (
66 ✔
1231
        "admin.safe",
1232
        setting<network::config::authorities>(&configured.server.admin.safes),
22 ✔
1233
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1234
    )
1235
    (
66 ✔
1236
        "admin.cert_auth",
1237
        setting<config::path>(&configured.server.admin.cert_auth),
22 ✔
1238
        "The trusted client certificate directory (*.PEM), enables client authentication."
1239
    )
1240
    (
66 ✔
1241
        "admin.cert_path",
1242
        setting<config::path>(&configured.server.admin.cert_path),
22 ✔
1243
        "The path to the server certificate file (.PEM), defaults to {}."
1244
    )
1245
    (
66 ✔
1246
        "admin.key_path",
1247
        setting<config::path>(&configured.server.admin.key_path),
22 ✔
1248
        "The path to the server private key file (.PEM), defaults to {}."
1249
    )
1250
    (
66 ✔
1251
        "admin.key_pass",
1252
        secret<std::string>(&configured.server.admin.key_pass),
22 ✔
1253
        "The password to decrypt the server private key file (.PEM), optional."
1254
    )
1255
    (
66 ✔
1256
        "admin.credential",
1257
        secret<network::config::credentials>(&configured.server.admin.credentials),
22 ✔
1258
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1259
    )
1260
    (
66 ✔
1261
        "admin.connections",
1262
        setting<uint16_t>(&configured.server.admin.connections),
22 ✔
1263
        "The required maximum number of connections, defaults to {}."
1264
    )
1265
    (
66 ✔
1266
        "admin.rate_limit",
1267
        setting<uint32_t>(&configured.server.admin.rate_limit),
22 ✔
1268
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1269
    )
1270
    (
66 ✔
1271
        "admin.connect_timeout_seconds",
1272
        setting<uint32_t>(&configured.server.admin.connect_timeout_seconds),
22 ✔
1273
        "The time limit for connection establishment, defaults to {} (network controls)."
1274
    )
1275
    (
66 ✔
1276
        "admin.inactivity_minutes",
1277
        setting<uint32_t>(&configured.server.admin.inactivity_minutes),
22 ✔
1278
        "The idle timeout (http keep-alive), defaults to {}."
1279
    )
1280
    (
66 ✔
1281
        "admin.expiration_minutes",
1282
        setting<uint32_t>(&configured.server.admin.expiration_minutes),
22 ✔
1283
        "The maximum connection duration, defaults to {}."
1284
    )
1285
    (
66 ✔
1286
        "admin.minimum_buffer",
1287
        setting<uint32_t>(&configured.server.admin.minimum_buffer),
22 ✔
1288
        "The minimum retained read buffer size, defaults to {}."
1289
    )
1290
    (
66 ✔
1291
        "admin.maximum_backlog",
1292
        setting<uint32_t>(&configured.server.admin.maximum_backlog),
22 ✔
1293
        "The maximum write backlog of a channel, defaults to {}."
1294
    )
1295
    (
66 ✔
1296
        "admin.maximum_buffer",
1297
        setting<uint32_t>(&configured.server.admin.maximum_buffer),
22 ✔
1298
        "The maximum json response buffer size, defaults to {}."
1299
    )
1300
    (
66 ✔
1301
        "admin.maximum_request",
1302
        setting<uint32_t>(&configured.server.admin.maximum_request),
22 ✔
1303
        "The maximum allowed request size, defaults to {}."
1304
    )
1305
    (
66 ✔
1306
        "admin.server",
1307
        setting<std::string>(&configured.server.admin.server),
22 ✔
1308
        "The server name (http header), defaults to {}."
1309
    )
1310
    (
66 ✔
1311
        "admin.host",
1312
        setting<network::config::endpoints>(&configured.server.admin.hosts),
22 ✔
1313
        "The host name (http verification), multiple allowed, defaults to {} (disabled)."
1314
    )
1315
    (
66 ✔
1316
        "admin.origin",
1317
        setting<network::config::endpoints>(&configured.server.admin.origins),
22 ✔
1318
        "The allowed origin (see CORS), multiple allowed, defaults to {} (disabled)."
1319
    )
1320
    (
66 ✔
1321
        "admin.allow_opaque_origin",
1322
        setting<bool>(&configured.server.admin.allow_opaque_origin),
22 ✔
1323
        "Allow requests from opaque origin (see CORS), defaults to {}."
1324
    )
1325
    (
66 ✔
1326
        "admin.path",
1327
        setting<config::path>(&configured.server.admin.path),
22 ✔
1328
        "The required root path of source files to be served, defaults to {}."
1329
    )
1330
    (
66 ✔
1331
        "admin.default",
1332
        setting<std::string>(&configured.server.admin.default_),
22 ✔
1333
        "The path of the default source page, defaults to {}."
1334
    )
1335

1336
    /* [native] */
1337
    (
66 ✔
1338
        "native.bind",
1339
        setting<network::config::authorities>(&configured.server.native.binds),
22 ✔
1340
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1341
    )
1342
    (
66 ✔
1343
        "native.safe",
1344
        setting<network::config::authorities>(&configured.server.native.safes),
22 ✔
1345
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1346
    )
1347
    (
66 ✔
1348
        "native.cert_auth",
1349
        setting<config::path>(&configured.server.native.cert_auth),
22 ✔
1350
        "The trusted client certificate directory (*.PEM), enables client authentication."
1351
    )
1352
    (
66 ✔
1353
        "native.cert_path",
1354
        setting<config::path>(&configured.server.native.cert_path),
22 ✔
1355
        "The path to the server certificate file (.PEM), defaults to {}."
1356
    )
1357
    (
66 ✔
1358
        "native.key_path",
1359
        setting<config::path>(&configured.server.native.key_path),
22 ✔
1360
        "The path to the server private key file (.PEM), defaults to {}."
1361
    )
1362
    (
66 ✔
1363
        "native.key_pass",
1364
        secret<std::string>(&configured.server.native.key_pass),
22 ✔
1365
        "The password to decrypt the server private key file (.PEM), optional."
1366
    )
1367
    (
66 ✔
1368
        "native.credential",
1369
        secret<network::config::credentials>(&configured.server.native.credentials),
22 ✔
1370
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1371
    )
1372
    (
66 ✔
1373
        "native.connections",
1374
        setting<uint16_t>(&configured.server.native.connections),
22 ✔
1375
        "The required maximum number of connections, defaults to {}."
1376
    )
1377
    (
66 ✔
1378
        "native.rate_limit",
1379
        setting<uint32_t>(&configured.server.native.rate_limit),
22 ✔
1380
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1381
    )
1382
    (
66 ✔
1383
        "native.connect_timeout_seconds",
1384
        setting<uint32_t>(&configured.server.native.connect_timeout_seconds),
22 ✔
1385
        "The time limit for connection establishment, defaults to {} (network controls)."
1386
    )
1387
    (
66 ✔
1388
        "native.inactivity_minutes",
1389
        setting<uint32_t>(&configured.server.native.inactivity_minutes),
22 ✔
1390
        "The idle timeout (http keep-alive), defaults to {}."
1391
    )
1392
    (
66 ✔
1393
        "native.expiration_minutes",
1394
        setting<uint32_t>(&configured.server.native.expiration_minutes),
22 ✔
1395
        "The maximum connection duration, defaults to {}."
1396
    )
1397
    (
66 ✔
1398
        "native.minimum_buffer",
1399
        setting<uint32_t>(&configured.server.native.minimum_buffer),
22 ✔
1400
        "The minimum retained read buffer size, defaults to {}."
1401
    )
1402
    (
66 ✔
1403
        "native.maximum_backlog",
1404
        setting<uint32_t>(&configured.server.native.maximum_backlog),
22 ✔
1405
        "The maximum write backlog of a channel, defaults to {}."
1406
    )
1407
    (
66 ✔
1408
        "native.maximum_buffer",
1409
        setting<uint32_t>(&configured.server.native.maximum_buffer),
22 ✔
1410
        "The maximum json response buffer size, defaults to {}."
1411
    )
1412
    (
66 ✔
1413
        "native.maximum_request",
1414
        setting<uint32_t>(&configured.server.native.maximum_request),
22 ✔
1415
        "The maximum allowed request size, defaults to {}."
1416
    )
1417
    (
66 ✔
1418
        "native.server",
1419
        setting<std::string>(&configured.server.native.server),
22 ✔
1420
        "The server name (http header), defaults to {}."
1421
    )
1422
    (
66 ✔
1423
        "native.host",
1424
        setting<network::config::endpoints>(&configured.server.native.hosts),
22 ✔
1425
        "The host name (http verification), multiple allowed, defaults to {} (disabled)."
1426
    )
1427
    (
66 ✔
1428
        "native.origin",
1429
        setting<network::config::endpoints>(&configured.server.native.origins),
22 ✔
1430
        "The allowed origin (see CORS), multiple allowed, defaults to {} (disabled)."
1431
    )
1432
    (
66 ✔
1433
        "native.allow_opaque_origin",
1434
        setting<bool>(&configured.server.native.allow_opaque_origin),
22 ✔
1435
        "Allow requests from opaque origin (see CORS), defaults to {}."
1436
    )
1437
    (
66 ✔
1438
        "native.path",
1439
        setting<config::path>(&configured.server.native.path),
22 ✔
1440
        "The required root path of source files to be served, defaults to {}."
1441
    )
1442
    (
66 ✔
1443
        "native.default",
1444
        setting<std::string>(&configured.server.native.default_),
22 ✔
1445
        "The path of the default source page, defaults to {}."
1446
    )
1447
    (
66 ✔
1448
        "native.websocket",
1449
        setting<bool>(&configured.server.native.websocket),
22 ✔
1450
        "Enable websocket interface, defaults to {}."
1451
    )
1452

1453
    /* [bitcoind] */
1454
    (
66 ✔
1455
        "bitcoind.bind",
1456
        setting<network::config::authorities>(&configured.server.bitcoind.binds),
22 ✔
1457
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1458
    )
1459
    (
66 ✔
1460
        "bitcoind.safe",
1461
        setting<network::config::authorities>(&configured.server.bitcoind.safes),
22 ✔
1462
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1463
    )
1464
    (
66 ✔
1465
        "bitcoind.cert_auth",
1466
        setting<config::path>(&configured.server.bitcoind.cert_auth),
22 ✔
1467
        "The trusted client certificate directory (*.PEM), enables client authentication."
1468
    )
1469
    (
66 ✔
1470
        "bitcoind.cert_path",
1471
        setting<config::path>(&configured.server.bitcoind.cert_path),
22 ✔
1472
        "The path to the server certificate file (.PEM), defaults to {}."
1473
    )
1474
    (
66 ✔
1475
        "bitcoind.key_path",
1476
        setting<config::path>(&configured.server.bitcoind.key_path),
22 ✔
1477
        "The path to the server private key file (.PEM), defaults to {}."
1478
    )
1479
    (
66 ✔
1480
        "bitcoind.key_pass",
1481
        secret<std::string>(&configured.server.bitcoind.key_pass),
22 ✔
1482
        "The password to decrypt the server private key file (.PEM), optional."
1483
    )
1484
    (
66 ✔
1485
        "bitcoind.credential",
1486
        secret<network::config::credentials>(&configured.server.bitcoind.credentials),
22 ✔
1487
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1488
    )
1489
    (
66 ✔
1490
        "bitcoind.connections",
1491
        setting<uint16_t>(&configured.server.bitcoind.connections),
22 ✔
1492
        "The required maximum number of connections, defaults to {}."
1493
    )
1494
    (
66 ✔
1495
        "bitcoind.rate_limit",
1496
        setting<uint32_t>(&configured.server.bitcoind.rate_limit),
22 ✔
1497
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1498
    )
1499
    (
66 ✔
1500
        "bitcoind.connect_timeout_seconds",
1501
        setting<uint32_t>(&configured.server.bitcoind.connect_timeout_seconds),
22 ✔
1502
        "The time limit for connection establishment, defaults to {} (network controls)."
1503
    )
1504
    (
66 ✔
1505
        "bitcoind.inactivity_minutes",
1506
        setting<uint32_t>(&configured.server.bitcoind.inactivity_minutes),
22 ✔
1507
        "The idle timeout (http keep-alive), defaults to {}."
1508
    )
1509
    (
66 ✔
1510
        "bitcoind.expiration_minutes",
1511
        setting<uint32_t>(&configured.server.bitcoind.expiration_minutes),
22 ✔
1512
        "The maximum connection duration, defaults to {}."
1513
    )
1514
    (
66 ✔
1515
        "bitcoind.minimum_buffer",
1516
        setting<uint32_t>(&configured.server.bitcoind.minimum_buffer),
22 ✔
1517
        "The minimum retained read buffer size, defaults to {}."
1518
    )
1519
    (
66 ✔
1520
        "bitcoind.maximum_backlog",
1521
        setting<uint32_t>(&configured.server.bitcoind.maximum_backlog),
22 ✔
1522
        "The maximum write backlog of a channel, defaults to {}."
1523
    )
1524
    (
66 ✔
1525
        "bitcoind.maximum_buffer",
1526
        setting<uint32_t>(&configured.server.bitcoind.maximum_buffer),
22 ✔
1527
        "The maximum json response buffer size, defaults to {}."
1528
    )
1529
    (
66 ✔
1530
        "bitcoind.maximum_request",
1531
        setting<uint32_t>(&configured.server.bitcoind.maximum_request),
22 ✔
1532
        "The maximum allowed request size, defaults to {}."
1533
    )
1534
    (
66 ✔
1535
        "bitcoind.server",
1536
        setting<std::string>(&configured.server.bitcoind.server),
22 ✔
1537
        "The server name (http header), defaults to {}."
1538
    )
1539
    (
66 ✔
1540
        "bitcoind.version",
1541
        setting<version>(&configured.server.bitcoind.version),
22 ✔
1542
        "The version identity (getnetworkinfo), defaults to {}."
1543
    )
1544
    (
66 ✔
1545
        "bitcoind.subversion",
1546
        setting<std::string>(&configured.server.bitcoind.subversion),
22 ✔
1547
        "The subversion identity (getnetworkinfo), defaults to {}."
1548
    )
1549
    (
66 ✔
1550
        "bitcoind.host",
1551
        setting<network::config::endpoints>(&configured.server.bitcoind.hosts),
22 ✔
1552
        "The host name (http verification), multiple allowed, defaults to {} (disabled)."
1553
    )
1554
    (
66 ✔
1555
        "bitcoind.origin",
1556
        setting<network::config::endpoints>(&configured.server.bitcoind.origins),
22 ✔
1557
        "The allowed origin (see CORS), multiple allowed, defaults to {} (disabled)."
1558
    )
1559
    (
66 ✔
1560
        "bitcoind.allow_opaque_origin",
1561
        setting<bool>(&configured.server.bitcoind.allow_opaque_origin),
22 ✔
1562
        "Allow requests from opaque origin (see CORS), defaults to {}."
1563
    )
1564

1565
    /* [bitcoind_zmq] */
1566
    (
66 ✔
1567
        "bitcoind_zmq.bind",
1568
        setting<network::config::authorities>(&configured.server.bitcoind_zmq.binds),
22 ✔
1569
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1570
    )
1571
    (
66 ✔
1572
        "bitcoind_zmq.safe",
1573
        setting<network::config::authorities>(&configured.server.bitcoind_zmq.safes),
22 ✔
1574
        "IP address to secure (CurveZMQ) bind, multiple allowed, defaults to {} (disabled)."
1575
    )
1576
    (
66 ✔
1577
        "bitcoind_zmq.cert",
1578
        setting<std::vector<config::base85>>(&configured.server.bitcoind_zmq.certs),
22 ✔
1579
        "The Z85 encoded public key of an authorized client, multiple allowed, defaults to {} (all)."
1580
    )
1581
    (
66 ✔
1582
        "bitcoind_zmq.connections",
1583
        setting<uint16_t>(&configured.server.bitcoind_zmq.connections),
22 ✔
1584
        "The required maximum number of connections, defaults to {}."
1585
    )
1586
    (
66 ✔
1587
        "bitcoind_zmq.rate_limit",
1588
        setting<uint32_t>(&configured.server.bitcoind_zmq.rate_limit),
22 ✔
1589
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1590
    )
1591
    (
66 ✔
1592
        "bitcoind_zmq.connect_timeout_seconds",
1593
        setting<uint32_t>(&configured.server.bitcoind_zmq.connect_timeout_seconds),
22 ✔
1594
        "The time limit for connection establishment, defaults to {} (network controls)."
1595
    )
1596
    (
66 ✔
1597
        "bitcoind_zmq.minimum_buffer",
1598
        setting<uint32_t>(&configured.server.bitcoind_zmq.minimum_buffer),
22 ✔
1599
        "The minimum retained read buffer size, defaults to {}."
1600
    )
1601
    (
66 ✔
1602
        "bitcoind_zmq.maximum_backlog",
1603
        setting<uint32_t>(&configured.server.bitcoind_zmq.maximum_backlog),
22 ✔
1604
        "The maximum write backlog of a channel, defaults to {}."
1605
    )
1606
    (
66 ✔
1607
        "bitcoind_zmq.maximum_request",
1608
        setting<uint32_t>(&configured.server.bitcoind_zmq.maximum_request),
22 ✔
1609
        "The maximum allowed request size, defaults to {}."
1610
    )
1611
    (
66 ✔
1612
        "bitcoind_zmq.maximum_subscriptions",
1613
        setting<uint32_t>(&configured.server.bitcoind_zmq.maximum_subscriptions),
22 ✔
1614
        "The maximum topic subscriptions per connection, defaults to {}."
1615
    )
1616
    (
66 ✔
1617
        "bitcoind_zmq.key",
1618
        secret<config::base85>(&configured.server.bitcoind_zmq.key),
22 ✔
1619
        "The Z85 encoded CurveZMQ server secret key, defaults to none (unencrypted)."
1620
    )
1621

1622
    /* [btcd] */
1623
    (
66 ✔
1624
        "btcd.bind",
1625
        setting<network::config::authorities>(&configured.server.btcd.binds),
22 ✔
1626
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1627
    )
1628
    (
66 ✔
1629
        "btcd.safe",
1630
        setting<network::config::authorities>(&configured.server.btcd.safes),
22 ✔
1631
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1632
    )
1633
    (
66 ✔
1634
        "btcd.cert_auth",
1635
        setting<config::path>(&configured.server.btcd.cert_auth),
22 ✔
1636
        "The trusted client certificate directory (*.PEM), enables client authentication."
1637
    )
1638
    (
66 ✔
1639
        "btcd.cert_path",
1640
        setting<config::path>(&configured.server.btcd.cert_path),
22 ✔
1641
        "The path to the server certificate file (.PEM), defaults to {}."
1642
    )
1643
    (
66 ✔
1644
        "btcd.key_path",
1645
        setting<config::path>(&configured.server.btcd.key_path),
22 ✔
1646
        "The path to the server private key file (.PEM), defaults to {}."
1647
    )
1648
    (
66 ✔
1649
        "btcd.key_pass",
1650
        secret<std::string>(&configured.server.btcd.key_pass),
22 ✔
1651
        "The password to decrypt the server private key file (.PEM), optional."
1652
    )
1653
    (
66 ✔
1654
        "btcd.credential",
1655
        secret<network::config::credentials>(&configured.server.btcd.credentials),
22 ✔
1656
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1657
    )
1658
    (
66 ✔
1659
        "btcd.connections",
1660
        setting<uint16_t>(&configured.server.btcd.connections),
22 ✔
1661
        "The required maximum number of connections, defaults to {}."
1662
    )
1663
    (
66 ✔
1664
        "btcd.rate_limit",
1665
        setting<uint32_t>(&configured.server.btcd.rate_limit),
22 ✔
1666
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1667
    )
1668
    (
66 ✔
1669
        "btcd.connect_timeout_seconds",
1670
        setting<uint32_t>(&configured.server.btcd.connect_timeout_seconds),
22 ✔
1671
        "The time limit for connection establishment, defaults to {} (network controls)."
1672
    )
1673
    (
66 ✔
1674
        "btcd.inactivity_minutes",
1675
        setting<uint32_t>(&configured.server.btcd.inactivity_minutes),
22 ✔
1676
        "The idle timeout (http/ws keep-alive), defaults to {}."
1677
    )
1678
    (
66 ✔
1679
        "btcd.expiration_minutes",
1680
        setting<uint32_t>(&configured.server.btcd.expiration_minutes),
22 ✔
1681
        "The maximum connection duration, defaults to {}."
1682
    )
1683
    (
66 ✔
1684
        "btcd.minimum_buffer",
1685
        setting<uint32_t>(&configured.server.btcd.minimum_buffer),
22 ✔
1686
        "The minimum retained read buffer size, defaults to {}."
1687
    )
1688
    (
66 ✔
1689
        "btcd.maximum_backlog",
1690
        setting<uint32_t>(&configured.server.btcd.maximum_backlog),
22 ✔
1691
        "The maximum write backlog of a channel, defaults to {}."
1692
    )
1693
    (
66 ✔
1694
        "btcd.maximum_buffer",
1695
        setting<uint32_t>(&configured.server.btcd.maximum_buffer),
22 ✔
1696
        "The maximum json response buffer size, defaults to {}."
1697
    )
1698
    (
66 ✔
1699
        "btcd.maximum_request",
1700
        setting<uint32_t>(&configured.server.btcd.maximum_request),
22 ✔
1701
        "The maximum allowed request size, defaults to {}."
1702
    )
1703
    (
66 ✔
1704
        "btcd.server",
1705
        setting<std::string>(&configured.server.btcd.server),
22 ✔
1706
        "The server name (http header), defaults to {}."
1707
    )
1708
    (
66 ✔
1709
        "btcd.maximum_filters",
1710
        setting<uint32_t>(&configured.server.btcd.maximum_filters),
22 ✔
1711
        "The maximum number of loadtxfilter watches, defaults to {}."
1712
    )
1713
    (
66 ✔
1714
        "btcd.maximum_history",
1715
        setting<uint32_t>(&configured.server.btcd.maximum_history),
22 ✔
1716
        "The maximum number of address history entries, defaults to {}."
1717
    )
1718
    (
66 ✔
1719
        "btcd.host",
1720
        setting<network::config::endpoints>(&configured.server.btcd.hosts),
22 ✔
1721
        "The host name (http verification), multiple allowed, defaults to {} (disabled)."
1722
    )
1723
    (
66 ✔
1724
        "btcd.origin",
1725
        setting<network::config::endpoints>(&configured.server.btcd.origins),
22 ✔
1726
        "The allowed origin (see CORS), multiple allowed, defaults to {} (disabled)."
1727
    )
1728
    (
66 ✔
1729
        "btcd.allow_opaque_origin",
1730
        setting<bool>(&configured.server.btcd.allow_opaque_origin),
22 ✔
1731
        "Allow requests from opaque origin (see CORS), defaults to {}."
1732
    )
1733

1734
    /* [electrum] */
1735
    (
66 ✔
1736
        "electrum.bind",
1737
        setting<network::config::authorities>(&configured.server.electrum.binds),
22 ✔
1738
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1739
    )
1740
    (
66 ✔
1741
        "electrum.safe",
1742
        setting<network::config::authorities>(&configured.server.electrum.safes),
22 ✔
1743
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1744
    )
1745
    (
66 ✔
1746
        "electrum.cert_auth",
1747
        setting<config::path>(&configured.server.electrum.cert_auth),
22 ✔
1748
        "The trusted client certificate directory (*.PEM), enables client authentication."
1749
    )
1750
    (
66 ✔
1751
        "electrum.cert_path",
1752
        setting<config::path>(&configured.server.electrum.cert_path),
22 ✔
1753
        "The path to the server certificate file (.PEM), defaults to {}."
1754
    )
1755
    (
66 ✔
1756
        "electrum.key_path",
1757
        setting<config::path>(&configured.server.electrum.key_path),
22 ✔
1758
        "The path to the server private key file (.PEM), defaults to {}."
1759
    )
1760
    (
66 ✔
1761
        "electrum.key_pass",
1762
        secret<std::string>(&configured.server.electrum.key_pass),
22 ✔
1763
        "The password to decrypt the server private key file (.PEM), optional."
1764
    )
1765
    (
66 ✔
1766
        "electrum.credential",
1767
        secret<network::config::credentials>(&configured.server.electrum.credentials),
22 ✔
1768
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1769
    )
1770
    (
66 ✔
1771
        "electrum.connections",
1772
        setting<uint16_t>(&configured.server.electrum.connections),
22 ✔
1773
        "The required maximum number of connections, defaults to {}."
1774
    )
1775
    (
66 ✔
1776
        "electrum.rate_limit",
1777
        setting<uint32_t>(&configured.server.electrum.rate_limit),
22 ✔
1778
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1779
    )
1780
    (
66 ✔
1781
        "electrum.connect_timeout_seconds",
1782
        setting<uint32_t>(&configured.server.electrum.connect_timeout_seconds),
22 ✔
1783
        "The time limit for connection establishment, defaults to {} (network controls)."
1784
    )
1785
    (
66 ✔
1786
        "electrum.inactivity_minutes",
1787
        setting<uint32_t>(&configured.server.electrum.inactivity_minutes),
22 ✔
1788
        "The idle timeout (http keep-alive), defaults to {}."
1789
    )
1790
    (
66 ✔
1791
        "electrum.expiration_minutes",
1792
        setting<uint32_t>(&configured.server.electrum.expiration_minutes),
22 ✔
1793
        "The maximum connection duration, defaults to {}."
1794
    )
1795
    (
66 ✔
1796
        "electrum.minimum_buffer",
1797
        setting<uint32_t>(&configured.server.electrum.minimum_buffer),
22 ✔
1798
        "The minimum retained read buffer size, defaults to {}."
1799
    )
1800
    (
66 ✔
1801
        "electrum.maximum_backlog",
1802
        setting<uint32_t>(&configured.server.electrum.maximum_backlog),
22 ✔
1803
        "The maximum write backlog of a channel, defaults to {}."
1804
    )
1805
    (
66 ✔
1806
        "electrum.maximum_buffer",
1807
        setting<uint32_t>(&configured.server.electrum.maximum_buffer),
22 ✔
1808
        "The maximum json response buffer size, defaults to {}."
1809
    )
1810
    (
66 ✔
1811
        "electrum.maximum_request",
1812
        setting<uint32_t>(&configured.server.electrum.maximum_request),
22 ✔
1813
        "The maximum allowed request size, defaults to {}."
1814
    )
1815
    (
66 ✔
1816
        "electrum.maximum_headers",
1817
        setting<uint32_t>(&configured.server.electrum.maximum_headers),
22 ✔
1818
        "The maximum allowed headers returned per request, defaults to {}."
1819
    )
1820
    (
66 ✔
1821
        "electrum.maximum_history",
1822
        setting<uint32_t>(&configured.server.electrum.maximum_history),
22 ✔
1823
        "The maximum number of address history entries upon one subscription, defaults to {}."
1824
    )
1825
    (
66 ✔
1826
        "electrum.maximum_subscriptions",
1827
        setting<uint32_t>(&configured.server.electrum.maximum_subscriptions),
22 ✔
1828
        "The maximum allowed address subscriptions per channel, defaults to {}."
1829
    )
1830
    (
66 ✔
1831
        "electrum.ping_interval_seconds",
1832
        setting<uint32_t>(&configured.server.electrum.ping_interval_seconds),
22 ✔
1833
        "The seconds between unrequested pings, defaults to {} (disabled)."
1834
    )
1835
    (
66 ✔
1836
        "electrum.ping_size",
1837
        setting<uint32_t>(&configured.server.electrum.ping_size),
22 ✔
1838
        "The hex characters of unrequested ping data, defaults to {}."
1839
    )
1840
    (
66 ✔
1841
        "electrum.protocol_minimum",
1842
        setting<version>(&configured.server.electrum.protocol_minimum),
22 ✔
1843
        "Minimum protocol version, defaults to {}."
1844
    )
1845
    (
66 ✔
1846
        "electrum.protocol_maximum",
1847
        setting<version>(&configured.server.electrum.protocol_maximum),
22 ✔
1848
        "Maximum protocol version, defaults to {}."
1849
    )
1850
    (
66 ✔
1851
        "electrum.server_name",
1852
        setting<std::string>(&configured.server.electrum.server_name),
22 ✔
1853
        "String returned by server.version, defaults to {}."
1854
    )
1855
    (
66 ✔
1856
        "electrum.donation_address",
1857
        setting<std::string>(&configured.server.electrum.donation_address),
22 ✔
1858
        "String returned by server.donation_address, defaults to {}."
1859
    )
1860
    (
66 ✔
1861
        "electrum.banner_message",
1862
        setting<std::string>(&configured.server.electrum.banner_message),
22 ✔
1863
        "String returned by server.banner, defaults to {}."
1864
    )
1865
    (
66 ✔
1866
        "electrum.self_bind",
1867
        setting<network::config::endpoints>(&configured.server.electrum.self_binds),
22 ✔
1868
        "Advertised host:port at which this server can be reached (defaults to {})."
1869
    )
1870
    (
66 ✔
1871
        "electrum.self_safe",
1872
        setting<network::config::endpoints>(&configured.server.electrum.self_safes),
22 ✔
1873
        "Advertised secure host:port at which this server can be reached (defaults to {})."
1874
    )
1875
    (
66 ✔
1876
        "electrum.more_bind",
1877
        setting<network::config::endpoints>(&configured.server.electrum.more_binds),
22 ✔
1878
        "Advertised host:port at which another server can be reached (defaults to {})."
1879
    )
1880
    (
66 ✔
1881
        "electrum.more_safe",
1882
        setting<network::config::endpoints>(&configured.server.electrum.more_safes),
22 ✔
1883
        "Advertised secure host:port at which another server can be reached (defaults to {})."
1884
    )
1885

1886
    /* [sparrow] */
1887
    (
66 ✔
1888
        "sparrow.bind",
1889
        setting<network::config::authorities>(&configured.server.sparrow.binds),
22 ✔
1890
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1891
    )
1892
    (
66 ✔
1893
        "sparrow.safe",
1894
        setting<network::config::authorities>(&configured.server.sparrow.safes),
22 ✔
1895
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1896
    )
1897
    (
66 ✔
1898
        "sparrow.cert_auth",
1899
        setting<config::path>(&configured.server.sparrow.cert_auth),
22 ✔
1900
        "The trusted client certificate directory (*.PEM), enables client authentication."
1901
    )
1902
    (
66 ✔
1903
        "sparrow.cert_path",
1904
        setting<config::path>(&configured.server.sparrow.cert_path),
22 ✔
1905
        "The path to the server certificate file (.PEM), defaults to {}."
1906
    )
1907
    (
66 ✔
1908
        "sparrow.key_path",
1909
        setting<config::path>(&configured.server.sparrow.key_path),
22 ✔
1910
        "The path to the server private key file (.PEM), defaults to {}."
1911
    )
1912
    (
66 ✔
1913
        "sparrow.key_pass",
1914
        secret<std::string>(&configured.server.sparrow.key_pass),
22 ✔
1915
        "The password to decrypt the server private key file (.PEM), optional."
1916
    )
1917
    (
66 ✔
1918
        "sparrow.credential",
1919
        secret<network::config::credentials>(&configured.server.sparrow.credentials),
22 ✔
1920
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1921
    )
1922
    (
66 ✔
1923
        "sparrow.connections",
1924
        setting<uint16_t>(&configured.server.sparrow.connections),
22 ✔
1925
        "The required maximum number of connections, defaults to {}."
1926
    )
1927
    (
66 ✔
1928
        "sparrow.rate_limit",
1929
        setting<uint32_t>(&configured.server.sparrow.rate_limit),
22 ✔
1930
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1931
    )
1932
    (
66 ✔
1933
        "sparrow.connect_timeout_seconds",
1934
        setting<uint32_t>(&configured.server.sparrow.connect_timeout_seconds),
22 ✔
1935
        "The time limit for connection establishment, defaults to {} (network controls)."
1936
    )
1937
    (
66 ✔
1938
        "sparrow.inactivity_minutes",
1939
        setting<uint32_t>(&configured.server.sparrow.inactivity_minutes),
22 ✔
1940
        "The idle timeout (http keep-alive), defaults to {}."
1941
    )
1942
    (
66 ✔
1943
        "sparrow.expiration_minutes",
1944
        setting<uint32_t>(&configured.server.sparrow.expiration_minutes),
22 ✔
1945
        "The maximum connection duration, defaults to {}."
1946
    )
1947
    (
66 ✔
1948
        "sparrow.minimum_buffer",
1949
        setting<uint32_t>(&configured.server.sparrow.minimum_buffer),
22 ✔
1950
        "The minimum retained read buffer size, defaults to {}."
1951
    )
1952
    (
66 ✔
1953
        "sparrow.maximum_backlog",
1954
        setting<uint32_t>(&configured.server.sparrow.maximum_backlog),
22 ✔
1955
        "The maximum write backlog of a channel, defaults to {}."
1956
    )
1957
    (
66 ✔
1958
        "sparrow.maximum_buffer",
1959
        setting<uint32_t>(&configured.server.sparrow.maximum_buffer),
22 ✔
1960
        "The maximum json response buffer size, defaults to {}."
1961
    )
1962
    (
66 ✔
1963
        "sparrow.maximum_request",
1964
        setting<uint32_t>(&configured.server.sparrow.maximum_request),
22 ✔
1965
        "The maximum allowed request size, defaults to {}."
1966
    )
1967
    (
66 ✔
1968
        "sparrow.maximum_headers",
1969
        setting<uint32_t>(&configured.server.sparrow.maximum_headers),
22 ✔
1970
        "The maximum allowed headers returned per request, defaults to {}."
1971
    )
1972
    (
66 ✔
1973
        "sparrow.maximum_history",
1974
        setting<uint32_t>(&configured.server.sparrow.maximum_history),
22 ✔
1975
        "The maximum number of address history entries upon one subscription, defaults to {}."
1976
    )
1977
    (
66 ✔
1978
        "sparrow.maximum_subscriptions",
1979
        setting<uint32_t>(&configured.server.sparrow.maximum_subscriptions),
22 ✔
1980
        "The maximum allowed address subscriptions per channel, defaults to {}."
1981
    )
1982
    (
66 ✔
1983
        "sparrow.ping_interval_seconds",
1984
        setting<uint32_t>(&configured.server.sparrow.ping_interval_seconds),
22 ✔
1985
        "The seconds between unrequested pings, defaults to {} (disabled)."
1986
    )
1987
    (
66 ✔
1988
        "sparrow.ping_size",
1989
        setting<uint32_t>(&configured.server.sparrow.ping_size),
22 ✔
1990
        "The hex characters of unrequested ping data, defaults to {}."
1991
    )
1992
    (
66 ✔
1993
        "sparrow.protocol_minimum",
1994
        setting<version>(&configured.server.sparrow.protocol_minimum),
22 ✔
1995
        "Minimum protocol version, defaults to {}."
1996
    )
1997
    (
66 ✔
1998
        "sparrow.protocol_maximum",
1999
        setting<version>(&configured.server.sparrow.protocol_maximum),
22 ✔
2000
        "Maximum protocol version, defaults to {}."
2001
    )
2002
    (
66 ✔
2003
        "sparrow.server_name",
2004
        setting<std::string>(&configured.server.sparrow.server_name),
22 ✔
2005
        "String returned by server.version, defaults to {}."
2006
    )
2007
    (
66 ✔
2008
        "sparrow.donation_address",
2009
        setting<std::string>(&configured.server.sparrow.donation_address),
22 ✔
2010
        "String returned by server.donation_address, defaults to {}."
2011
    )
2012
    (
66 ✔
2013
        "sparrow.banner_message",
2014
        setting<std::string>(&configured.server.sparrow.banner_message),
22 ✔
2015
        "String returned by server.banner, defaults to {}."
2016
    )
2017
    (
66 ✔
2018
        "sparrow.self_bind",
2019
        setting<network::config::endpoints>(&configured.server.sparrow.self_binds),
22 ✔
2020
        "Advertised host:port at which this server can be reached (defaults to {})."
2021
    )
2022
    (
66 ✔
2023
        "sparrow.self_safe",
2024
        setting<network::config::endpoints>(&configured.server.sparrow.self_safes),
22 ✔
2025
        "Advertised secure host:port at which this server can be reached (defaults to {})."
2026
    )
2027
    (
66 ✔
2028
        "sparrow.more_bind",
2029
        setting<network::config::endpoints>(&configured.server.sparrow.more_binds),
22 ✔
2030
        "Advertised host:port at which another server can be reached (defaults to {})."
2031
    )
2032
    (
66 ✔
2033
        "sparrow.more_safe",
2034
        setting<network::config::endpoints>(&configured.server.sparrow.more_safes),
22 ✔
2035
        "Advertised secure host:port at which another server can be reached (defaults to {})."
2036
    )
2037
    /* [esplora] */
2038
    (
66 ✔
2039
        "esplora.bind",
2040
        setting<network::config::authorities>(&configured.server.esplora.binds),
22 ✔
2041
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
2042
    )
2043
    (
66 ✔
2044
        "esplora.safe",
2045
        setting<network::config::authorities>(&configured.server.esplora.safes),
22 ✔
2046
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
2047
    )
2048
    (
66 ✔
2049
        "esplora.cert_auth",
2050
        setting<config::path>(&configured.server.esplora.cert_auth),
22 ✔
2051
        "The trusted client certificate directory (*.PEM), enables client authentication."
2052
    )
2053
    (
66 ✔
2054
        "esplora.cert_path",
2055
        setting<config::path>(&configured.server.esplora.cert_path),
22 ✔
2056
        "The path to the server certificate file (.PEM), defaults to {}."
2057
    )
2058
    (
66 ✔
2059
        "esplora.key_path",
2060
        setting<config::path>(&configured.server.esplora.key_path),
22 ✔
2061
        "The path to the server private key file (.PEM), defaults to {}."
2062
    )
2063
    (
66 ✔
2064
        "esplora.key_pass",
2065
        secret<std::string>(&configured.server.esplora.key_pass),
22 ✔
2066
        "The password to decrypt the server private key file (.PEM), optional."
2067
    )
2068
    (
66 ✔
2069
        "esplora.credential",
2070
        secret<network::config::credentials>(&configured.server.esplora.credentials),
22 ✔
2071
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
2072
    )
2073
    (
66 ✔
2074
        "esplora.connections",
2075
        setting<uint16_t>(&configured.server.esplora.connections),
22 ✔
2076
        "The required maximum number of connections, defaults to {}."
2077
    )
2078
    (
66 ✔
2079
        "esplora.rate_limit",
2080
        setting<uint32_t>(&configured.server.esplora.rate_limit),
22 ✔
2081
        "The send rate limit in bytes per second, defaults to {} (network controls)."
2082
    )
2083
    (
66 ✔
2084
        "esplora.connect_timeout_seconds",
2085
        setting<uint32_t>(&configured.server.esplora.connect_timeout_seconds),
22 ✔
2086
        "The time limit for connection establishment, defaults to {} (network controls)."
2087
    )
2088
    (
66 ✔
2089
        "esplora.inactivity_minutes",
2090
        setting<uint32_t>(&configured.server.esplora.inactivity_minutes),
22 ✔
2091
        "The idle timeout (http keep-alive), defaults to {}."
2092
    )
2093
    (
66 ✔
2094
        "esplora.expiration_minutes",
2095
        setting<uint32_t>(&configured.server.esplora.expiration_minutes),
22 ✔
2096
        "The maximum connection duration, defaults to {}."
2097
    )
2098
    (
66 ✔
2099
        "esplora.minimum_buffer",
2100
        setting<uint32_t>(&configured.server.esplora.minimum_buffer),
22 ✔
2101
        "The minimum retained read buffer size, defaults to {}."
2102
    )
2103
    (
66 ✔
2104
        "esplora.maximum_backlog",
2105
        setting<uint32_t>(&configured.server.esplora.maximum_backlog),
22 ✔
2106
        "The maximum write backlog of a channel, defaults to {}."
2107
    )
2108
    (
66 ✔
2109
        "esplora.maximum_buffer",
2110
        setting<uint32_t>(&configured.server.esplora.maximum_buffer),
22 ✔
2111
        "The maximum json response buffer size, defaults to {}."
2112
    )
2113
    (
66 ✔
2114
        "esplora.maximum_request",
2115
        setting<uint32_t>(&configured.server.esplora.maximum_request),
22 ✔
2116
        "The maximum allowed request size, defaults to {}."
2117
    )
2118
    (
66 ✔
2119
        "esplora.server",
2120
        setting<std::string>(&configured.server.esplora.server),
22 ✔
2121
        "The server name (http header), defaults to {}."
2122
    )
2123
    (
66 ✔
2124
        "esplora.maximum_history",
2125
        setting<uint32_t>(&configured.server.esplora.maximum_history),
22 ✔
2126
        "The maximum number of address history entries, defaults to {}."
2127
    )
2128
    (
66 ✔
2129
        "esplora.host",
2130
        setting<network::config::endpoints>(&configured.server.esplora.hosts),
22 ✔
2131
        "The host name (http verification), multiple allowed, defaults to {} (disabled)."
2132
    )
2133
    (
66 ✔
2134
        "esplora.origin",
2135
        setting<network::config::endpoints>(&configured.server.esplora.origins),
22 ✔
2136
        "The allowed origin (see CORS), multiple allowed, defaults to {} (disabled)."
2137
    )
2138
    (
66 ✔
2139
        "esplora.allow_opaque_origin",
2140
        setting<bool>(&configured.server.esplora.allow_opaque_origin),
22 ✔
2141
        "Allow requests from opaque origin (see CORS), defaults to {}."
2142
    )
2143
#if defined(WITH_STRATUM)
2144
    /* [stratum_v1] */
2145
    (
2146
        "stratum_v1.bind",
2147
        setting<network::config::authorities>(&configured.server.stratum_v1.binds),
2148
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
2149
    )
2150
    (
2151
        "stratum_v1.safe",
2152
        setting<network::config::authorities>(&configured.server.stratum_v1.safes),
2153
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
2154
    )
2155
    (
2156
        "stratum_v1.cert_path",
2157
        setting<config::path>(&configured.server.stratum_v1.cert_path),
2158
        "The path to the server certificate file (.PEM), defaults to {}."
2159
    )
2160
    (
2161
        "stratum_v1.key_path",
2162
        setting<config::path>(&configured.server.stratum_v1.key_path),
2163
        "The path to the server private key file (.PEM), defaults to {}."
2164
    )
2165
    (
2166
        "stratum_v1.connections",
2167
        setting<uint16_t>(&configured.server.stratum_v1.connections),
2168
        "The required maximum number of connections, defaults to {}."
2169
    )
2170
    (
2171
        "stratum_v1.rate_limit",
2172
        setting<uint32_t>(&configured.server.stratum_v1.rate_limit),
2173
        "The send rate limit in bytes per second, defaults to {} (network controls)."
2174
    )
2175
    (
2176
        "stratum_v1.connect_timeout_seconds",
2177
        setting<uint32_t>(&configured.server.stratum_v1.connect_timeout_seconds),
2178
        "The time limit for connection establishment, defaults to {} (network controls)."
2179
    )
2180
    (
2181
        "stratum_v1.inactivity_minutes",
2182
        setting<uint32_t>(&configured.server.stratum_v1.inactivity_minutes),
2183
        "The idle timeout (http keep-alive), defaults to {}."
2184
    )
2185
    (
2186
        "stratum_v1.expiration_minutes",
2187
        setting<uint32_t>(&configured.server.stratum_v1.expiration_minutes),
2188
        "The maximum connection duration, defaults to {}."
2189
    )
2190
    (
2191
        "stratum_v1.minimum_buffer",
2192
        setting<uint32_t>(&configured.server.stratum_v1.minimum_buffer),
2193
        "The minimum retained read buffer size, defaults to {}."
2194
    )
2195
    (
2196
        "stratum_v1.maximum_backlog",
2197
        setting<uint32_t>(&configured.server.stratum_v1.maximum_backlog),
2198
        "The maximum write backlog of a channel, defaults to {}."
2199
    )
2200
    (
2201
        "stratum_v1.maximum_buffer",
2202
        setting<uint32_t>(&configured.server.stratum_v1.maximum_buffer),
2203
        "The maximum json response buffer size, defaults to {}."
2204
    )
2205
    (
2206
        "stratum_v1.maximum_request",
2207
        setting<uint32_t>(&configured.server.stratum_v1.maximum_request),
2208
        "The maximum allowed request size, defaults to {}."
2209
    )
2210

2211
    /* [stratum_v2] */
2212
    (
2213
        "stratum_v2.bind",
2214
        setting<network::config::authorities>(&configured.server.stratum_v2.binds),
2215
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
2216
    )
2217
    (
2218
        "stratum_v2.connections",
2219
        setting<uint16_t>(&configured.server.stratum_v2.connections),
2220
        "The required maximum number of connections, defaults to {}."
2221
    )
2222
    (
2223
        "stratum_v2.rate_limit",
2224
        setting<uint32_t>(&configured.server.stratum_v2.rate_limit),
2225
        "The send rate limit in bytes per second, defaults to {} (network controls)."
2226
    )
2227
    (
2228
        "stratum_v2.connect_timeout_seconds",
2229
        setting<uint32_t>(&configured.server.stratum_v2.connect_timeout_seconds),
2230
        "The time limit for connection establishment, defaults to {} (network controls)."
2231
    )
2232
    (
2233
        "stratum_v2.inactivity_minutes",
2234
        setting<uint32_t>(&configured.server.stratum_v2.inactivity_minutes),
2235
        "The idle timeout (http keep-alive), defaults to {}."
2236
    )
2237
    (
2238
        "stratum_v2.expiration_minutes",
2239
        setting<uint32_t>(&configured.server.stratum_v2.expiration_minutes),
2240
        "The maximum connection duration, defaults to {}."
2241
    )
2242
    (
2243
        "stratum_v2.minimum_buffer",
2244
        setting<uint32_t>(&configured.server.stratum_v2.minimum_buffer),
2245
        "The minimum retained read buffer size, defaults to {}."
2246
    )
2247
    (
2248
        "stratum_v2.maximum_backlog",
2249
        setting<uint32_t>(&configured.server.stratum_v2.maximum_backlog),
2250
        "The maximum write backlog of a channel, defaults to {}."
2251
    )
2252
    (
2253
        "stratum_v2.maximum_request",
2254
        setting<uint32_t>(&configured.server.stratum_v2.maximum_request),
2255
        "The maximum allowed request size, defaults to {}."
2256
    )
2257

2258
#endif
2259
    /* [node] */
2260
    (
66 ✔
2261
        "node.threads",
2262
        setting<uint32_t>(&configured.node.threads),
22 ✔
2263
        "The number of threads in the validation threadpool, defaults to {} (hardware threads)."
2264
    )
2265
    (
66 ✔
2266
        "node.thread_priority",
2267
        setting<bool>(&configured.node.thread_priority),
22 ✔
2268
        "Set validation threads to high processing priority, defaults to {}."
2269
    )
2270
    (
66 ✔
2271
        "node.memory_priority",
2272
        setting<bool>(&configured.node.memory_priority),
22 ✔
2273
        "Set the process to high memory priority, defaults to {}."
2274
    )
2275
    (
66 ✔
2276
        "node.delay_inbound",
2277
        setting<bool>(&configured.node.delay_inbound),
22 ✔
2278
        "Block inbound peer/client (excluding admin/native) until current, defaults to {}."
2279
    )
2280
    (
66 ✔
2281
        "node.provide_blocks",
2282
        setting<bool>(&configured.node.provide_blocks),
22 ✔
2283
        "Serve blocks to network connections, defaults to {}."
2284
    )
2285
    (
66 ✔
2286
        "node.limited_blocks",
2287
        setting<bool>(&configured.node.limited_blocks),
22 ✔
2288
        "Limit block service to recent blocks, defaults to {}."
2289
    )
2290
    (
66 ✔
2291
        "node.require_blocks",
2292
        setting<bool>(&configured.node.require_blocks),
22 ✔
2293
        "Require block service of outbound connections, defaults to {}."
2294
    )
2295
    (
66 ✔
2296
        "node.provide_witness",
2297
        setting<bool>(&configured.node.provide_witness),
22 ✔
2298
        "Serve witness data to network connections, defaults to {}."
2299
    )
2300
    (
66 ✔
2301
        "node.require_witness",
2302
        setting<bool>(&configured.node.require_witness),
22 ✔
2303
        "Require witness service of outbound connections, defaults to {}."
2304
    )
2305
    (
66 ✔
2306
        "node.provide_filters",
2307
        setting<bool>(&configured.node.provide_filters),
22 ✔
2308
        "Serve client filters to network connections, defaults to {}."
2309
    )
2310
    (
66 ✔
2311
        "node.provide_privacy",
2312
        setting<bool>(&configured.node.provide_privacy),
22 ✔
2313
        "Provide opportunistic connection encryption, defaults to {}."
2314
    )
2315
    (
66 ✔
2316
        "node.use_gpu",
2317
        setting<bool>(&configured.node.use_gpu),
22 ✔
2318
        "Use the GPU where available, defaults to {}."
2319
    )
2320
    ////(
2321
    ////    "node.cpu_batch_verify",
2322
    ////    setting<bool>(&configured.node.cpu_batch_verify),
2323
    ////    "Batch signature verification on the CPU when the GPU is not used, defaults to {}."
2324
    ////)
2325
    ////(
2326
    ////    "node.cpu_batch_silent",
2327
    ////    setting<bool>(&configured.node.cpu_batch_silent),
2328
    ////    "Batch silent payment indexing on the CPU when the GPU is not used, defaults to {}."
2329
    ////)
2330
    (
66 ✔
2331
        "node.batch_verify",
2332
        setting<uint64_t>(&configured.node.batch_verify),
22 ✔
2333
        "Count of signatures to verify in each batch, defaults to {} (0 disables)."
2334
    )
2335
    (
66 ✔
2336
        "node.batch_silent",
2337
        setting<uint64_t>(&configured.node.batch_silent),
22 ✔
2338
        "Count of silent payment transactions to index in each batch, defaults to {} (0 disables)."
2339
    )
2340
    (
66 ✔
2341
        "node.fee_estimate_horizon",
2342
        setting<uint16_t>(&configured.node.fee_estimate_horizon),
22 ✔
2343
        "Fee estimation horizon, limited to 1008, defaults to {} (0 disables)."
2344
    )
2345
    (
66 ✔
2346
        "node.minimum_fee_rate",
2347
        setting<double>(&configured.node.minimum_fee_rate),
22 ✔
2348
        "Minimum fee rate for non-conflicting tx acceptance, defaults to {}."
2349
    )
2350
    (
66 ✔
2351
        "node.minimum_bump_rate",
2352
        setting<double>(&configured.node.minimum_bump_rate),
22 ✔
2353
        "Minimum fee rate increment for conflicting tx acceptance, defaults to {}."
2354
    )
2355
    (
66 ✔
2356
        "node.allowed_deviation",
2357
        setting<float>(&configured.node.allowed_deviation),
22 ✔
2358
        "Allowable underperformance standard deviation, defaults to {} (0 disables)."
2359
    )
2360
    (
66 ✔
2361
        "node.announcement_cache",
2362
        setting<uint16_t>(&configured.node.announcement_cache),
22 ✔
2363
        "Limit of per channel cached peer block and tx announcements, to avoid replay, defaults to {}."
2364
    )
2365
    (
66 ✔
2366
        "node.maximum_height",
2367
        setting<uint32_t>(&configured.node.maximum_height),
22 ✔
2368
        "Maximum block height to populate, defaults to {} (unlimited)."
2369
    )
2370
    (
66 ✔
2371
        "node.silent_start_height",
2372
        setting<uint32_t>(&configured.node.silent_start_height),
22 ✔
2373
        "Minimum height of silent payment indexation, defaults to {}."
2374
    )
2375
    (
66 ✔
2376
        "node.maximum_concurrency",
2377
        setting<uint32_t>(&configured.node.maximum_concurrency),
22 ✔
2378
        "Maximum number of blocks to download concurrently, defaults to {} (0 disables)."
2379
    )
2380
    (
66 ✔
2381
        "node.sample_period_seconds",
2382
        setting<uint16_t>(&configured.node.sample_period_seconds),
22 ✔
2383
        "Sampling period for drop of stalled channels, defaults to {} (0 disables)."
2384
    )
2385
    (
66 ✔
2386
        "node.compact_timeout_seconds",
2387
        setting<uint16_t>(&configured.node.compact_timeout_seconds),
22 ✔
2388
        "Time to await a compact block fill before downloading the block, defaults to {} (0 disables)."
2389
    )
2390
    (
66 ✔
2391
        "node.compact_missing_percent",
2392
        setting<uint8_t>(&configured.node.compact_missing_percent),
22 ✔
2393
        "Maximum percent of a compact block not pooled to fill it, defaults to {}."
2394
    )
2395
    (
66 ✔
2396
        "node.currency_window_minutes",
2397
        setting<uint32_t>(&configured.node.currency_window_minutes),
22 ✔
2398
        "Time from present that blocks are considered current, defaults to {} (0 disables)."
2399
    )
2400
    ////(
2401
    ////    "node.snapshot_bytes",
2402
    ////    setting<uint64_t>(&configured.node.snapshot_bytes),
2403
    ////    "Downloaded bytes that triggers snapshot, defaults to {} (0 disables)."
2404
    ////)
2405
    ////(
2406
    ////    "node.snapshot_valid",
2407
    ////    setting<uint32_t>(&configured.node.snapshot_valid),
2408
    ////    "Completed validations that trigger snapshot, defaults to {} (0 disables)."
2409
    ////)
2410
    ////(
2411
    ////    "node.snapshot_confirm",
2412
    ////    setting<uint32_t>(&configured.node.snapshot_confirm),
2413
    ////    "Completed confirmations that trigger snapshot, defaults to {} (0 disables)."
2414
    ////)
2415

2416
    /* [database] */
2417
    (
66 ✔
2418
        "database.path",
2419
        setting<config::path>(&configured.database.path),
22 ✔
2420
        "The base of the network-named blockchain database directory, defaults to the working directory."
2421
    )
2422
    (
66 ✔
2423
        "database.turbo",
2424
        setting<bool>(&configured.database.turbo),
22 ✔
2425
        "Allow individual non-validation queries to use all CPUs, defaults to {}."
2426
    )
2427
    (
66 ✔
2428
        "database.gpu_scan_minimum",
2429
        setting<uint32_t>(&configured.database.gpu_scan_minimum),
22 ✔
2430
        "Minimum transactions for a silent payment scan to use the GPU, defaults to {}."
2431
    )
2432
    (
66 ✔
2433
        "database.mark_unconfirmable",
2434
        setting<bool>(&configured.database.mark_unconfirmable),
22 ✔
2435
        "Save unconfirmable block state (prevents revalidation), defaults to {}."
2436
    )
2437
    (
66 ✔
2438
        "database.interval_depth",
2439
        setting<uint8_t>(&configured.database.interval_depth),
22 ✔
2440
        "The interval depth for merkle proof optimization, defaults to {}."
2441
    )
2442

2443
    /* [table.*] */
2444

2445
    /* table.header */
2446
    (
66 ✔
2447
        "table.header.buckets",
2448
        setting<uint32_t>(&configured.database.header.buckets),
22 ✔
2449
        "The number of buckets in the header table head, dynamic default."
2450
    )
2451
    (
66 ✔
2452
        "table.header.expected",
2453
        setting<uint64_t>(&configured.database.header.expected),
22 ✔
2454
        "The expected element count of the header table, defaults to {}."
2455
    )
2456
    (
66 ✔
2457
        "table.header.size",
2458
        setting<uint64_t>(&configured.database.header.size),
22 ✔
2459
        "The minimum allocation of the header table body, defaults to {}."
2460
    )
2461
    (
66 ✔
2462
        "table.header.rate",
2463
        setting<uint16_t>(&configured.database.header.rate),
22 ✔
2464
        "The percentage expansion of the header table body, defaults to {}."
2465
    )
2466

2467
    /* table.input */
2468
    (
66 ✔
2469
        "table.input.size",
2470
        setting<uint64_t>(&configured.database.input.size),
22 ✔
2471
        "The minimum allocation of the input table body, defaults to {}."
2472
    )
2473
    (
66 ✔
2474
        "table.input.rate",
2475
        setting<uint16_t>(&configured.database.input.rate),
22 ✔
2476
        "The percentage expansion of the input table body, defaults to {}."
2477
    )
2478

2479
    /* table.output */
2480
    (
66 ✔
2481
        "table.output.size",
2482
        setting<uint64_t>(&configured.database.output.size),
22 ✔
2483
        "The minimum allocation of the output table body, defaults to {}."
2484
    )
2485
    (
66 ✔
2486
        "table.output.rate",
2487
        setting<uint16_t>(&configured.database.output.rate),
22 ✔
2488
        "The percentage expansion of the output table body, defaults to {}."
2489
    )
2490

2491
    /* table.ins */
2492
    (
66 ✔
2493
        "table.ins.buckets",
2494
        setting<uint32_t>(&configured.database.ins.buckets),
22 ✔
2495
        "The number of buckets in the ins table head, dynamic default."
2496
    )
2497
    (
66 ✔
2498
        "table.ins.expected",
2499
        setting<uint64_t>(&configured.database.ins.expected),
22 ✔
2500
        "The expected element count of the ins table, defaults to {}."
2501
    )
2502
    (
66 ✔
2503
        "table.ins.size",
2504
        setting<uint64_t>(&configured.database.ins.size),
22 ✔
2505
        "The minimum allocation of the ins table body, defaults to {}."
2506
    )
2507
    (
66 ✔
2508
        "table.ins.rate",
2509
        setting<uint16_t>(&configured.database.ins.rate),
22 ✔
2510
        "The percentage expansion of the ins table body, defaults to {}."
2511
    )
2512

2513
    /* table.outs */
2514
    (
66 ✔
2515
        "table.outs.buckets",
2516
        setting<uint32_t>(&configured.database.outs.buckets),
22 ✔
2517
        "The number of buckets in the outs table head, dynamic default (0 disables address index)."
2518
    )
2519
    (
66 ✔
2520
        "table.outs.expected",
2521
        setting<uint64_t>(&configured.database.outs.expected),
22 ✔
2522
        "The expected element count of the outs table, defaults to {}."
2523
    )
2524
    (
66 ✔
2525
        "table.outs.size",
2526
        setting<uint64_t>(&configured.database.outs.size),
22 ✔
2527
        "The minimum allocation of the outs table body, defaults to {}."
2528
    )
2529
    (
66 ✔
2530
        "table.outs.rate",
2531
        setting<uint16_t>(&configured.database.outs.rate),
22 ✔
2532
        "The percentage expansion of the outs table body, defaults to {}."
2533
    )
2534

2535
    /* table.tx */
2536
    (
66 ✔
2537
        "table.tx.buckets",
2538
        setting<uint32_t>(&configured.database.tx.buckets),
22 ✔
2539
        "The number of buckets in the tx table head, dynamic default."
2540
    )
2541
    (
66 ✔
2542
        "table.tx.expected",
2543
        setting<uint64_t>(&configured.database.tx.expected),
22 ✔
2544
        "The expected element count of the tx table, defaults to {}."
2545
    )
2546
    (
66 ✔
2547
        "table.tx.size",
2548
        setting<uint64_t>(&configured.database.tx.size),
22 ✔
2549
        "The minimum allocation of the tx table body, defaults to {}."
2550
    )
2551
    (
66 ✔
2552
        "table.tx.rate",
2553
        setting<uint16_t>(&configured.database.tx.rate),
22 ✔
2554
        "The percentage expansion of the tx table body, defaults to {}."
2555
    )
2556

2557
    /* table.txs */
2558
    (
66 ✔
2559
        "table.txs.buckets",
2560
        setting<uint32_t>(&configured.database.txs.buckets),
22 ✔
2561
        "The number of buckets in the txs table head, defaults to {}."
2562
    )
2563
    (
66 ✔
2564
        "table.txs.size",
2565
        setting<uint64_t>(&configured.database.txs.size),
22 ✔
2566
        "The minimum allocation of the txs table body, defaults to {}."
2567
    )
2568
    (
66 ✔
2569
        "table.txs.rate",
2570
        setting<uint16_t>(&configured.database.txs.rate),
22 ✔
2571
        "The percentage expansion of the txs table body, defaults to {}."
2572
    )
2573

2574
    /* table.candidate */
2575
    (
66 ✔
2576
        "table.candidate.buckets",
2577
        setting<uint32_t>(&configured.database.candidate.buckets),
22 ✔
2578
        "The number of buckets provisioned in the candidate table head, defaults to {}."
2579
    )
2580
    (
66 ✔
2581
        "table.candidate.rate",
2582
        setting<uint16_t>(&configured.database.candidate.rate),
22 ✔
2583
        "The percentage expansion of the candidate table head, defaults to {}."
2584
    )
2585

2586
    /* table.confirmed */
2587
    (
66 ✔
2588
        "table.confirmed.buckets",
2589
        setting<uint32_t>(&configured.database.confirmed.buckets),
22 ✔
2590
        "The number of buckets provisioned in the confirmed table head, defaults to {}."
2591
    )
2592
    (
66 ✔
2593
        "table.confirmed.rate",
2594
        setting<uint16_t>(&configured.database.confirmed.rate),
22 ✔
2595
        "The percentage expansion of the confirmed table head, defaults to {}."
2596
    )
2597

2598
    /* table.strong */
2599
    (
66 ✔
2600
        "table.strong.buckets",
2601
        setting<uint32_t>(&configured.database.strong.buckets),
22 ✔
2602
        "The number of buckets provisioned in the strong table head, dynamic default."
2603
    )
2604
    (
66 ✔
2605
        "table.strong.rate",
2606
        setting<uint16_t>(&configured.database.strong.rate),
22 ✔
2607
        "The percentage expansion of the strong table head, defaults to {}."
2608
    )
2609

2610
    /* table.scan */
2611
    (
66 ✔
2612
        "table.scan.buckets",
2613
        setting<uint32_t>(&configured.database.scan.buckets),
22 ✔
2614
        "The number of buckets provisioned in the scan table head, defaults to {}."
2615
    )
2616
    (
66 ✔
2617
        "table.scan.size",
2618
        setting<uint64_t>(&configured.database.scan.size),
22 ✔
2619
        "The minimum allocation of the scan table body, defaults to {}."
2620
    )
2621
    (
66 ✔
2622
        "table.scan.rate",
2623
        setting<uint16_t>(&configured.database.scan.rate),
22 ✔
2624
        "The percentage expansion of the scan table body, defaults to {}."
2625
    )
2626

2627
    /* table.wtxid */
2628
    (
66 ✔
2629
        "table.wtxid.buckets",
2630
        setting<uint32_t>(&configured.database.wtxid.buckets),
22 ✔
2631
        "The number of buckets in the wtxid table head, dynamic default (0 disables)."
2632
    )
2633
    (
66 ✔
2634
        "table.wtxid.expected",
2635
        setting<uint64_t>(&configured.database.wtxid.expected),
22 ✔
2636
        "The expected element count of the wtxid table, defaults to {}."
2637
    )
2638
    (
66 ✔
2639
        "table.wtxid.size",
2640
        setting<uint64_t>(&configured.database.wtxid.size),
22 ✔
2641
        "The minimum allocation of the wtxid table body, defaults to {}."
2642
    )
2643
    (
66 ✔
2644
        "table.wtxid.rate",
2645
        setting<uint16_t>(&configured.database.wtxid.rate),
22 ✔
2646
        "The percentage expansion of the wtxid table body, defaults to {}."
2647
    )
2648

2649
    /* table.ecdsa */
2650
    (
66 ✔
2651
        "table.ecdsa.size",
2652
        setting<uint64_t>(&configured.database.ecdsa.size),
22 ✔
2653
        "The minimum allocation of each batch_ecdsa table body, defaults to {}."
2654
    )
2655
    (
66 ✔
2656
        "table.ecdsa.rate",
2657
        setting<uint16_t>(&configured.database.ecdsa.rate),
22 ✔
2658
        "The percentage expansion of each batch_ecdsa table body, defaults to {}."
2659
    )
2660

2661
    /* table.schnorr */
2662
    (
66 ✔
2663
        "table.schnorr.size",
2664
        setting<uint64_t>(&configured.database.schnorr.size),
22 ✔
2665
        "The minimum allocation of each batch_schnorr table body, defaults to {}."
2666
    )
2667
    (
66 ✔
2668
        "table.schnorr.rate",
2669
        setting<uint16_t>(&configured.database.schnorr.rate),
22 ✔
2670
        "The percentage expansion of each batch_schnorr table body, defaults to {}."
2671
    )
2672

2673
    /* table.silent */
2674
    (
66 ✔
2675
        "table.silent.size",
2676
        setting<uint64_t>(&configured.database.silent.size),
22 ✔
2677
        "The minimum allocation of each batch_silent table body, defaults to {}."
2678
    )
2679
    (
66 ✔
2680
        "table.silent.rate",
2681
        setting<uint16_t>(&configured.database.silent.rate),
22 ✔
2682
        "The percentage expansion of each batch_silent table body, defaults to {}."
2683
    )
2684

2685
    /* table.prevalid */
2686
    (
66 ✔
2687
        "table.prevalid.size",
2688
        setting<uint64_t>(&configured.database.prevalid.size),
22 ✔
2689
        "The minimum allocation of each batch_prevalid table body, defaults to {}."
2690
    )
2691
    (
66 ✔
2692
        "table.prevalid.rate",
2693
        setting<uint16_t>(&configured.database.prevalid.rate),
22 ✔
2694
        "The percentage expansion of each batch_prevalid table body, defaults to {}."
2695
    )
2696

2697
    /* table.presilent */
2698
    (
66 ✔
2699
        "table.presilent.size",
2700
        setting<uint64_t>(&configured.database.presilent.size),
22 ✔
2701
        "The minimum allocation of each batch_presilent table body, defaults to {}."
2702
    )
2703
    (
66 ✔
2704
        "table.presilent.rate",
2705
        setting<uint16_t>(&configured.database.presilent.rate),
22 ✔
2706
        "The percentage expansion of each batch_presilent table body, defaults to {}."
2707
    )
2708

2709
    /* table.prevout */
2710
    (
66 ✔
2711
        "table.prevout.buckets",
2712
        setting<uint32_t>(&configured.database.prevout.buckets),
22 ✔
2713
        "The minimum number of buckets in the prevout table head, defaults to {}."
2714
    )
2715
    (
66 ✔
2716
        "table.prevout.size",
2717
        setting<uint64_t>(&configured.database.prevout.size),
22 ✔
2718
        "The minimum allocation of the prevout table body, defaults to {}."
2719
    )
2720
    (
66 ✔
2721
        "table.prevout.rate",
2722
        setting<uint16_t>(&configured.database.prevout.rate),
22 ✔
2723
        "The percentage expansion of the prevout table, defaults to {}."
2724
    )
2725

2726
    /* table.duplicate */
2727
    (
66 ✔
2728
        "table.duplicate.buckets",
2729
        setting<uint32_t>(&configured.database.duplicate.buckets),
22 ✔
2730
        "The minimum number of buckets in the duplicate table head, defaults to {}."
2731
    )
2732
    (
66 ✔
2733
        "table.duplicate.expected",
2734
        setting<uint64_t>(&configured.database.duplicate.expected),
22 ✔
2735
        "The expected element count of the duplicate table, defaults to {}."
2736
    )
2737
    (
66 ✔
2738
        "table.duplicate.size",
2739
        setting<uint64_t>(&configured.database.duplicate.size),
22 ✔
2740
        "The minimum allocation of the duplicate table body, defaults to {}."
2741
    )
2742
    (
66 ✔
2743
        "table.duplicate.rate",
2744
        setting<uint16_t>(&configured.database.duplicate.rate),
22 ✔
2745
        "The percentage expansion of the duplicate table, defaults to {}."
2746
    )
2747

2748
    /* table.state */
2749
    (
66 ✔
2750
        "table.state.buckets",
2751
        setting<uint32_t>(&configured.database.state.buckets),
22 ✔
2752
        "The number of buckets provisioned in the state table head, defaults to {}."
2753
    )
2754
    (
66 ✔
2755
        "table.state.rate",
2756
        setting<uint16_t>(&configured.database.state.rate),
22 ✔
2757
        "The percentage expansion of the state table head, defaults to {}."
2758
    )
2759

2760
    /* table.pool */
2761
    (
66 ✔
2762
        "table.pool.buckets",
2763
        setting<uint32_t>(&configured.database.pool.buckets),
22 ✔
2764
        "The number of buckets in the pool table head, dynamic default (0 disables)."
2765
    )
2766
    (
66 ✔
2767
        "table.pool.expected",
2768
        setting<uint64_t>(&configured.database.pool.expected),
22 ✔
2769
        "The expected element count of the pool table, defaults to {}."
2770
    )
2771
    (
66 ✔
2772
        "table.pool.size",
2773
        setting<uint64_t>(&configured.database.pool.size),
22 ✔
2774
        "The minimum allocation of the pool table body, defaults to {}."
2775
    )
2776
    (
66 ✔
2777
        "table.pool.rate",
2778
        setting<uint16_t>(&configured.database.pool.rate),
22 ✔
2779
        "The percentage expansion of the pool table body, defaults to {}."
2780
    )
2781

2782
    /* table.spends */
2783
    (
66 ✔
2784
        "table.spends.size",
2785
        setting<uint64_t>(&configured.database.spends.size),
22 ✔
2786
        "The minimum allocation of the spends table body, defaults to {}."
2787
    )
2788
    (
66 ✔
2789
        "table.spends.rate",
2790
        setting<uint16_t>(&configured.database.spends.rate),
22 ✔
2791
        "The percentage expansion of the spends table body, defaults to {}."
2792
    )
2793

2794
    /* table.filter_bk */
2795
    (
66 ✔
2796
        "table.filter_bk.buckets",
2797
        setting<uint32_t>(&configured.database.filter_bk.buckets),
22 ✔
2798
        "The number of buckets in the filter_bk table head, defaults to {} (0 disables)."
2799
    )
2800
    (
66 ✔
2801
        "table.filter_bk.size",
2802
        setting<uint64_t>(&configured.database.filter_bk.size),
22 ✔
2803
        "The minimum allocation of the filter_bk table body, defaults to {}."
2804
    )
2805
    (
66 ✔
2806
        "table.filter_bk.rate",
2807
        setting<uint16_t>(&configured.database.filter_bk.rate),
22 ✔
2808
        "The percentage expansion of the filter_bk table body, defaults to {}."
2809
    )
2810

2811
    /* table.filter_tx */
2812
    (
66 ✔
2813
        "table.filter_tx.buckets",
2814
        setting<uint32_t>(&configured.database.filter_tx.buckets),
22 ✔
2815
        "The number of buckets in the filter_tx table head, defaults to {} (0 disables)."
2816
    )
2817
    (
66 ✔
2818
        "table.filter_tx.size",
2819
        setting<uint64_t>(&configured.database.filter_tx.size),
22 ✔
2820
        "The minimum allocation of the filter_tx table body, defaults to {}."
2821
    )
2822
    (
66 ✔
2823
        "table.filter_tx.rate",
2824
        setting<uint16_t>(&configured.database.filter_tx.rate),
22 ✔
2825
        "The percentage expansion of the filter_tx table body, defaults to {}."
2826
    )
2827

2828
    /* [log] */
2829
#if defined(HAVE_LOGA)
2830
    (
66 ✔
2831
        "log.application",
2832
        setting<bool>(&configured.log.application),
22 ✔
2833
        "Enable application logging, defaults to {}."
2834
    )
2835
#endif
2836
#if defined(HAVE_LOGN)
2837
    (
66 ✔
2838
        "log.news",
2839
        setting<bool>(&configured.log.news),
22 ✔
2840
        "Enable news logging, defaults to {}."
2841
    )
2842
#endif
2843
#if defined(HAVE_LOGS)
2844
    (
66 ✔
2845
        "log.session",
2846
        setting<bool>(&configured.log.session),
22 ✔
2847
        "Enable session logging, defaults to {}."
2848
    )
2849
#endif
2850
#if defined(HAVE_LOGP)
2851
    (
66 ✔
2852
        "log.protocol",
2853
        setting<bool>(&configured.log.protocol),
22 ✔
2854
        "Enable protocol logging, defaults to {}."
2855
    )
2856
#endif
2857
#if defined(HAVE_LOGX)
2858
    (
66 ✔
2859
        "log.proxy",
2860
        setting<bool>(&configured.log.proxy),
22 ✔
2861
        "Enable proxy logging, defaults to {}."
2862
    )
2863
#endif
2864
#if defined(HAVE_LOGR)
2865
    (
66 ✔
2866
        "log.remote",
2867
        setting<bool>(&configured.log.remote),
22 ✔
2868
        "Enable remote fault logging, defaults to {}."
2869
    )
2870
#endif
2871
#if defined(HAVE_LOGF)
2872
    (
66 ✔
2873
        "log.fault",
2874
        setting<bool>(&configured.log.fault),
22 ✔
2875
        "Enable local fault logging, defaults to {}."
2876
    )
2877
#endif
2878
#if defined(HAVE_LOGQ)
2879
    (
66 ✔
2880
        "log.quitting",
2881
        setting<bool>(&configured.log.quitting),
22 ✔
2882
        "Enable quitting logging, defaults to {}."
2883
    )
2884
#endif
2885
#if defined(HAVE_LOGO)
2886
    (
66 ✔
2887
        "log.objects",
2888
        setting<bool>(&configured.log.objects),
22 ✔
2889
        "Enable objects logging, defaults to {}."
2890
    )
2891
#endif
2892
#if defined(HAVE_LOGV)
2893
    (
66 ✔
2894
        "log.verbose",
2895
        setting<bool>(&configured.log.verbose),
22 ✔
2896
        "Enable verbose logging, defaults to {}."
2897
    )
2898
#endif
2899
    (
66 ✔
2900
        "log.maximum_size",
2901
        setting<uint32_t>(&configured.log.maximum_size),
22 ✔
2902
        "The maximum byte size of each pair of rotated log files, defaults to {}."
2903
    )
2904
#if defined (HAVE_WINDOWS)
2905
    (
2906
        "log.symbols",
2907
        setting<config::path>(&configured.log.symbols),
2908
        "Path to a directory containing windows symbols (.pdb) files, defaults to {}."
2909
    )
2910
#endif
2911
    (
44 ✔
2912
        "log.path",
2913
        setting<config::path>(&configured.log.path),
22 ✔
2914
        "The log files directory, defaults to {}."
2915
    );
2916

2917
    return description;
22 ✔
2918
}
×
2919

2920
BC_PUSH_WARNING(NO_ARRAY_TO_POINTER_DECAY)
2921
bool parser::parse(int argc, const char* argv[], std::ostream& error) THROWS
24 ✔
2922
BC_POP_WARNING()
2923
{
2924
    try
2925
    {
2926
        auto file = false;
2927
        load_command_variables(argc, argv);
24 ✔
2928
        ////load_environment_variables(environment_prefix);
2929

2930
        // Don't load config file if help is specified.
2931
        if (!get_option(help_variable))
22 ✔
2932
        {
2933
            // Returns true if the settings were loaded from a file.
2934
            file = load_configuration_variables(config_variable);
22 ✔
2935
        }
2936

2937
        // Update bound variables in metadata.settings.
2938
        notify(variables_);
22 ✔
2939
        select_network();
22 ✔
2940
        select_path();
22 ✔
2941
        derive_buckets();
22 ✔
2942

2943
        // Clear the config file path if it wasn't used.
2944
        if (!file)
22 ✔
2945
            configured.file = {};
5 ✔
2946
    }
2947
    catch (const option_exception& e)
2 ✔
2948
    {
2949
        error << format_invalid_parameter(e.what()) << std::endl;
2 ✔
2950
        return false;
2951
    }
2 ✔
2952

2953
    return true;
2954
}
2955

2956
} // namespace server
2957
} // namespace libbitcoin
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc