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

libbitcoin / libbitcoin-server / 43347983849

13 Nov 2026 01:51AM UTC coverage: 95.163% (-0.009%) from 95.172%
43347983849

push

github

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

Expect fee estimation disabled by default.

12316 of 12942 relevant lines covered (95.16%)

417.08 hits per line

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

99.1
/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,
31 ✔
42
    const server::settings::embedded_pages& native,
43
    const server::settings::embedded_pages& admin) NOEXCEPT
31 ✔
44
  : configured(context, native, admin)
31 ✔
45
{
46
}
31 ✔
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
31 ✔
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"))
31 ✔
59
        database.header.buckets = table::header::derive_buckets(
31 ✔
60
            database.header.expected, contested, target);
61

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

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

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

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

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

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

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

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

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

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

105
// The network-named directory, under the configured root.
106
void parser::select_root() NOEXCEPT
29 ✔
107
{
108
    const auto network = config::selection::to_word(configured.node.network);
29 ✔
109
    root_ = configured.server.path / std::string{ network };
29 ✔
110
}
29 ✔
111

112
// Paths are relative to the network directory.
113
void parser::select_paths() NOEXCEPT
29 ✔
114
{
115
    const auto relative = [this](config::path& path) NOEXCEPT
870 ✔
116
    {
117
        if (!path.empty())
870 ✔
118
            path = root_ / path;
4 ✔
119
    };
870 ✔
120

121
    const auto rooted = [this](config::path& path) NOEXCEPT
116 ✔
122
    {
123
        path = path.empty() ? root_ : root_ / path;
116 ✔
124
    };
116 ✔
125

126
    const auto secured = [&](network::settings::tls_server& service) NOEXCEPT
261 ✔
127
    {
128
        relative(service.cert_auth);
261 ✔
129
        relative(service.cert_path);
261 ✔
130
        relative(service.key_path);
261 ✔
131
    };
290 ✔
132

133
    if (!is_configured("folders.store"))
29 ✔
134
        configured.database.path = "store";
28 ✔
135

136
    rooted(configured.database.path);
29 ✔
137
    rooted(configured.network.path);
29 ✔
138
    rooted(configured.log.console_path);
29 ✔
139
    rooted(configured.log.events_path);
29 ✔
140
    relative(configured.network.inbound.key_path);
29 ✔
141
    relative(configured.server.admin.path);
29 ✔
142
    relative(configured.server.native.path);
29 ✔
143
    secured(configured.server.admin);
29 ✔
144
    secured(configured.server.native);
29 ✔
145
    secured(configured.server.bitcoind);
29 ✔
146
    secured(configured.server.btcd);
29 ✔
147
    secured(configured.server.electrum);
29 ✔
148
    secured(configured.server.sparrow);
29 ✔
149
    secured(configured.server.esplora);
29 ✔
150
    secured(configured.server.stratum_v1);
29 ✔
151
    secured(configured.server.stratum_v2);
29 ✔
152

153
#if defined (HAVE_WINDOWS)
154
    relative(configured.log.symbols_path);
155
#endif
156
}
29 ✔
157

158
// The network of an existing store governs at its path, for commands that
159
// use the store.
160
void parser::read_envelope() NOEXCEPT
4 ✔
161
{
162
    if (configured.make || configured.help || configured.hardware ||
4 ✔
163
        configured.daemon.has_value())
3 ✔
164
        return;
2 ✔
165

166
    server_node::store store{ configured.database };
3 ✔
167
    stored_code = store.read_envelope(stored);
3 ✔
168
    if (stored_code || stored.network == configured.node.network)
3 ✔
169
        return;
170

171
    const chain::selection selected = configured.net;
2 ✔
172
    const auto specified = selected != chain::selection::none &&
2 ✔
173
        selected != chain::selection::mainnet;
174

175
    reset_network(stored.network);
2 ✔
176
    derive_buckets();
2 ✔
177

178
    // A specified network is retained as configured, for override reporting.
179
    if (specified)
2 ✔
180
        configured.bitcoin.network = selected;
1 ✔
181
}
3 ✔
182

183
// Network defaults are reset, and then configured settings are reapplied.
184
// Paths are retained, as they are network independent once resolved.
185
void parser::reset_network(chain::selection context) NOEXCEPT
24 ✔
186
{
187
    const auto store = configured.database.path;
24 ✔
188
    const auto peers = configured.network.path;
24 ✔
189
    const auto key = configured.network.inbound.key_path;
24 ✔
190

191
    configured.bitcoin = system::settings{ context };
24 ✔
192
    configured.database = database::settings{ context };
24 ✔
193
    configured.network = network::settings{ context };
24 ✔
194
    configured.node = node::settings{ context };
24 ✔
195
    configured.server.network = context;
24 ✔
196
    configured.server.wallet = server::settings::wallet_settings{ context };
24 ✔
197

198
    BC_PUSH_WARNING(NO_THROW_IN_NOEXCEPT)
199
    for (const auto& option: settings().options())
11,184 ✔
200
    {
201
        const auto& name = option->long_name();
11,160 ✔
202
        if (is_configured(name))
11,160 ✔
203
            option->semantic()->notify(variables().at(name).value());
52 ✔
204
    }
205
    BC_POP_WARNING()
206

207
    configured.database.path = store;
24 ✔
208
    configured.network.path = peers;
24 ✔
209
    configured.network.inbound.key_path = key;
24 ✔
210
}
24 ✔
211

212
// Composes a variable name with its command line shortcut.
213
static std::string alias(const std::string& variable, char shortcut)
496 ✔
214
{
215
    return variable + ',' + shortcut;
496 ✔
216
}
217

218
options_metadata parser::load_options() THROWS
31 ✔
219
{
220
    options_metadata description("options");
31 ✔
221
    description.add_options()
31 ✔
222
    (
62 ✔
223
        alias(config_variable, 'c').c_str(),
62 ✔
224
        value<config::path>(&configured.file),
31 ✔
225
        "Specify path to a configuration settings file."
226
    )
227
    (
62 ✔
228
        alias(net_variable, 'n').c_str(),
62 ✔
229
        value<config::selection>(&configured.net),
31 ✔
230
        ("Specify the network (" + config::selection::names() + "), "
62 ✔
231
            "defaults to the configured network.").c_str()
232
    )
233
    // Prompts.
234
    (
93 ✔
235
        alias(accept_variable, 'a').c_str(),
62 ✔
236
        value<bool>(&configured.accept)->
237
            default_value(false)->zero_tokens(),
62 ✔
238
        "Accept startup prompts without interaction."
239
    )
240
    // Information.
241
    (
93 ✔
242
        alias(help_variable, 'h').c_str(),
62 ✔
243
        value<bool>(&configured.help)->
244
            default_value(false)->zero_tokens(),
62 ✔
245
        "Display command line options."
246
    )
247
    (
93 ✔
248
        alias(hardware_variable, 'w').c_str(),
62 ✔
249
        value<bool>(&configured.hardware)->
250
            default_value(false)->zero_tokens(),
62 ✔
251
        "Display hardware compatibility."
252
    )
253
    (
93 ✔
254
        alias(settings_variable, 's').c_str(),
62 ✔
255
        value<bool>(&configured.settings)->
256
            default_value(false)->zero_tokens(),
62 ✔
257
        "Display all configuration settings."
258
    )
259
    (
93 ✔
260
        alias(version_variable, 'v').c_str(),
62 ✔
261
        value<bool>(&configured.version)->
262
            default_value(false)->zero_tokens(),
62 ✔
263
        "Display version information."
264
    )
265
    // Actions.
266
    (
93 ✔
267
        alias(make_variable, 'm').c_str(),
62 ✔
268
        value<bool>(&configured.make)->
269
            default_value(false)->zero_tokens(),
62 ✔
270
        "Make new store in configured directory."
271
    )
272
    (
93 ✔
273
        alias(backup_variable, 'b').c_str(),
62 ✔
274
        value<bool>(&configured.backup)->
275
            default_value(false)->zero_tokens(),
62 ✔
276
        "Backup to a snapshot (can also do live)."
277
    )
278
    (
93 ✔
279
        alias(restore_variable, 'r').c_str(),
62 ✔
280
        value<bool>(&configured.restore)->
281
            default_value(false)->zero_tokens(),
62 ✔
282
        "Restore from most recent snapshot."
283
    )
284
    // Service.
285
    (
93 ✔
286
        alias(daemon_variable, 'd').c_str(),
62 ✔
287
        value<bool>()->implicit_value(true)->
62 ✔
288
            notifier([&](bool value) { configured.daemon = value; }),
62 ✔
289
        "Install ('true') or uninstall ('false') as a daemon."
290
    )
291
    (
93 ✔
292
        alias(user_variable, 'u').c_str(),
62 ✔
293
        value<network::config::credential>()->
294
            notifier([&](const network::config::credential& value)
62 ✔
295
                { configured.user = value; }),
×
296
        "Daemon logon credential, defaults to system account."
297
    )
298
    // Chain scans.
299
    (
93 ✔
300
        alias(flags_variable, 'f').c_str(),
62 ✔
301
        value<bool>(&configured.flags)->
302
            default_value(false)->zero_tokens(),
62 ✔
303
        "Scan and display all flag transitions."
304
    )
305
    (
93 ✔
306
        alias(buckets_variable, 'k').c_str(),
62 ✔
307
        value<bool>(&configured.buckets)->
308
            default_value(false)->zero_tokens(),
62 ✔
309
        "Scan and display hashmap bucket fill."
310
    )
311
    (
93 ✔
312
        alias(collisions_variable, 'l').c_str(),
62 ✔
313
        value<bool>(&configured.collisions)->
314
            default_value(false)->zero_tokens(),
62 ✔
315
        "Scan and show hashmap collision stats (may SIGKILL)."
316
    )
317
    (
93 ✔
318
        alias(information_variable, 'i').c_str(),
62 ✔
319
        value<bool>(&configured.information)->
320
            default_value(false)->zero_tokens(),
62 ✔
321
        "Scan and display store information."
322
    );
323

324
#if defined(HAVE_SELF_TESTS)
325
    description.add_options()
326
    // Ad-hoc Testing.
327
    (
328
        alias(get_variable, 'g').c_str(),
329
        value<config::hash256>(&configured.get)->
330
            default_value(system::null_hash),
331
        "Run built-in read test and display."
332
    )
333
    (
334
        alias(put_variable, 'p').c_str(),
335
        value<config::hash256>(&configured.put)->
336
            default_value(system::null_hash),
337
        "Run built-in write test and display."
338
    );
339
#endif
340

341
    return description;
31 ✔
342
}
×
343

344
arguments_metadata parser::load_arguments() THROWS
31 ✔
345
{
346
    // There are no positional arguments, the config path requires --config.
347
    return arguments_metadata{};
31 ✔
348
}
349

350
options_metadata parser::load_environment() THROWS
×
351
{
352
    options_metadata description("environment");
×
353
    description.add_options()
×
354
    (
×
355
        // For some reason po requires this to be a lower case name.
356
        // The case must match the other declarations for it to compose.
357
        // This composes with the cmdline options and inits to default path.
358
        config_variable,
359
        value<config::path>(&configured.file)->composing()
×
360
            /*->default_value(config_default_path())*/,
361
        "The path to the configuration settings file."
362
    );
363

364
    return description;
×
365
}
×
366

367
options_metadata parser::load_settings() THROWS
29 ✔
368
{
369
    options_metadata description("settings");
29 ✔
370
    description.add_options()
29 ✔
371

372
    /* [folders] */
373
    (
87 ✔
374
        "folders.root",
375
        setting<config::path>(&configured.server.path),
29 ✔
376
        "The base of the network-named directory, defaults to the working directory."
377
    )
378
    (
87 ✔
379
        "folders.peers",
380
        setting<config::path>(&configured.network.path),
29 ✔
381
        "The peer address cache directory, relative to the network directory, defaults to it."
382
    )
383
    (
87 ✔
384
        "folders.events",
385
        setting<config::path>(&configured.log.events_path),
29 ✔
386
        "The events log directory, relative to the network directory, defaults to it."
387
    )
388
    (
87 ✔
389
        "folders.console",
390
        setting<config::path>(&configured.log.console_path),
29 ✔
391
        "The console log files directory, relative to the network directory, defaults to it."
392
    )
393
    (
87 ✔
394
        "folders.store",
395
        setting<config::path>(&configured.database.path),
29 ✔
396
        "The store directory, relative to the network directory, defaults to 'store'."
397
    )
398
    (
87 ✔
399
        "folders.admin",
400
        setting<config::path>(&configured.server.admin.path),
29 ✔
401
        "The admin web site directory, relative to the network directory, defaults to embedded pages."
402
    )
403
    (
87 ✔
404
        "folders.native",
405
        setting<config::path>(&configured.server.native.path),
29 ✔
406
        "The native web site directory, relative to the network directory, defaults to embedded pages."
407
    )
408
#if defined (HAVE_WINDOWS)
409
    (
410
        "folders.symbols",
411
        setting<config::path>(&configured.log.symbols_path),
412
        "The windows symbols (.pdb) directory, relative to the network directory, defaults to {}."
413
    )
414
#endif
415

416
    /* [forks] */
417
    (
87 ✔
418
        "forks.difficult",
419
        setting<bool>(&configured.bitcoin.forks.difficult),
29 ✔
420
        "Require difficult blocks, defaults to {} (use false for testnet)."
421
    )
422
    (
87 ✔
423
        "forks.retarget",
424
        setting<bool>(&configured.bitcoin.forks.retarget),
29 ✔
425
        "Retarget difficulty, defaults to {} (use false for regtest)."
426
    )
427
    (
87 ✔
428
        "forks.bip16",
429
        setting<bool>(&configured.bitcoin.forks.bip16),
29 ✔
430
        "Add pay-to-script-hash processing, defaults to {} (soft fork)."
431
    )
432
    (
87 ✔
433
        "forks.bip30",
434
        setting<bool>(&configured.bitcoin.forks.bip30),
29 ✔
435
        "Disallow collision of unspent transaction hashes, defaults to {} (soft fork)."
436
    )
437
    (
87 ✔
438
        "forks.bip34",
439
        setting<bool>(&configured.bitcoin.forks.bip34),
29 ✔
440
        "Require coinbase input includes block height, defaults to {} (soft fork)."
441
    )
442
    (
87 ✔
443
        "forks.bip42",
444
        setting<bool>(&configured.bitcoin.forks.bip42),
29 ✔
445
        "Finite monetary supply, defaults to {} (soft fork)."
446
    )
447
    (
87 ✔
448
        "forks.bip66",
449
        setting<bool>(&configured.bitcoin.forks.bip66),
29 ✔
450
        "Require strict signature encoding, defaults to {} (soft fork)."
451
    )
452
    (
87 ✔
453
        "forks.bip65",
454
        setting<bool>(&configured.bitcoin.forks.bip65),
29 ✔
455
        "Add check-locktime-verify op code, defaults to {} (soft fork)."
456
    )
457
    (
87 ✔
458
        "forks.bip90",
459
        setting<bool>(&configured.bitcoin.forks.bip90),
29 ✔
460
        "Freeze bip34, bip65, and bip66 activation at the bip90 heights, defaults to {} (hard fork)."
461
    )
462
    (
87 ✔
463
        "forks.bip68",
464
        setting<bool>(&configured.bitcoin.forks.bip68),
29 ✔
465
        "Add relative locktime enforcement, defaults to {} (soft fork)."
466
    )
467
    (
87 ✔
468
        "forks.bip112",
469
        setting<bool>(&configured.bitcoin.forks.bip112),
29 ✔
470
        "Add check-sequence-verify op code, defaults to {} (soft fork)."
471
    )
472
    (
87 ✔
473
        "forks.bip113",
474
        setting<bool>(&configured.bitcoin.forks.bip113),
29 ✔
475
        "Use median time past for locktime, defaults to {} (soft fork)."
476
    )
477
    (
87 ✔
478
        "forks.bip141",
479
        setting<bool>(&configured.bitcoin.forks.bip141),
29 ✔
480
        "Segregated witness consensus layer, defaults to {} (soft fork)."
481
    )
482
    (
87 ✔
483
        "forks.bip143",
484
        setting<bool>(&configured.bitcoin.forks.bip143),
29 ✔
485
        "Witness version 0 (segwit), defaults to {} (soft fork)."
486
    )
487
    (
87 ✔
488
        "forks.bip147",
489
        setting<bool>(&configured.bitcoin.forks.bip147),
29 ✔
490
        "Prevent dummy value malleability, defaults to {} (soft fork)."
491
    )
492
    (
87 ✔
493
        "forks.bip341",
494
        setting<bool>(&configured.bitcoin.forks.bip341),
29 ✔
495
        "Witness version 1 (taproot), defaults to {} (soft fork)."
496
    )
497
    (
87 ✔
498
        "forks.bip342",
499
        setting<bool>(&configured.bitcoin.forks.bip342),
29 ✔
500
        "Validation of taproot script, defaults to {} (soft fork)."
501
    )
502
    (
87 ✔
503
        "forks.bip54_timewarp",
504
        setting<bool>(&configured.bitcoin.forks.bip54_timewarp),
29 ✔
505
        "Limit timestamp regression on retarget blocks, defaults to {} (soft fork)."
506
    )
507
    (
87 ✔
508
        "forks.bip54_timespan",
509
        setting<bool>(&configured.bitcoin.forks.bip54_timespan),
29 ✔
510
        "Require non-negative retarget timespans, defaults to {} (soft fork)."
511
    )
512
    (
87 ✔
513
        "forks.bip54_sigops",
514
        setting<bool>(&configured.bitcoin.forks.bip54_sigops),
29 ✔
515
        "Limit legacy signature operations per transaction, defaults to {} (soft fork)."
516
    )
517
    (
87 ✔
518
        "forks.bip54_txsize",
519
        setting<bool>(&configured.bitcoin.forks.bip54_txsize),
29 ✔
520
        "Disallow 64 byte witness-stripped transactions, defaults to {} (soft fork)."
521
    )
522
    (
87 ✔
523
        "forks.bip54_coinbase",
524
        setting<bool>(&configured.bitcoin.forks.bip54_coinbase),
29 ✔
525
        "Require coinbase locktime of parent height and non-final sequence, defaults to {} (soft fork)."
526
    )
527
    (
87 ✔
528
        "forks.time_warp_patch",
529
        setting<bool>(&configured.bitcoin.forks.time_warp_patch),
29 ✔
530
        "Assume time_warp_patch activation if enabled, defaults to {} (testnet4)."
531
    )
532
    (
87 ✔
533
        "forks.block_storm_patch",
534
        setting<bool>(&configured.bitcoin.forks.block_storm_patch),
29 ✔
535
        "Assume block_storm_patch activation if enabled, defaults to {} (testnet4)."
536
    )
537
    (
87 ✔
538
        "forks.signet",
539
        setting<bool>(&configured.bitcoin.forks.signet),
29 ✔
540
        "Require signet block solutions, defaults to {} (signet)."
541
    )
542
    (
87 ✔
543
        "forks.ltc_time_warp_patch",
544
        setting<bool>(&configured.bitcoin.forks.ltc_time_warp_patch),
29 ✔
545
        "Fix time warp bug, defaults to {} (litecoin)."
546
    )
547
    (
87 ✔
548
        "forks.ltc_retarget_overflow_patch",
549
        setting<bool>(&configured.bitcoin.forks.ltc_retarget_overflow_patch),
29 ✔
550
        "Fix target overflow for very low difficulty, defaults to {} (litecoin)."
551
    )
552
    (
87 ✔
553
        "forks.ltc_scrypt_proof_of_work",
554
        setting<bool>(&configured.bitcoin.forks.ltc_scrypt_proof_of_work),
29 ✔
555
        "Use scrypt hashing for proof of work, defaults to {} (litecoin)."
556
    )
557

558
    /* [bitcoin] */
559
    (
87 ✔
560
        "bitcoin.network",
561
        setting<config::selection>(&configured.bitcoin.network),
29 ✔
562
        ("The network of the defaults (" + config::selection::names() +
58 ✔
563
            "), defaults to {}.").c_str()
564
    )
565
    (
87 ✔
566
        "bitcoin.initial_block_subsidy_bitcoin",
567
        setting<uint64_t>(&configured.bitcoin.initial_subsidy_bitcoin),
29 ✔
568
        "The initial block subsidy, defaults to {}."
569
    )
570
    (
87 ✔
571
        "bitcoin.subsidy_interval",
572
        setting<uint32_t>(&configured.bitcoin.subsidy_interval_blocks),
29 ✔
573
        "The subsidy halving period, defaults to {}."
574
    )
575
    (
87 ✔
576
        "bitcoin.timestamp_limit_seconds",
577
        setting<uint32_t>(&configured.bitcoin.timestamp_limit_seconds),
29 ✔
578
        "The future timestamp allowance, defaults to {}."
579
    )
580
    (
87 ✔
581
        "bitcoin.retargeting_factor",
582
        setting<uint32_t>(&configured.bitcoin.retargeting_factor),
29 ✔
583
        "The difficulty retargeting factor, defaults to {}."
584
    )
585
    (
87 ✔
586
        "bitcoin.retargeting_interval_seconds",
587
        setting<uint32_t>(&configured.bitcoin.retargeting_interval_seconds),
29 ✔
588
        "The difficulty retargeting period, defaults to {}."
589
    )
590
    (
87 ✔
591
        "bitcoin.block_spacing_seconds",
592
        setting<uint32_t>(&configured.bitcoin.block_spacing_seconds),
29 ✔
593
        "The target block period, defaults to {}."
594
    )
595
    (
87 ✔
596
        "bitcoin.proof_of_work_limit",
597
        setting<uint32_t>(&configured.bitcoin.proof_of_work_limit),
29 ✔
598
        "The proof of work limit, defaults to {}."
599
    )
600
    (
87 ✔
601
        "bitcoin.genesis_block",
602
        setting<config::block>(&configured.bitcoin.genesis_block),
29 ✔
603
        "The hexadecimal encoding of the genesis block, defaults to mainnet."
604
    )
605
    (
87 ✔
606
        "bitcoin.signet_challenge",
607
        setting<config::script>(&configured.bitcoin.signet_challenge),
29 ✔
608
        "The signet block challenge script, defaults to none (signet)."
609
    )
610
    (
87 ✔
611
        "bitcoin.checkpoint",
612
        setting<chain::checkpoints>(&configured.bitcoin.checkpoints),
29 ✔
613
        "The blockchain checkpoints, defaults to the consensus set."
614
    )
615
    // [version properties excluded here]
616
    (
87 ✔
617
        "bitcoin.bip16_activation_time",
618
        setting<uint32_t>(&configured.bitcoin.bip16_activation_time),
29 ✔
619
        "The activation time for bip16 in unix time, defaults to {}."
620
    )
621
    (
87 ✔
622
        "bitcoin.bip34_activation_threshold",
623
        setting<size_t>(&configured.bitcoin.bip34_activation_threshold),
29 ✔
624
        "The number of new version blocks required for bip34 style soft fork activation, defaults to {}."
625
    )
626
    (
87 ✔
627
        "bitcoin.bip34_enforcement_threshold",
628
        setting<size_t>(&configured.bitcoin.bip34_enforcement_threshold),
29 ✔
629
        "The number of new version blocks required for bip34 style soft fork enforcement, defaults to {}."
630
    )
631
    (
87 ✔
632
        "bitcoin.bip34_activation_sample",
633
        setting<size_t>(&configured.bitcoin.bip34_activation_sample),
29 ✔
634
        "The number of blocks considered for bip34 style soft fork activation, defaults to {}."
635
    )
636
    (
87 ✔
637
        "bitcoin.bip34_freeze",
638
        setting<size_t>(&configured.bitcoin.bip90_bip34_height),
29 ✔
639
        "The block height to freeze the bip34 softfork for bip90, defaults to {}."
640
    )
641
    (
87 ✔
642
        "bitcoin.bip65_freeze",
643
        setting<size_t>(&configured.bitcoin.bip90_bip65_height),
29 ✔
644
        "The block height to freeze the bip65 softfork for bip90, defaults to {}."
645
    )
646
    (
87 ✔
647
        "bitcoin.bip66_freeze",
648
        setting<size_t>(&configured.bitcoin.bip90_bip66_height),
29 ✔
649
        "The block height to freeze the bip66 softfork for bip90, defaults to {}."
650
    )
651
    (
87 ✔
652
        "bitcoin.bip9_activation_period",
653
        setting<size_t>(&configured.bitcoin.bip9_activation_period),
29 ✔
654
        "The number of blocks in a bip9 signaling period, defaults to {}."
655
    )
656
    (
87 ✔
657
        "bitcoin.bip9_bit0_start",
658
        setting<uint32_t>(&configured.bitcoin.bip9_bit0_deployment.start),
29 ✔
659
        "The median time past to start bip9 bit0 signaling, 4294967295 for always active, defaults to {}."
660
    )
661
    (
87 ✔
662
        "bitcoin.bip9_bit0_timeout",
663
        setting<uint32_t>(&configured.bitcoin.bip9_bit0_deployment.timeout),
29 ✔
664
        "The median time past to time out bip9 bit0 signaling, defaults to {}."
665
    )
666
    (
87 ✔
667
        "bitcoin.bip9_bit0_threshold",
668
        setting<size_t>(&configured.bitcoin.bip9_bit0_deployment.threshold),
29 ✔
669
        "The signaling blocks per period to lock in bip9 bit0, zero to disable, defaults to {}."
670
    )
671
    (
87 ✔
672
        "bitcoin.bip9_bit0_activation_height",
673
        setting<size_t>(&configured.bitcoin.bip9_bit0_deployment.activation_height),
29 ✔
674
        "The minimum bip9 bit0 activation height, defaults to {}."
675
    )
676
    (
87 ✔
677
        "bitcoin.bip9_bit0_speedy_trial",
678
        setting<bool>(&configured.bitcoin.bip9_bit0_deployment.speedy),
29 ✔
679
        "Check the bip9 bit0 threshold before timeout (speedy trial), defaults to {}."
680
    )
681
    (
87 ✔
682
        "bitcoin.bip9_bit1_start",
683
        setting<uint32_t>(&configured.bitcoin.bip9_bit1_deployment.start),
29 ✔
684
        "The median time past to start bip9 bit1 signaling, 4294967295 for always active, defaults to {}."
685
    )
686
    (
87 ✔
687
        "bitcoin.bip9_bit1_timeout",
688
        setting<uint32_t>(&configured.bitcoin.bip9_bit1_deployment.timeout),
29 ✔
689
        "The median time past to time out bip9 bit1 signaling, defaults to {}."
690
    )
691
    (
87 ✔
692
        "bitcoin.bip9_bit1_threshold",
693
        setting<size_t>(&configured.bitcoin.bip9_bit1_deployment.threshold),
29 ✔
694
        "The signaling blocks per period to lock in bip9 bit1, zero to disable, defaults to {}."
695
    )
696
    (
87 ✔
697
        "bitcoin.bip9_bit1_activation_height",
698
        setting<size_t>(&configured.bitcoin.bip9_bit1_deployment.activation_height),
29 ✔
699
        "The minimum bip9 bit1 activation height, defaults to {}."
700
    )
701
    (
87 ✔
702
        "bitcoin.bip9_bit1_speedy_trial",
703
        setting<bool>(&configured.bitcoin.bip9_bit1_deployment.speedy),
29 ✔
704
        "Check the bip9 bit1 threshold before timeout (speedy trial), defaults to {}."
705
    )
706
    (
87 ✔
707
        "bitcoin.bip9_bit2_start",
708
        setting<uint32_t>(&configured.bitcoin.bip9_bit2_deployment.start),
29 ✔
709
        "The median time past to start bip9 bit2 signaling, 4294967295 for always active, defaults to {}."
710
    )
711
    (
87 ✔
712
        "bitcoin.bip9_bit2_timeout",
713
        setting<uint32_t>(&configured.bitcoin.bip9_bit2_deployment.timeout),
29 ✔
714
        "The median time past to time out bip9 bit2 signaling, defaults to {}."
715
    )
716
    (
87 ✔
717
        "bitcoin.bip9_bit2_threshold",
718
        setting<size_t>(&configured.bitcoin.bip9_bit2_deployment.threshold),
29 ✔
719
        "The signaling blocks per period to lock in bip9 bit2, zero to disable, defaults to {}."
720
    )
721
    (
87 ✔
722
        "bitcoin.bip9_bit2_activation_height",
723
        setting<size_t>(&configured.bitcoin.bip9_bit2_deployment.activation_height),
29 ✔
724
        "The minimum bip9 bit2 activation height, defaults to {}."
725
    )
726
    (
87 ✔
727
        "bitcoin.bip9_bit2_speedy_trial",
728
        setting<bool>(&configured.bitcoin.bip9_bit2_deployment.speedy),
29 ✔
729
        "Check the bip9 bit2 threshold before timeout (speedy trial), defaults to {}."
730
    )
731
    (
87 ✔
732
        "bitcoin.bip54_timewarp_start",
733
        setting<uint32_t>(&configured.bitcoin.bip54_timewarp_deployment.start),
29 ✔
734
        "The median time past to start bip54 timewarp signaling, 4294967295 for always active, defaults to {}."
735
    )
736
    (
87 ✔
737
        "bitcoin.bip54_timewarp_timeout",
738
        setting<uint32_t>(&configured.bitcoin.bip54_timewarp_deployment.timeout),
29 ✔
739
        "The median time past to time out bip54 timewarp signaling, defaults to {}."
740
    )
741
    (
87 ✔
742
        "bitcoin.bip54_timewarp_threshold",
743
        setting<size_t>(&configured.bitcoin.bip54_timewarp_deployment.threshold),
29 ✔
744
        "The signaling blocks per period to lock in bip54 timewarp, zero to disable, defaults to {}."
745
    )
746
    (
87 ✔
747
        "bitcoin.bip54_timewarp_activation_height",
748
        setting<size_t>(&configured.bitcoin.bip54_timewarp_deployment.activation_height),
29 ✔
749
        "The minimum bip54 timewarp activation height, defaults to {}."
750
    )
751
    (
87 ✔
752
        "bitcoin.bip54_timewarp_speedy_trial",
753
        setting<bool>(&configured.bitcoin.bip54_timewarp_deployment.speedy),
29 ✔
754
        "Check the bip54 timewarp threshold before timeout (speedy trial), defaults to {}."
755
    )
756
    (
87 ✔
757
        "bitcoin.bip54_timespan_start",
758
        setting<uint32_t>(&configured.bitcoin.bip54_timespan_deployment.start),
29 ✔
759
        "The median time past to start bip54 timespan signaling, 4294967295 for always active, defaults to {}."
760
    )
761
    (
87 ✔
762
        "bitcoin.bip54_timespan_timeout",
763
        setting<uint32_t>(&configured.bitcoin.bip54_timespan_deployment.timeout),
29 ✔
764
        "The median time past to time out bip54 timespan signaling, defaults to {}."
765
    )
766
    (
87 ✔
767
        "bitcoin.bip54_timespan_threshold",
768
        setting<size_t>(&configured.bitcoin.bip54_timespan_deployment.threshold),
29 ✔
769
        "The signaling blocks per period to lock in bip54 timespan, zero to disable, defaults to {}."
770
    )
771
    (
87 ✔
772
        "bitcoin.bip54_timespan_activation_height",
773
        setting<size_t>(&configured.bitcoin.bip54_timespan_deployment.activation_height),
29 ✔
774
        "The minimum bip54 timespan activation height, defaults to {}."
775
    )
776
    (
87 ✔
777
        "bitcoin.bip54_timespan_speedy_trial",
778
        setting<bool>(&configured.bitcoin.bip54_timespan_deployment.speedy),
29 ✔
779
        "Check the bip54 timespan threshold before timeout (speedy trial), defaults to {}."
780
    )
781
    (
87 ✔
782
        "bitcoin.bip54_sigops_start",
783
        setting<uint32_t>(&configured.bitcoin.bip54_sigops_deployment.start),
29 ✔
784
        "The median time past to start bip54 sigops signaling, 4294967295 for always active, defaults to {}."
785
    )
786
    (
87 ✔
787
        "bitcoin.bip54_sigops_timeout",
788
        setting<uint32_t>(&configured.bitcoin.bip54_sigops_deployment.timeout),
29 ✔
789
        "The median time past to time out bip54 sigops signaling, defaults to {}."
790
    )
791
    (
87 ✔
792
        "bitcoin.bip54_sigops_threshold",
793
        setting<size_t>(&configured.bitcoin.bip54_sigops_deployment.threshold),
29 ✔
794
        "The signaling blocks per period to lock in bip54 sigops, zero to disable, defaults to {}."
795
    )
796
    (
87 ✔
797
        "bitcoin.bip54_sigops_activation_height",
798
        setting<size_t>(&configured.bitcoin.bip54_sigops_deployment.activation_height),
29 ✔
799
        "The minimum bip54 sigops activation height, defaults to {}."
800
    )
801
    (
87 ✔
802
        "bitcoin.bip54_sigops_speedy_trial",
803
        setting<bool>(&configured.bitcoin.bip54_sigops_deployment.speedy),
29 ✔
804
        "Check the bip54 sigops threshold before timeout (speedy trial), defaults to {}."
805
    )
806
    (
87 ✔
807
        "bitcoin.bip54_txsize_start",
808
        setting<uint32_t>(&configured.bitcoin.bip54_txsize_deployment.start),
29 ✔
809
        "The median time past to start bip54 txsize signaling, 4294967295 for always active, defaults to {}."
810
    )
811
    (
87 ✔
812
        "bitcoin.bip54_txsize_timeout",
813
        setting<uint32_t>(&configured.bitcoin.bip54_txsize_deployment.timeout),
29 ✔
814
        "The median time past to time out bip54 txsize signaling, defaults to {}."
815
    )
816
    (
87 ✔
817
        "bitcoin.bip54_txsize_threshold",
818
        setting<size_t>(&configured.bitcoin.bip54_txsize_deployment.threshold),
29 ✔
819
        "The signaling blocks per period to lock in bip54 txsize, zero to disable, defaults to {}."
820
    )
821
    (
87 ✔
822
        "bitcoin.bip54_txsize_activation_height",
823
        setting<size_t>(&configured.bitcoin.bip54_txsize_deployment.activation_height),
29 ✔
824
        "The minimum bip54 txsize activation height, defaults to {}."
825
    )
826
    (
87 ✔
827
        "bitcoin.bip54_txsize_speedy_trial",
828
        setting<bool>(&configured.bitcoin.bip54_txsize_deployment.speedy),
29 ✔
829
        "Check the bip54 txsize threshold before timeout (speedy trial), defaults to {}."
830
    )
831
    (
87 ✔
832
        "bitcoin.bip54_coinbase_start",
833
        setting<uint32_t>(&configured.bitcoin.bip54_coinbase_deployment.start),
29 ✔
834
        "The median time past to start bip54 coinbase signaling, 4294967295 for always active, defaults to {}."
835
    )
836
    (
87 ✔
837
        "bitcoin.bip54_coinbase_timeout",
838
        setting<uint32_t>(&configured.bitcoin.bip54_coinbase_deployment.timeout),
29 ✔
839
        "The median time past to time out bip54 coinbase signaling, defaults to {}."
840
    )
841
    (
87 ✔
842
        "bitcoin.bip54_coinbase_threshold",
843
        setting<size_t>(&configured.bitcoin.bip54_coinbase_deployment.threshold),
29 ✔
844
        "The signaling blocks per period to lock in bip54 coinbase, zero to disable, defaults to {}."
845
    )
846
    (
87 ✔
847
        "bitcoin.bip54_coinbase_activation_height",
848
        setting<size_t>(&configured.bitcoin.bip54_coinbase_deployment.activation_height),
29 ✔
849
        "The minimum bip54 coinbase activation height, defaults to {}."
850
    )
851
    (
87 ✔
852
        "bitcoin.bip54_coinbase_speedy_trial",
853
        setting<bool>(&configured.bitcoin.bip54_coinbase_deployment.speedy),
29 ✔
854
        "Check the bip54 coinbase threshold before timeout (speedy trial), defaults to {}."
855
    )
856
    (
87 ✔
857
        settings::milestone,
858
        setting<chain::checkpoint>(&configured.bitcoin.milestone),
29 ✔
859
        "A block presumed to be valid but not required to be present, defaults to {}."
860
    )
861
    (
87 ✔
862
        "bitcoin.minimum_work",
863
        setting<config::hash256>(&configured.bitcoin.minimum_work),
29 ✔
864
        "The minimum work for any branch to be considered valid, defaults to {}."
865
    )
866

867
    /* [network] */
868
    (
87 ✔
869
        "network.threads",
870
        setting<uint32_t>(&configured.network.threads),
29 ✔
871
        "The minimum number of threads in the network threadpool, defaults to {} (hardware threads, at most 32)."
872
    )
873
    (
87 ✔
874
        "network.retry_timeout_seconds",
875
        setting<uint32_t>(&configured.network.retry_timeout_seconds),
29 ✔
876
        "The time delay for failed connection retry, defaults to {}."
877
    )
878
    (
87 ✔
879
        "network.connect_timeout_seconds",
880
        setting<uint32_t>(&configured.network.connect_timeout_seconds),
29 ✔
881
        "The time limit for connection establishment, defaults to {}."
882
    )
883
    (
87 ✔
884
        "network.rate_limit",
885
        setting<uint32_t>(&configured.network.rate_limit),
29 ✔
886
        "The per channel send rate limit in bytes per second, defaults to {} (unlimited)."
887
    )
888
    (
87 ✔
889
        "network.blacklist",
890
        setting<network::config::authorities>(&configured.network.blacklists),
29 ✔
891
        "IP address to disallow, allows all others, multiple allowed."
892
    )
893
    (
87 ✔
894
        "network.whitelist",
895
        setting<network::config::authorities>(&configured.network.whitelists),
29 ✔
896
        "IP address to allow, prohibits all others, multiple allowed."
897
    )
898

899
    /* [peer] */
900
    (
87 ✔
901
        "peer.address_upper",
902
        setting<uint16_t>(&configured.network.address_upper),
29 ✔
903
        "The upper bound for address selection divisor, defaults to {}."
904
    )
905
    (
87 ✔
906
        "peer.address_lower",
907
        setting<uint16_t>(&configured.network.address_lower),
29 ✔
908
        "The lower bound for address selection divisor, defaults to {}."
909
    )
910
    (
87 ✔
911
        "peer.protocol_maximum",
912
        setting<uint32_t>(&configured.network.protocol_maximum),
29 ✔
913
        "The maximum network protocol version, defaults to {}."
914
    )
915
    (
87 ✔
916
        "peer.protocol_minimum",
917
        setting<uint32_t>(&configured.network.protocol_minimum),
29 ✔
918
        "The minimum network protocol version, defaults to {}."
919
    )
920
    (
87 ✔
921
        "peer.invalid_services",
922
        setting<uint64_t>(&configured.network.invalid_services),
29 ✔
923
        "The advertised services that cause a peer to be dropped, defaults to {}."
924
    )
925
    (
87 ✔
926
        "peer.enable_address",
927
        setting<bool>(&configured.network.enable_address),
29 ✔
928
        "Enable address gossip, defaults to {}."
929
    )
930
    (
87 ✔
931
        "peer.enable_address_v2",
932
        setting<bool>(&configured.network.enable_address_v2),
29 ✔
933
        "Enable privacy network (Tor and I2P) address gossip, defaults to {}."
934
    )
935
    (
87 ✔
936
        "peer.enable_witness_tx",
937
        setting<bool>(&configured.network.enable_witness_tx),
29 ✔
938
        "Enable witness transaction identifier relay, defaults to {}."
939
    )
940
    (
87 ✔
941
        "peer.enable_compact",
942
        setting<bool>(&configured.network.enable_compact),
29 ✔
943
        "Enable compact block messages, defaults to {}."
944
    )
945
    (
87 ✔
946
        "peer.enable_alert",
947
        setting<bool>(&configured.network.enable_alert),
29 ✔
948
        "Enable alert messages, defaults to {}."
949
    )
950
    (
87 ✔
951
        "peer.enable_reject",
952
        setting<bool>(&configured.network.enable_reject),
29 ✔
953
        "Enable reject messages, defaults to {}."
954
    )
955
    (
87 ✔
956
        "peer.enable_not_found",
957
        setting<bool>(&configured.network.enable_not_found),
29 ✔
958
        "Enable not found messages, defaults to {}."
959
    )
960
    (
87 ✔
961
        "peer.enable_memory_pool",
962
        setting<bool>(&configured.network.enable_memory_pool),
29 ✔
963
        "Enable memory pool messages, defaults to {}."
964
    )
965
    (
87 ✔
966
        "peer.enable_relay",
967
        setting<bool>(&configured.network.enable_relay),
29 ✔
968
        "Enable transaction relay, defaults to {}."
969
    )
970
    (
87 ✔
971
        "peer.validate_checksum",
972
        setting<bool>(&configured.network.validate_checksum),
29 ✔
973
        "Validate the checksum of network messages, defaults to {}."
974
    )
975
    (
87 ✔
976
        "peer.gossip_ipv4",
977
        setting<bool>(&configured.network.gossip_ipv4),
29 ✔
978
        "Gossip internet protocol version 4 (IPv4) addresses, defaults to {}."
979
    )
980
    (
87 ✔
981
        "peer.gossip_ipv6",
982
        setting<bool>(&configured.network.gossip_ipv6),
29 ✔
983
        "Gossip internet protocol version 6 (IPv6) addresses, defaults to {}."
984
    )
985
    (
87 ✔
986
        "peer.gossip_tor",
987
        setting<bool>(&configured.network.gossip_tor),
29 ✔
988
        "Gossip tor (onion) addresses, defaults to {}."
989
    )
990
    (
87 ✔
991
        "peer.gossip_i2p",
992
        setting<bool>(&configured.network.gossip_i2p),
29 ✔
993
        "Gossip i2p addresses, defaults to {}."
994
    )
995
    (
87 ✔
996
        "peer.identifier",
997
        setting<uint32_t>(&configured.network.identifier),
29 ✔
998
        "The magic number for message headers, defaults to {}."
999
    )
1000
    (
87 ✔
1001
        "peer.handshake_timeout_seconds",
1002
        setting<uint32_t>(&configured.network.handshake_timeout_seconds),
29 ✔
1003
        "The time limit to complete the connection handshake, defaults to {} (0 disables)."
1004
    )
1005
    (
87 ✔
1006
        "peer.channel_heartbeat_minutes",
1007
        setting<uint32_t>(&configured.network.channel_heartbeat_minutes),
29 ✔
1008
        "The time between ping messages, defaults to {} (0 disables)."
1009
    )
1010
    (
87 ✔
1011
        "peer.maximum_skew_minutes",
1012
        setting<uint32_t>(&configured.network.maximum_skew_minutes),
29 ✔
1013
        "The maximum allowable channel clock skew, defaults to {}."
1014
    )
1015
    (
87 ✔
1016
        "peer.user_agent",
1017
        setting<std::string>(&configured.network.user_agent),
29 ✔
1018
        "The node user agent string, defaults to {}."
1019
    )
1020

1021
    /* [outbound] */
1022
    (
87 ✔
1023
        "outbound.bind",
1024
        setting<network::config::authorities>(&configured.network.outbound.binds),
29 ✔
1025
        "IP address to bind outbound connections, multiple allowed, defaults to {}."
1026
    )
1027
    (
87 ✔
1028
        "outbound.connections",
1029
        setting<uint16_t>(&configured.network.outbound.connections),
29 ✔
1030
        "The target number of outgoing network connections, defaults to {}."
1031
    )
1032
    (
87 ✔
1033
        "outbound.current_connections",
1034
        setting<uint16_t>(&configured.node.current_connections),
29 ✔
1035
        "The target number of outgoing connections when current, defaults to {} (0 disables)."
1036
    )
1037
    (
87 ✔
1038
        "outbound.rate_limit",
1039
        setting<uint32_t>(&configured.network.outbound.rate_limit),
29 ✔
1040
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1041
    )
1042
    (
87 ✔
1043
        "outbound.connect_timeout_seconds",
1044
        setting<uint32_t>(&configured.network.outbound.connect_timeout_seconds),
29 ✔
1045
        "The time limit for connection establishment, defaults to {} (network controls)."
1046
    )
1047
    (
87 ✔
1048
        "outbound.inactivity_minutes",
1049
        setting<uint32_t>(&configured.network.outbound.inactivity_minutes),
29 ✔
1050
        "The inactivity time limit for any connection, defaults to {} (0 disables)."
1051
    )
1052
    (
87 ✔
1053
        "outbound.expiration_minutes",
1054
        setting<uint32_t>(&configured.network.outbound.expiration_minutes),
29 ✔
1055
        "The age limit for any connection, defaults to {} (0 disables)."
1056
    )
1057
    (
87 ✔
1058
        "outbound.minimum_buffer",
1059
        setting<uint32_t>(&configured.network.outbound.minimum_buffer),
29 ✔
1060
        "The minimum retained read buffer size, defaults to {}."
1061
    )
1062
    (
87 ✔
1063
        "outbound.maximum_backlog",
1064
        setting<uint32_t>(&configured.network.outbound.maximum_backlog),
29 ✔
1065
        "The maximum write backlog of a channel, defaults to {}."
1066
    )
1067
    (
87 ✔
1068
        "outbound.maximum_request",
1069
        setting<uint32_t>(&configured.network.outbound.maximum_request),
29 ✔
1070
        "The maximum allowed request size, defaults to {}."
1071
    )
1072
    (
87 ✔
1073
        "outbound.seed",
1074
        setting<network::config::endpoints>(&configured.network.outbound.seeds),
29 ✔
1075
        "A seed node for initializing the host pool, multiple allowed."
1076
    )
1077
    (
87 ✔
1078
        "outbound.connect_batch_size",
1079
        setting<uint16_t>(&configured.network.outbound.connect_batch_size),
29 ✔
1080
        "The number of concurrent attempts to establish one connection, defaults to {}."
1081
    )
1082
    (
87 ✔
1083
        "outbound.host_pool_capacity",
1084
        setting<uint32_t>(&configured.network.outbound.host_pool_capacity),
29 ✔
1085
        "The maximum number of peer hosts in the pool, defaults to {}."
1086
    )
1087
    (
87 ✔
1088
        "outbound.seeding_timeout_seconds",
1089
        setting<uint32_t>(&configured.network.outbound.seeding_timeout_seconds),
29 ✔
1090
        "The time limit for obtaining seed connections and addresses, defaults to {}."
1091
    )
1092
    (
87 ✔
1093
        "outbound.username",
1094
        setting<std::string>(&configured.network.outbound.username),
29 ✔
1095
        "The socks5 proxy username (optional)."
1096
    )
1097
    (
87 ✔
1098
        "outbound.password",
1099
        secret<std::string>(&configured.network.outbound.password),
29 ✔
1100
        "The socks5 proxy password (optional)."
1101
    )
1102
    (
87 ✔
1103
        "outbound.socks",
1104
        setting<config::endpoint>(&configured.network.outbound.socks),
29 ✔
1105
        "The socks5 proxy endpoint (port required)."
1106
    )
1107

1108
    /* [inbound] */
1109
    ////(
1110
    ////    "inbound.secure",
1111
    ////    setting<bool>(&configured.network.inbound.secure),
1112
    ////    "Require transport layer security, defaults to {} (not implemented)."
1113
    ////)
1114
    (
87 ✔
1115
        "inbound.bind",
1116
        setting<network::config::authorities>(&configured.network.inbound.binds),
29 ✔
1117
        "IP address to bind for listening, multiple allowed, defaults to {} (all IPv4)."
1118
    )
1119
    (
87 ✔
1120
        "inbound.connections",
1121
        setting<uint16_t>(&configured.network.inbound.connections),
29 ✔
1122
        "The target number of incoming network connections, defaults to {}."
1123
    )
1124
    (
87 ✔
1125
        "inbound.rate_limit",
1126
        setting<uint32_t>(&configured.network.inbound.rate_limit),
29 ✔
1127
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1128
    )
1129
    (
87 ✔
1130
        "inbound.connect_timeout_seconds",
1131
        setting<uint32_t>(&configured.network.inbound.connect_timeout_seconds),
29 ✔
1132
        "The time limit for connection establishment, defaults to {} (network controls)."
1133
    )
1134
    (
87 ✔
1135
        "inbound.inactivity_minutes",
1136
        setting<uint32_t>(&configured.network.inbound.inactivity_minutes),
29 ✔
1137
        "The inactivity time limit for any connection, defaults to {} (0 disables)."
1138
    )
1139
    (
87 ✔
1140
        "inbound.expiration_minutes",
1141
        setting<uint32_t>(&configured.network.inbound.expiration_minutes),
29 ✔
1142
        "The age limit for any connection, defaults to {} (0 disables)."
1143
    )
1144
    (
87 ✔
1145
        "inbound.minimum_buffer",
1146
        setting<uint32_t>(&configured.network.inbound.minimum_buffer),
29 ✔
1147
        "The minimum retained read buffer size, defaults to {}."
1148
    )
1149
    (
87 ✔
1150
        "inbound.maximum_backlog",
1151
        setting<uint32_t>(&configured.network.inbound.maximum_backlog),
29 ✔
1152
        "The maximum write backlog of a channel, defaults to {}."
1153
    )
1154
    (
87 ✔
1155
        "inbound.maximum_request",
1156
        setting<uint32_t>(&configured.network.inbound.maximum_request),
29 ✔
1157
        "The maximum allowed request size, defaults to {}."
1158
    )
1159
    (
87 ✔
1160
        "inbound.enable_loopback",
1161
        setting<bool>(&configured.network.inbound.enable_loopback),
29 ✔
1162
        "Allow connections from the node to itself, defaults to {}."
1163
    )
1164
    (
87 ✔
1165
        "inbound.self",
1166
        setting<network::config::addresses>(&configured.network.inbound.selfs),
29 ✔
1167
        "Address to advertise, multiple allowed."
1168
    )
1169
    (
87 ✔
1170
        "inbound.username",
1171
        setting<std::string>(&configured.network.inbound.username),
29 ✔
1172
        "The sam bridge username (optional)."
1173
    )
1174
    (
87 ✔
1175
        "inbound.password",
1176
        secret<std::string>(&configured.network.inbound.password),
29 ✔
1177
        "The sam bridge password (optional)."
1178
    )
1179
    (
87 ✔
1180
        "inbound.sam",
1181
        setting<config::endpoint>(&configured.network.inbound.bridge),
29 ✔
1182
        "The i2p sam bridge endpoint (port required)."
1183
    )
1184
    (
87 ✔
1185
        "inbound.key_path",
1186
        setting<config::path>(&configured.network.inbound.key_path),
29 ✔
1187
        "The i2p destination private key file path, created if not existing."
1188
    )
1189

1190
    /* [manual] */
1191
    ////(
1192
    ////    "manual.secure",
1193
    ////    setting<bool>(&configured.network.manual.secure),
1194
    ////    "Require transport layer security, defaults to {} (not implemented)."
1195
    ////)
1196
    (
87 ✔
1197
        "manual.bind",
1198
        setting<network::config::authorities>(&configured.network.manual.binds),
29 ✔
1199
        "IP address to bind manual connections, multiple allowed, defaults to {}."
1200
    )
1201
    ////(
1202
    ////    "manual.connections",
1203
    ////    setting<uint16_t>(&configured.network.manual.connections),
1204
    ////    "The target number of outgoing manual connections (not implemented)."
1205
    ////)
1206
    (
87 ✔
1207
        "manual.rate_limit",
1208
        setting<uint32_t>(&configured.network.manual.rate_limit),
29 ✔
1209
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1210
    )
1211
    (
87 ✔
1212
        "manual.connect_timeout_seconds",
1213
        setting<uint32_t>(&configured.network.manual.connect_timeout_seconds),
29 ✔
1214
        "The time limit for connection establishment, defaults to {} (network controls)."
1215
    )
1216
    (
87 ✔
1217
        "manual.inactivity_minutes",
1218
        setting<uint32_t>(&configured.network.manual.inactivity_minutes),
29 ✔
1219
        "The inactivity time limit for any connection, defaults to {} (0 disables, will attempt reconnect)."
1220
    )
1221
    (
87 ✔
1222
        "manual.expiration_minutes",
1223
        setting<uint32_t>(&configured.network.manual.expiration_minutes),
29 ✔
1224
        "The age limit for any connection, defaults to {} (0 disables, will attempt reconnect)."
1225
    )
1226
    (
87 ✔
1227
        "manual.minimum_buffer",
1228
        setting<uint32_t>(&configured.network.manual.minimum_buffer),
29 ✔
1229
        "The minimum retained read buffer size, defaults to {}."
1230
    )
1231
    (
87 ✔
1232
        "manual.maximum_backlog",
1233
        setting<uint32_t>(&configured.network.manual.maximum_backlog),
29 ✔
1234
        "The maximum write backlog of a channel, defaults to {}."
1235
    )
1236
    (
87 ✔
1237
        "manual.maximum_request",
1238
        setting<uint32_t>(&configured.network.manual.maximum_request),
29 ✔
1239
        "The maximum allowed request size, defaults to {}."
1240
    )
1241
    (
87 ✔
1242
        "manual.peer",
1243
        setting<network::config::endpoints>(&configured.network.manual.peers),
29 ✔
1244
        "A persistent peer node, multiple allowed."
1245
    )
1246
    (
87 ✔
1247
        "manual.username",
1248
        setting<std::string>(&configured.network.manual.username),
29 ✔
1249
        "The socks5 proxy username (optional)."
1250
    )
1251
    (
87 ✔
1252
        "manual.password",
1253
        secret<std::string>(&configured.network.manual.password),
29 ✔
1254
        "The socks5 proxy password (optional)."
1255
    )
1256
    (
87 ✔
1257
        "manual.socks",
1258
        setting<config::endpoint>(&configured.network.manual.socks),
29 ✔
1259
        "The socks5 proxy endpoint (port required)."
1260
    )
1261

1262
    /* [wallet] */
1263
    (
87 ✔
1264
        "wallet.p2kh_prefix",
1265
        setting<config::byte>(&configured.server.wallet.p2kh_prefix),
29 ✔
1266
        "The pay-to-public-key-hash address prefix, defaults to {} (use '111' for testnet)."
1267
    )
1268
    (
87 ✔
1269
        "wallet.p2sh_prefix",
1270
        setting<config::byte>(&configured.server.wallet.p2sh_prefix),
29 ✔
1271
        "The pay-to-script-hash address prefix, defaults to {} (use '196' for testnet)."
1272
    )
1273
    (
87 ✔
1274
        "wallet.wif_prefix",
1275
        setting<config::byte>(&configured.server.wallet.wif_prefix),
29 ✔
1276
        "The wallet import format prefix, defaults to {} (use '239' for testnet)."
1277
    )
1278
    (
87 ✔
1279
        "wallet.witness_prefix",
1280
        setting<std::string>(&configured.server.wallet.witness_prefix),
29 ✔
1281
        "The witness address prefix, defaults to {} (use 'tb' for testnet)."
1282
    )
1283
    (
87 ✔
1284
        "wallet.silent_prefix",
1285
        setting<std::string>(&configured.server.wallet.silent_prefix),
29 ✔
1286
        "The silent payment address prefix, defaults to {} (use 'tsp' for testnet)."
1287
    )
1288
    (
87 ✔
1289
        "wallet.hd_private_prefix",
1290
        setting<uint32_t>(&configured.server.wallet.hd_private_prefix),
29 ✔
1291
        "The extended private key prefix, defaults to {} (use '70615956' for testnet)."
1292
    )
1293
    (
87 ✔
1294
        "wallet.hd_public_prefix",
1295
        setting<uint32_t>(&configured.server.wallet.hd_public_prefix),
29 ✔
1296
        "The extended public key prefix, defaults to {} (use '70617039' for testnet)."
1297
    )
1298

1299
    /* [admin] */
1300
    (
87 ✔
1301
        "admin.bind",
1302
        setting<network::config::authorities>(&configured.server.admin.binds),
29 ✔
1303
        "IP address to bind, multiple allowed, defaults to {} (loopback)."
1304
    )
1305
    (
87 ✔
1306
        "admin.safe",
1307
        setting<network::config::authorities>(&configured.server.admin.safes),
29 ✔
1308
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1309
    )
1310
    (
87 ✔
1311
        "admin.cert_auth",
1312
        setting<config::path>(&configured.server.admin.cert_auth),
29 ✔
1313
        "The trusted client certificate directory (*.PEM), enables client authentication."
1314
    )
1315
    (
87 ✔
1316
        "admin.cert_path",
1317
        setting<config::path>(&configured.server.admin.cert_path),
29 ✔
1318
        "The path to the server certificate file (.PEM), defaults to {}."
1319
    )
1320
    (
87 ✔
1321
        "admin.key_path",
1322
        setting<config::path>(&configured.server.admin.key_path),
29 ✔
1323
        "The path to the server private key file (.PEM), defaults to {}."
1324
    )
1325
    (
87 ✔
1326
        "admin.key_pass",
1327
        secret<std::string>(&configured.server.admin.key_pass),
29 ✔
1328
        "The password to decrypt the server private key file (.PEM), optional."
1329
    )
1330
    (
87 ✔
1331
        "admin.credential",
1332
        secret<network::config::credentials>(&configured.server.admin.credentials),
29 ✔
1333
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1334
    )
1335
    (
87 ✔
1336
        "admin.connections",
1337
        setting<uint16_t>(&configured.server.admin.connections),
29 ✔
1338
        "The required maximum number of connections, defaults to {}."
1339
    )
1340
    (
87 ✔
1341
        "admin.rate_limit",
1342
        setting<uint32_t>(&configured.server.admin.rate_limit),
29 ✔
1343
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1344
    )
1345
    (
87 ✔
1346
        "admin.connect_timeout_seconds",
1347
        setting<uint32_t>(&configured.server.admin.connect_timeout_seconds),
29 ✔
1348
        "The time limit for connection establishment, defaults to {} (network controls)."
1349
    )
1350
    (
87 ✔
1351
        "admin.inactivity_minutes",
1352
        setting<uint32_t>(&configured.server.admin.inactivity_minutes),
29 ✔
1353
        "The idle timeout (http keep-alive), defaults to {}."
1354
    )
1355
    (
87 ✔
1356
        "admin.expiration_minutes",
1357
        setting<uint32_t>(&configured.server.admin.expiration_minutes),
29 ✔
1358
        "The maximum connection duration, defaults to {}."
1359
    )
1360
    (
87 ✔
1361
        "admin.minimum_buffer",
1362
        setting<uint32_t>(&configured.server.admin.minimum_buffer),
29 ✔
1363
        "The minimum retained read buffer size, defaults to {}."
1364
    )
1365
    (
87 ✔
1366
        "admin.maximum_backlog",
1367
        setting<uint32_t>(&configured.server.admin.maximum_backlog),
29 ✔
1368
        "The maximum write backlog of a channel, defaults to {}."
1369
    )
1370
    (
87 ✔
1371
        "admin.maximum_buffer",
1372
        setting<uint32_t>(&configured.server.admin.maximum_buffer),
29 ✔
1373
        "The maximum json response buffer size, defaults to {}."
1374
    )
1375
    (
87 ✔
1376
        "admin.maximum_request",
1377
        setting<uint32_t>(&configured.server.admin.maximum_request),
29 ✔
1378
        "The maximum allowed request size, defaults to {}."
1379
    )
1380
    (
87 ✔
1381
        "admin.server",
1382
        setting<std::string>(&configured.server.admin.server),
29 ✔
1383
        "The server name (http header), defaults to {}."
1384
    )
1385
    (
87 ✔
1386
        "admin.host",
1387
        setting<network::config::endpoints>(&configured.server.admin.hosts),
29 ✔
1388
        "The host name (http verification), multiple allowed, defaults to {} (disabled)."
1389
    )
1390
    (
87 ✔
1391
        "admin.origin",
1392
        setting<network::config::endpoints>(&configured.server.admin.origins),
29 ✔
1393
        "The allowed origin (see CORS), multiple allowed, defaults to {} (disabled)."
1394
    )
1395
    (
87 ✔
1396
        "admin.allow_opaque_origin",
1397
        setting<bool>(&configured.server.admin.allow_opaque_origin),
29 ✔
1398
        "Allow requests from opaque origin (see CORS), defaults to {}."
1399
    )
1400
    (
87 ✔
1401
        "admin.default",
1402
        setting<std::string>(&configured.server.admin.default_),
29 ✔
1403
        "The path of the default source page, defaults to {}."
1404
    )
1405

1406
    /* [native] */
1407
    (
87 ✔
1408
        "native.bind",
1409
        setting<network::config::authorities>(&configured.server.native.binds),
29 ✔
1410
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1411
    )
1412
    (
87 ✔
1413
        "native.safe",
1414
        setting<network::config::authorities>(&configured.server.native.safes),
29 ✔
1415
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1416
    )
1417
    (
87 ✔
1418
        "native.cert_auth",
1419
        setting<config::path>(&configured.server.native.cert_auth),
29 ✔
1420
        "The trusted client certificate directory (*.PEM), enables client authentication."
1421
    )
1422
    (
87 ✔
1423
        "native.cert_path",
1424
        setting<config::path>(&configured.server.native.cert_path),
29 ✔
1425
        "The path to the server certificate file (.PEM), defaults to {}."
1426
    )
1427
    (
87 ✔
1428
        "native.key_path",
1429
        setting<config::path>(&configured.server.native.key_path),
29 ✔
1430
        "The path to the server private key file (.PEM), defaults to {}."
1431
    )
1432
    (
87 ✔
1433
        "native.key_pass",
1434
        secret<std::string>(&configured.server.native.key_pass),
29 ✔
1435
        "The password to decrypt the server private key file (.PEM), optional."
1436
    )
1437
    (
87 ✔
1438
        "native.credential",
1439
        secret<network::config::credentials>(&configured.server.native.credentials),
29 ✔
1440
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1441
    )
1442
    (
87 ✔
1443
        "native.connections",
1444
        setting<uint16_t>(&configured.server.native.connections),
29 ✔
1445
        "The required maximum number of connections, defaults to {}."
1446
    )
1447
    (
87 ✔
1448
        "native.rate_limit",
1449
        setting<uint32_t>(&configured.server.native.rate_limit),
29 ✔
1450
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1451
    )
1452
    (
87 ✔
1453
        "native.connect_timeout_seconds",
1454
        setting<uint32_t>(&configured.server.native.connect_timeout_seconds),
29 ✔
1455
        "The time limit for connection establishment, defaults to {} (network controls)."
1456
    )
1457
    (
87 ✔
1458
        "native.inactivity_minutes",
1459
        setting<uint32_t>(&configured.server.native.inactivity_minutes),
29 ✔
1460
        "The idle timeout (http keep-alive), defaults to {}."
1461
    )
1462
    (
87 ✔
1463
        "native.expiration_minutes",
1464
        setting<uint32_t>(&configured.server.native.expiration_minutes),
29 ✔
1465
        "The maximum connection duration, defaults to {}."
1466
    )
1467
    (
87 ✔
1468
        "native.minimum_buffer",
1469
        setting<uint32_t>(&configured.server.native.minimum_buffer),
29 ✔
1470
        "The minimum retained read buffer size, defaults to {}."
1471
    )
1472
    (
87 ✔
1473
        "native.maximum_backlog",
1474
        setting<uint32_t>(&configured.server.native.maximum_backlog),
29 ✔
1475
        "The maximum write backlog of a channel, defaults to {}."
1476
    )
1477
    (
87 ✔
1478
        "native.maximum_buffer",
1479
        setting<uint32_t>(&configured.server.native.maximum_buffer),
29 ✔
1480
        "The maximum json response buffer size, defaults to {}."
1481
    )
1482
    (
87 ✔
1483
        "native.maximum_request",
1484
        setting<uint32_t>(&configured.server.native.maximum_request),
29 ✔
1485
        "The maximum allowed request size, defaults to {}."
1486
    )
1487
    (
87 ✔
1488
        "native.server",
1489
        setting<std::string>(&configured.server.native.server),
29 ✔
1490
        "The server name (http header), defaults to {}."
1491
    )
1492
    (
87 ✔
1493
        "native.host",
1494
        setting<network::config::endpoints>(&configured.server.native.hosts),
29 ✔
1495
        "The host name (http verification), multiple allowed, defaults to {} (disabled)."
1496
    )
1497
    (
87 ✔
1498
        "native.origin",
1499
        setting<network::config::endpoints>(&configured.server.native.origins),
29 ✔
1500
        "The allowed origin (see CORS), multiple allowed, defaults to {} (disabled)."
1501
    )
1502
    (
87 ✔
1503
        "native.allow_opaque_origin",
1504
        setting<bool>(&configured.server.native.allow_opaque_origin),
29 ✔
1505
        "Allow requests from opaque origin (see CORS), defaults to {}."
1506
    )
1507
    (
87 ✔
1508
        "native.default",
1509
        setting<std::string>(&configured.server.native.default_),
29 ✔
1510
        "The path of the default source page, defaults to {}."
1511
    )
1512
    (
87 ✔
1513
        "native.websocket",
1514
        setting<bool>(&configured.server.native.websocket),
29 ✔
1515
        "Enable websocket interface, defaults to {}."
1516
    )
1517

1518
    /* [bitcoind] */
1519
    (
87 ✔
1520
        "bitcoind.bind",
1521
        setting<network::config::authorities>(&configured.server.bitcoind.binds),
29 ✔
1522
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1523
    )
1524
    (
87 ✔
1525
        "bitcoind.safe",
1526
        setting<network::config::authorities>(&configured.server.bitcoind.safes),
29 ✔
1527
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1528
    )
1529
    (
87 ✔
1530
        "bitcoind.cert_auth",
1531
        setting<config::path>(&configured.server.bitcoind.cert_auth),
29 ✔
1532
        "The trusted client certificate directory (*.PEM), enables client authentication."
1533
    )
1534
    (
87 ✔
1535
        "bitcoind.cert_path",
1536
        setting<config::path>(&configured.server.bitcoind.cert_path),
29 ✔
1537
        "The path to the server certificate file (.PEM), defaults to {}."
1538
    )
1539
    (
87 ✔
1540
        "bitcoind.key_path",
1541
        setting<config::path>(&configured.server.bitcoind.key_path),
29 ✔
1542
        "The path to the server private key file (.PEM), defaults to {}."
1543
    )
1544
    (
87 ✔
1545
        "bitcoind.key_pass",
1546
        secret<std::string>(&configured.server.bitcoind.key_pass),
29 ✔
1547
        "The password to decrypt the server private key file (.PEM), optional."
1548
    )
1549
    (
87 ✔
1550
        "bitcoind.credential",
1551
        secret<network::config::credentials>(&configured.server.bitcoind.credentials),
29 ✔
1552
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1553
    )
1554
    (
87 ✔
1555
        "bitcoind.connections",
1556
        setting<uint16_t>(&configured.server.bitcoind.connections),
29 ✔
1557
        "The required maximum number of connections, defaults to {}."
1558
    )
1559
    (
87 ✔
1560
        "bitcoind.rate_limit",
1561
        setting<uint32_t>(&configured.server.bitcoind.rate_limit),
29 ✔
1562
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1563
    )
1564
    (
87 ✔
1565
        "bitcoind.connect_timeout_seconds",
1566
        setting<uint32_t>(&configured.server.bitcoind.connect_timeout_seconds),
29 ✔
1567
        "The time limit for connection establishment, defaults to {} (network controls)."
1568
    )
1569
    (
87 ✔
1570
        "bitcoind.inactivity_minutes",
1571
        setting<uint32_t>(&configured.server.bitcoind.inactivity_minutes),
29 ✔
1572
        "The idle timeout (http keep-alive), defaults to {}."
1573
    )
1574
    (
87 ✔
1575
        "bitcoind.expiration_minutes",
1576
        setting<uint32_t>(&configured.server.bitcoind.expiration_minutes),
29 ✔
1577
        "The maximum connection duration, defaults to {}."
1578
    )
1579
    (
87 ✔
1580
        "bitcoind.minimum_buffer",
1581
        setting<uint32_t>(&configured.server.bitcoind.minimum_buffer),
29 ✔
1582
        "The minimum retained read buffer size, defaults to {}."
1583
    )
1584
    (
87 ✔
1585
        "bitcoind.maximum_backlog",
1586
        setting<uint32_t>(&configured.server.bitcoind.maximum_backlog),
29 ✔
1587
        "The maximum write backlog of a channel, defaults to {}."
1588
    )
1589
    (
87 ✔
1590
        "bitcoind.maximum_buffer",
1591
        setting<uint32_t>(&configured.server.bitcoind.maximum_buffer),
29 ✔
1592
        "The maximum json response buffer size, defaults to {}."
1593
    )
1594
    (
87 ✔
1595
        "bitcoind.maximum_request",
1596
        setting<uint32_t>(&configured.server.bitcoind.maximum_request),
29 ✔
1597
        "The maximum allowed request size, defaults to {}."
1598
    )
1599
    (
87 ✔
1600
        "bitcoind.server",
1601
        setting<std::string>(&configured.server.bitcoind.server),
29 ✔
1602
        "The server name (http header), defaults to {}."
1603
    )
1604
    (
87 ✔
1605
        "bitcoind.protocol_minimum",
1606
        setting<uint32_t>(&configured.server.bitcoind.protocol_minimum),
29 ✔
1607
        "The minimum interface version (bitcoind version encoding), defaults to {}."
1608
    )
1609
    (
87 ✔
1610
        "bitcoind.protocol_maximum",
1611
        setting<uint32_t>(&configured.server.bitcoind.protocol_maximum),
29 ✔
1612
        "The maximum interface version (bitcoind version encoding), defaults to {}."
1613
    )
1614
    (
87 ✔
1615
        "bitcoind.host",
1616
        setting<network::config::endpoints>(&configured.server.bitcoind.hosts),
29 ✔
1617
        "The host name (http verification), multiple allowed, defaults to {} (disabled)."
1618
    )
1619
    (
87 ✔
1620
        "bitcoind.origin",
1621
        setting<network::config::endpoints>(&configured.server.bitcoind.origins),
29 ✔
1622
        "The allowed origin (see CORS), multiple allowed, defaults to {} (disabled)."
1623
    )
1624
    (
87 ✔
1625
        "bitcoind.allow_opaque_origin",
1626
        setting<bool>(&configured.server.bitcoind.allow_opaque_origin),
29 ✔
1627
        "Allow requests from opaque origin (see CORS), defaults to {}."
1628
    )
1629

1630
    /* [zmq] */
1631
    (
87 ✔
1632
        "zmq.bind",
1633
        setting<network::config::authorities>(&configured.server.zmq.binds),
29 ✔
1634
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1635
    )
1636
    (
87 ✔
1637
        "zmq.safe",
1638
        setting<network::config::authorities>(&configured.server.zmq.safes),
29 ✔
1639
        "IP address to secure (CurveZMQ) bind, multiple allowed, defaults to {} (disabled)."
1640
    )
1641
    (
87 ✔
1642
        "zmq.cert",
1643
        setting<std::vector<config::base85>>(&configured.server.zmq.certs),
29 ✔
1644
        "The Z85 encoded public key of an authorized client, multiple allowed, defaults to {} (all)."
1645
    )
1646
    (
87 ✔
1647
        "zmq.connections",
1648
        setting<uint16_t>(&configured.server.zmq.connections),
29 ✔
1649
        "The required maximum number of connections, defaults to {}."
1650
    )
1651
    (
87 ✔
1652
        "zmq.rate_limit",
1653
        setting<uint32_t>(&configured.server.zmq.rate_limit),
29 ✔
1654
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1655
    )
1656
    (
87 ✔
1657
        "zmq.connect_timeout_seconds",
1658
        setting<uint32_t>(&configured.server.zmq.connect_timeout_seconds),
29 ✔
1659
        "The time limit for connection establishment, defaults to {} (network controls)."
1660
    )
1661
    (
87 ✔
1662
        "zmq.minimum_buffer",
1663
        setting<uint32_t>(&configured.server.zmq.minimum_buffer),
29 ✔
1664
        "The minimum retained read buffer size, defaults to {}."
1665
    )
1666
    (
87 ✔
1667
        "zmq.maximum_backlog",
1668
        setting<uint32_t>(&configured.server.zmq.maximum_backlog),
29 ✔
1669
        "The maximum write backlog of a channel, defaults to {}."
1670
    )
1671
    (
87 ✔
1672
        "zmq.maximum_request",
1673
        setting<uint32_t>(&configured.server.zmq.maximum_request),
29 ✔
1674
        "The maximum allowed request size, defaults to {}."
1675
    )
1676
    (
87 ✔
1677
        "zmq.maximum_subscriptions",
1678
        setting<uint32_t>(&configured.server.zmq.maximum_subscriptions),
29 ✔
1679
        "The maximum topic subscriptions per connection, defaults to {}."
1680
    )
1681
    (
87 ✔
1682
        "zmq.key",
1683
        secret<config::base85>(&configured.server.zmq.key),
29 ✔
1684
        "The Z85 encoded CurveZMQ server secret key, defaults to none (unencrypted)."
1685
    )
1686

1687
    /* [btcd] */
1688
    (
87 ✔
1689
        "btcd.bind",
1690
        setting<network::config::authorities>(&configured.server.btcd.binds),
29 ✔
1691
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1692
    )
1693
    (
87 ✔
1694
        "btcd.safe",
1695
        setting<network::config::authorities>(&configured.server.btcd.safes),
29 ✔
1696
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1697
    )
1698
    (
87 ✔
1699
        "btcd.cert_auth",
1700
        setting<config::path>(&configured.server.btcd.cert_auth),
29 ✔
1701
        "The trusted client certificate directory (*.PEM), enables client authentication."
1702
    )
1703
    (
87 ✔
1704
        "btcd.cert_path",
1705
        setting<config::path>(&configured.server.btcd.cert_path),
29 ✔
1706
        "The path to the server certificate file (.PEM), defaults to {}."
1707
    )
1708
    (
87 ✔
1709
        "btcd.key_path",
1710
        setting<config::path>(&configured.server.btcd.key_path),
29 ✔
1711
        "The path to the server private key file (.PEM), defaults to {}."
1712
    )
1713
    (
87 ✔
1714
        "btcd.key_pass",
1715
        secret<std::string>(&configured.server.btcd.key_pass),
29 ✔
1716
        "The password to decrypt the server private key file (.PEM), optional."
1717
    )
1718
    (
87 ✔
1719
        "btcd.credential",
1720
        secret<network::config::credentials>(&configured.server.btcd.credentials),
29 ✔
1721
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1722
    )
1723
    (
87 ✔
1724
        "btcd.connections",
1725
        setting<uint16_t>(&configured.server.btcd.connections),
29 ✔
1726
        "The required maximum number of connections, defaults to {}."
1727
    )
1728
    (
87 ✔
1729
        "btcd.rate_limit",
1730
        setting<uint32_t>(&configured.server.btcd.rate_limit),
29 ✔
1731
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1732
    )
1733
    (
87 ✔
1734
        "btcd.connect_timeout_seconds",
1735
        setting<uint32_t>(&configured.server.btcd.connect_timeout_seconds),
29 ✔
1736
        "The time limit for connection establishment, defaults to {} (network controls)."
1737
    )
1738
    (
87 ✔
1739
        "btcd.inactivity_minutes",
1740
        setting<uint32_t>(&configured.server.btcd.inactivity_minutes),
29 ✔
1741
        "The idle timeout (http/ws keep-alive), defaults to {}."
1742
    )
1743
    (
87 ✔
1744
        "btcd.expiration_minutes",
1745
        setting<uint32_t>(&configured.server.btcd.expiration_minutes),
29 ✔
1746
        "The maximum connection duration, defaults to {}."
1747
    )
1748
    (
87 ✔
1749
        "btcd.minimum_buffer",
1750
        setting<uint32_t>(&configured.server.btcd.minimum_buffer),
29 ✔
1751
        "The minimum retained read buffer size, defaults to {}."
1752
    )
1753
    (
87 ✔
1754
        "btcd.maximum_backlog",
1755
        setting<uint32_t>(&configured.server.btcd.maximum_backlog),
29 ✔
1756
        "The maximum write backlog of a channel, defaults to {}."
1757
    )
1758
    (
87 ✔
1759
        "btcd.maximum_buffer",
1760
        setting<uint32_t>(&configured.server.btcd.maximum_buffer),
29 ✔
1761
        "The maximum json response buffer size, defaults to {}."
1762
    )
1763
    (
87 ✔
1764
        "btcd.maximum_request",
1765
        setting<uint32_t>(&configured.server.btcd.maximum_request),
29 ✔
1766
        "The maximum allowed request size, defaults to {}."
1767
    )
1768
    (
87 ✔
1769
        "btcd.server",
1770
        setting<std::string>(&configured.server.btcd.server),
29 ✔
1771
        "The server name (http header), defaults to {}."
1772
    )
1773
    (
87 ✔
1774
        "btcd.maximum_filters",
1775
        setting<uint32_t>(&configured.server.btcd.maximum_filters),
29 ✔
1776
        "The maximum number of loadtxfilter watches, defaults to {}."
1777
    )
1778
    (
87 ✔
1779
        "btcd.maximum_history",
1780
        setting<uint32_t>(&configured.server.btcd.maximum_history),
29 ✔
1781
        "The maximum number of address history entries, defaults to {}."
1782
    )
1783
    (
87 ✔
1784
        "btcd.host",
1785
        setting<network::config::endpoints>(&configured.server.btcd.hosts),
29 ✔
1786
        "The host name (http verification), multiple allowed, defaults to {} (disabled)."
1787
    )
1788
    (
87 ✔
1789
        "btcd.origin",
1790
        setting<network::config::endpoints>(&configured.server.btcd.origins),
29 ✔
1791
        "The allowed origin (see CORS), multiple allowed, defaults to {} (disabled)."
1792
    )
1793
    (
87 ✔
1794
        "btcd.allow_opaque_origin",
1795
        setting<bool>(&configured.server.btcd.allow_opaque_origin),
29 ✔
1796
        "Allow requests from opaque origin (see CORS), defaults to {}."
1797
    )
1798

1799
    /* [electrum] */
1800
    (
87 ✔
1801
        "electrum.bind",
1802
        setting<network::config::authorities>(&configured.server.electrum.binds),
29 ✔
1803
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1804
    )
1805
    (
87 ✔
1806
        "electrum.safe",
1807
        setting<network::config::authorities>(&configured.server.electrum.safes),
29 ✔
1808
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1809
    )
1810
    (
87 ✔
1811
        "electrum.cert_auth",
1812
        setting<config::path>(&configured.server.electrum.cert_auth),
29 ✔
1813
        "The trusted client certificate directory (*.PEM), enables client authentication."
1814
    )
1815
    (
87 ✔
1816
        "electrum.cert_path",
1817
        setting<config::path>(&configured.server.electrum.cert_path),
29 ✔
1818
        "The path to the server certificate file (.PEM), defaults to {}."
1819
    )
1820
    (
87 ✔
1821
        "electrum.key_path",
1822
        setting<config::path>(&configured.server.electrum.key_path),
29 ✔
1823
        "The path to the server private key file (.PEM), defaults to {}."
1824
    )
1825
    (
87 ✔
1826
        "electrum.key_pass",
1827
        secret<std::string>(&configured.server.electrum.key_pass),
29 ✔
1828
        "The password to decrypt the server private key file (.PEM), optional."
1829
    )
1830
    (
87 ✔
1831
        "electrum.credential",
1832
        secret<network::config::credentials>(&configured.server.electrum.credentials),
29 ✔
1833
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1834
    )
1835
    (
87 ✔
1836
        "electrum.connections",
1837
        setting<uint16_t>(&configured.server.electrum.connections),
29 ✔
1838
        "The required maximum number of connections, defaults to {}."
1839
    )
1840
    (
87 ✔
1841
        "electrum.rate_limit",
1842
        setting<uint32_t>(&configured.server.electrum.rate_limit),
29 ✔
1843
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1844
    )
1845
    (
87 ✔
1846
        "electrum.connect_timeout_seconds",
1847
        setting<uint32_t>(&configured.server.electrum.connect_timeout_seconds),
29 ✔
1848
        "The time limit for connection establishment, defaults to {} (network controls)."
1849
    )
1850
    (
87 ✔
1851
        "electrum.inactivity_minutes",
1852
        setting<uint32_t>(&configured.server.electrum.inactivity_minutes),
29 ✔
1853
        "The idle timeout (http keep-alive), defaults to {}."
1854
    )
1855
    (
87 ✔
1856
        "electrum.expiration_minutes",
1857
        setting<uint32_t>(&configured.server.electrum.expiration_minutes),
29 ✔
1858
        "The maximum connection duration, defaults to {}."
1859
    )
1860
    (
87 ✔
1861
        "electrum.minimum_buffer",
1862
        setting<uint32_t>(&configured.server.electrum.minimum_buffer),
29 ✔
1863
        "The minimum retained read buffer size, defaults to {}."
1864
    )
1865
    (
87 ✔
1866
        "electrum.maximum_backlog",
1867
        setting<uint32_t>(&configured.server.electrum.maximum_backlog),
29 ✔
1868
        "The maximum write backlog of a channel, defaults to {}."
1869
    )
1870
    (
87 ✔
1871
        "electrum.maximum_buffer",
1872
        setting<uint32_t>(&configured.server.electrum.maximum_buffer),
29 ✔
1873
        "The maximum json response buffer size, defaults to {}."
1874
    )
1875
    (
87 ✔
1876
        "electrum.maximum_request",
1877
        setting<uint32_t>(&configured.server.electrum.maximum_request),
29 ✔
1878
        "The maximum allowed request size, defaults to {}."
1879
    )
1880
    (
87 ✔
1881
        "electrum.maximum_headers",
1882
        setting<uint32_t>(&configured.server.electrum.maximum_headers),
29 ✔
1883
        "The maximum allowed headers returned per request, defaults to {}."
1884
    )
1885
    (
87 ✔
1886
        "electrum.maximum_history",
1887
        setting<uint32_t>(&configured.server.electrum.maximum_history),
29 ✔
1888
        "The maximum number of address history entries upon one subscription, defaults to {}."
1889
    )
1890
    (
87 ✔
1891
        "electrum.maximum_subscriptions",
1892
        setting<uint32_t>(&configured.server.electrum.maximum_subscriptions),
29 ✔
1893
        "The maximum allowed address subscriptions per channel, defaults to {}."
1894
    )
1895
    (
87 ✔
1896
        "electrum.ping_interval_seconds",
1897
        setting<uint32_t>(&configured.server.electrum.ping_interval_seconds),
29 ✔
1898
        "The seconds between unrequested pings, defaults to {} (disabled)."
1899
    )
1900
    (
87 ✔
1901
        "electrum.ping_size",
1902
        setting<uint32_t>(&configured.server.electrum.ping_size),
29 ✔
1903
        "The hex characters of unrequested ping data, defaults to {}."
1904
    )
1905
    (
87 ✔
1906
        "electrum.protocol_minimum",
1907
        setting<version>(&configured.server.electrum.protocol_minimum),
29 ✔
1908
        "Minimum protocol version, defaults to {}."
1909
    )
1910
    (
87 ✔
1911
        "electrum.protocol_maximum",
1912
        setting<version>(&configured.server.electrum.protocol_maximum),
29 ✔
1913
        "Maximum protocol version, defaults to {}."
1914
    )
1915
    (
87 ✔
1916
        "electrum.server_name",
1917
        setting<std::string>(&configured.server.electrum.server_name),
29 ✔
1918
        "String returned by server.version, defaults to {}."
1919
    )
1920
    (
87 ✔
1921
        "electrum.donation_address",
1922
        setting<std::string>(&configured.server.electrum.donation_address),
29 ✔
1923
        "String returned by server.donation_address, defaults to {}."
1924
    )
1925
    (
87 ✔
1926
        "electrum.banner_message",
1927
        setting<std::string>(&configured.server.electrum.banner_message),
29 ✔
1928
        "String returned by server.banner, defaults to {}."
1929
    )
1930
    (
87 ✔
1931
        "electrum.self_bind",
1932
        setting<network::config::endpoints>(&configured.server.electrum.self_binds),
29 ✔
1933
        "Advertised host:port at which this server can be reached (defaults to {})."
1934
    )
1935
    (
87 ✔
1936
        "electrum.self_safe",
1937
        setting<network::config::endpoints>(&configured.server.electrum.self_safes),
29 ✔
1938
        "Advertised secure host:port at which this server can be reached (defaults to {})."
1939
    )
1940
    (
87 ✔
1941
        "electrum.more_bind",
1942
        setting<network::config::endpoints>(&configured.server.electrum.more_binds),
29 ✔
1943
        "Advertised host:port at which another server can be reached (defaults to {})."
1944
    )
1945
    (
87 ✔
1946
        "electrum.more_safe",
1947
        setting<network::config::endpoints>(&configured.server.electrum.more_safes),
29 ✔
1948
        "Advertised secure host:port at which another server can be reached (defaults to {})."
1949
    )
1950

1951
    /* [sparrow] */
1952
    (
87 ✔
1953
        "sparrow.bind",
1954
        setting<network::config::authorities>(&configured.server.sparrow.binds),
29 ✔
1955
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
1956
    )
1957
    (
87 ✔
1958
        "sparrow.safe",
1959
        setting<network::config::authorities>(&configured.server.sparrow.safes),
29 ✔
1960
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
1961
    )
1962
    (
87 ✔
1963
        "sparrow.cert_auth",
1964
        setting<config::path>(&configured.server.sparrow.cert_auth),
29 ✔
1965
        "The trusted client certificate directory (*.PEM), enables client authentication."
1966
    )
1967
    (
87 ✔
1968
        "sparrow.cert_path",
1969
        setting<config::path>(&configured.server.sparrow.cert_path),
29 ✔
1970
        "The path to the server certificate file (.PEM), defaults to {}."
1971
    )
1972
    (
87 ✔
1973
        "sparrow.key_path",
1974
        setting<config::path>(&configured.server.sparrow.key_path),
29 ✔
1975
        "The path to the server private key file (.PEM), defaults to {}."
1976
    )
1977
    (
87 ✔
1978
        "sparrow.key_pass",
1979
        secret<std::string>(&configured.server.sparrow.key_pass),
29 ✔
1980
        "The password to decrypt the server private key file (.PEM), optional."
1981
    )
1982
    (
87 ✔
1983
        "sparrow.credential",
1984
        secret<network::config::credentials>(&configured.server.sparrow.credentials),
29 ✔
1985
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
1986
    )
1987
    (
87 ✔
1988
        "sparrow.connections",
1989
        setting<uint16_t>(&configured.server.sparrow.connections),
29 ✔
1990
        "The required maximum number of connections, defaults to {}."
1991
    )
1992
    (
87 ✔
1993
        "sparrow.rate_limit",
1994
        setting<uint32_t>(&configured.server.sparrow.rate_limit),
29 ✔
1995
        "The send rate limit in bytes per second, defaults to {} (network controls)."
1996
    )
1997
    (
87 ✔
1998
        "sparrow.connect_timeout_seconds",
1999
        setting<uint32_t>(&configured.server.sparrow.connect_timeout_seconds),
29 ✔
2000
        "The time limit for connection establishment, defaults to {} (network controls)."
2001
    )
2002
    (
87 ✔
2003
        "sparrow.inactivity_minutes",
2004
        setting<uint32_t>(&configured.server.sparrow.inactivity_minutes),
29 ✔
2005
        "The idle timeout (http keep-alive), defaults to {}."
2006
    )
2007
    (
87 ✔
2008
        "sparrow.expiration_minutes",
2009
        setting<uint32_t>(&configured.server.sparrow.expiration_minutes),
29 ✔
2010
        "The maximum connection duration, defaults to {}."
2011
    )
2012
    (
87 ✔
2013
        "sparrow.minimum_buffer",
2014
        setting<uint32_t>(&configured.server.sparrow.minimum_buffer),
29 ✔
2015
        "The minimum retained read buffer size, defaults to {}."
2016
    )
2017
    (
87 ✔
2018
        "sparrow.maximum_backlog",
2019
        setting<uint32_t>(&configured.server.sparrow.maximum_backlog),
29 ✔
2020
        "The maximum write backlog of a channel, defaults to {}."
2021
    )
2022
    (
87 ✔
2023
        "sparrow.maximum_buffer",
2024
        setting<uint32_t>(&configured.server.sparrow.maximum_buffer),
29 ✔
2025
        "The maximum json response buffer size, defaults to {}."
2026
    )
2027
    (
87 ✔
2028
        "sparrow.maximum_request",
2029
        setting<uint32_t>(&configured.server.sparrow.maximum_request),
29 ✔
2030
        "The maximum allowed request size, defaults to {}."
2031
    )
2032
    (
87 ✔
2033
        "sparrow.maximum_headers",
2034
        setting<uint32_t>(&configured.server.sparrow.maximum_headers),
29 ✔
2035
        "The maximum allowed headers returned per request, defaults to {}."
2036
    )
2037
    (
87 ✔
2038
        "sparrow.maximum_history",
2039
        setting<uint32_t>(&configured.server.sparrow.maximum_history),
29 ✔
2040
        "The maximum number of address history entries upon one subscription, defaults to {}."
2041
    )
2042
    (
87 ✔
2043
        "sparrow.maximum_subscriptions",
2044
        setting<uint32_t>(&configured.server.sparrow.maximum_subscriptions),
29 ✔
2045
        "The maximum allowed address subscriptions per channel, defaults to {}."
2046
    )
2047
    (
87 ✔
2048
        "sparrow.ping_interval_seconds",
2049
        setting<uint32_t>(&configured.server.sparrow.ping_interval_seconds),
29 ✔
2050
        "The seconds between unrequested pings, defaults to {} (disabled)."
2051
    )
2052
    (
87 ✔
2053
        "sparrow.ping_size",
2054
        setting<uint32_t>(&configured.server.sparrow.ping_size),
29 ✔
2055
        "The hex characters of unrequested ping data, defaults to {}."
2056
    )
2057
    (
87 ✔
2058
        "sparrow.protocol_minimum",
2059
        setting<version>(&configured.server.sparrow.protocol_minimum),
29 ✔
2060
        "Minimum protocol version, defaults to {}."
2061
    )
2062
    (
87 ✔
2063
        "sparrow.protocol_maximum",
2064
        setting<version>(&configured.server.sparrow.protocol_maximum),
29 ✔
2065
        "Maximum protocol version, defaults to {}."
2066
    )
2067
    (
87 ✔
2068
        "sparrow.server_name",
2069
        setting<std::string>(&configured.server.sparrow.server_name),
29 ✔
2070
        "String returned by server.version, defaults to {}."
2071
    )
2072
    (
87 ✔
2073
        "sparrow.donation_address",
2074
        setting<std::string>(&configured.server.sparrow.donation_address),
29 ✔
2075
        "String returned by server.donation_address, defaults to {}."
2076
    )
2077
    (
87 ✔
2078
        "sparrow.banner_message",
2079
        setting<std::string>(&configured.server.sparrow.banner_message),
29 ✔
2080
        "String returned by server.banner, defaults to {}."
2081
    )
2082
    (
87 ✔
2083
        "sparrow.self_bind",
2084
        setting<network::config::endpoints>(&configured.server.sparrow.self_binds),
29 ✔
2085
        "Advertised host:port at which this server can be reached (defaults to {})."
2086
    )
2087
    (
87 ✔
2088
        "sparrow.self_safe",
2089
        setting<network::config::endpoints>(&configured.server.sparrow.self_safes),
29 ✔
2090
        "Advertised secure host:port at which this server can be reached (defaults to {})."
2091
    )
2092
    (
87 ✔
2093
        "sparrow.more_bind",
2094
        setting<network::config::endpoints>(&configured.server.sparrow.more_binds),
29 ✔
2095
        "Advertised host:port at which another server can be reached (defaults to {})."
2096
    )
2097
    (
87 ✔
2098
        "sparrow.more_safe",
2099
        setting<network::config::endpoints>(&configured.server.sparrow.more_safes),
29 ✔
2100
        "Advertised secure host:port at which another server can be reached (defaults to {})."
2101
    )
2102
    /* [esplora] */
2103
    (
87 ✔
2104
        "esplora.bind",
2105
        setting<network::config::authorities>(&configured.server.esplora.binds),
29 ✔
2106
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
2107
    )
2108
    (
87 ✔
2109
        "esplora.safe",
2110
        setting<network::config::authorities>(&configured.server.esplora.safes),
29 ✔
2111
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
2112
    )
2113
    (
87 ✔
2114
        "esplora.cert_auth",
2115
        setting<config::path>(&configured.server.esplora.cert_auth),
29 ✔
2116
        "The trusted client certificate directory (*.PEM), enables client authentication."
2117
    )
2118
    (
87 ✔
2119
        "esplora.cert_path",
2120
        setting<config::path>(&configured.server.esplora.cert_path),
29 ✔
2121
        "The path to the server certificate file (.PEM), defaults to {}."
2122
    )
2123
    (
87 ✔
2124
        "esplora.key_path",
2125
        setting<config::path>(&configured.server.esplora.key_path),
29 ✔
2126
        "The path to the server private key file (.PEM), defaults to {}."
2127
    )
2128
    (
87 ✔
2129
        "esplora.key_pass",
2130
        secret<std::string>(&configured.server.esplora.key_pass),
29 ✔
2131
        "The password to decrypt the server private key file (.PEM), optional."
2132
    )
2133
    (
87 ✔
2134
        "esplora.credential",
2135
        secret<network::config::credentials>(&configured.server.esplora.credentials),
29 ✔
2136
        "The 'username:password[:method,...]' authorization (not secure), multiple allowed."
2137
    )
2138
    (
87 ✔
2139
        "esplora.connections",
2140
        setting<uint16_t>(&configured.server.esplora.connections),
29 ✔
2141
        "The required maximum number of connections, defaults to {}."
2142
    )
2143
    (
87 ✔
2144
        "esplora.rate_limit",
2145
        setting<uint32_t>(&configured.server.esplora.rate_limit),
29 ✔
2146
        "The send rate limit in bytes per second, defaults to {} (network controls)."
2147
    )
2148
    (
87 ✔
2149
        "esplora.connect_timeout_seconds",
2150
        setting<uint32_t>(&configured.server.esplora.connect_timeout_seconds),
29 ✔
2151
        "The time limit for connection establishment, defaults to {} (network controls)."
2152
    )
2153
    (
87 ✔
2154
        "esplora.inactivity_minutes",
2155
        setting<uint32_t>(&configured.server.esplora.inactivity_minutes),
29 ✔
2156
        "The idle timeout (http keep-alive), defaults to {}."
2157
    )
2158
    (
87 ✔
2159
        "esplora.expiration_minutes",
2160
        setting<uint32_t>(&configured.server.esplora.expiration_minutes),
29 ✔
2161
        "The maximum connection duration, defaults to {}."
2162
    )
2163
    (
87 ✔
2164
        "esplora.minimum_buffer",
2165
        setting<uint32_t>(&configured.server.esplora.minimum_buffer),
29 ✔
2166
        "The minimum retained read buffer size, defaults to {}."
2167
    )
2168
    (
87 ✔
2169
        "esplora.maximum_backlog",
2170
        setting<uint32_t>(&configured.server.esplora.maximum_backlog),
29 ✔
2171
        "The maximum write backlog of a channel, defaults to {}."
2172
    )
2173
    (
87 ✔
2174
        "esplora.maximum_buffer",
2175
        setting<uint32_t>(&configured.server.esplora.maximum_buffer),
29 ✔
2176
        "The maximum json response buffer size, defaults to {}."
2177
    )
2178
    (
87 ✔
2179
        "esplora.maximum_request",
2180
        setting<uint32_t>(&configured.server.esplora.maximum_request),
29 ✔
2181
        "The maximum allowed request size, defaults to {}."
2182
    )
2183
    (
87 ✔
2184
        "esplora.server",
2185
        setting<std::string>(&configured.server.esplora.server),
29 ✔
2186
        "The server name (http header), defaults to {}."
2187
    )
2188
    (
87 ✔
2189
        "esplora.protocol_version",
2190
        setting<uint32_t>(&configured.server.esplora.protocol_version),
29 ✔
2191
        "The interface version (10000 major, 100 minor, patch), defaults to {}."
2192
    )
2193
    (
87 ✔
2194
        "esplora.maximum_history",
2195
        setting<uint32_t>(&configured.server.esplora.maximum_history),
29 ✔
2196
        "The maximum number of address history entries, defaults to {}."
2197
    )
2198
    (
87 ✔
2199
        "esplora.host",
2200
        setting<network::config::endpoints>(&configured.server.esplora.hosts),
29 ✔
2201
        "The host name (http verification), multiple allowed, defaults to {} (disabled)."
2202
    )
2203
    (
87 ✔
2204
        "esplora.origin",
2205
        setting<network::config::endpoints>(&configured.server.esplora.origins),
29 ✔
2206
        "The allowed origin (see CORS), multiple allowed, defaults to {} (disabled)."
2207
    )
2208
    (
87 ✔
2209
        "esplora.allow_opaque_origin",
2210
        setting<bool>(&configured.server.esplora.allow_opaque_origin),
29 ✔
2211
        "Allow requests from opaque origin (see CORS), defaults to {}."
2212
    )
2213
#if defined(DISABLED)
2214
    /* [stratum_v1] */
2215
    (
2216
        "stratum_v1.bind",
2217
        setting<network::config::authorities>(&configured.server.stratum_v1.binds),
2218
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
2219
    )
2220
    (
2221
        "stratum_v1.safe",
2222
        setting<network::config::authorities>(&configured.server.stratum_v1.safes),
2223
        "IP address to secure bind, multiple allowed, defaults to {} (disabled)."
2224
    )
2225
    (
2226
        "stratum_v1.cert_path",
2227
        setting<config::path>(&configured.server.stratum_v1.cert_path),
2228
        "The path to the server certificate file (.PEM), defaults to {}."
2229
    )
2230
    (
2231
        "stratum_v1.key_path",
2232
        setting<config::path>(&configured.server.stratum_v1.key_path),
2233
        "The path to the server private key file (.PEM), defaults to {}."
2234
    )
2235
    (
2236
        "stratum_v1.connections",
2237
        setting<uint16_t>(&configured.server.stratum_v1.connections),
2238
        "The required maximum number of connections, defaults to {}."
2239
    )
2240
    (
2241
        "stratum_v1.rate_limit",
2242
        setting<uint32_t>(&configured.server.stratum_v1.rate_limit),
2243
        "The send rate limit in bytes per second, defaults to {} (network controls)."
2244
    )
2245
    (
2246
        "stratum_v1.connect_timeout_seconds",
2247
        setting<uint32_t>(&configured.server.stratum_v1.connect_timeout_seconds),
2248
        "The time limit for connection establishment, defaults to {} (network controls)."
2249
    )
2250
    (
2251
        "stratum_v1.inactivity_minutes",
2252
        setting<uint32_t>(&configured.server.stratum_v1.inactivity_minutes),
2253
        "The idle timeout (http keep-alive), defaults to {}."
2254
    )
2255
    (
2256
        "stratum_v1.expiration_minutes",
2257
        setting<uint32_t>(&configured.server.stratum_v1.expiration_minutes),
2258
        "The maximum connection duration, defaults to {}."
2259
    )
2260
    (
2261
        "stratum_v1.minimum_buffer",
2262
        setting<uint32_t>(&configured.server.stratum_v1.minimum_buffer),
2263
        "The minimum retained read buffer size, defaults to {}."
2264
    )
2265
    (
2266
        "stratum_v1.maximum_backlog",
2267
        setting<uint32_t>(&configured.server.stratum_v1.maximum_backlog),
2268
        "The maximum write backlog of a channel, defaults to {}."
2269
    )
2270
    (
2271
        "stratum_v1.maximum_buffer",
2272
        setting<uint32_t>(&configured.server.stratum_v1.maximum_buffer),
2273
        "The maximum json response buffer size, defaults to {}."
2274
    )
2275
    (
2276
        "stratum_v1.maximum_request",
2277
        setting<uint32_t>(&configured.server.stratum_v1.maximum_request),
2278
        "The maximum allowed request size, defaults to {}."
2279
    )
2280

2281
    /* [stratum_v2] */
2282
    (
2283
        "stratum_v2.bind",
2284
        setting<network::config::authorities>(&configured.server.stratum_v2.binds),
2285
        "IP address to bind, multiple allowed, defaults to {} (disabled)."
2286
    )
2287
    (
2288
        "stratum_v2.connections",
2289
        setting<uint16_t>(&configured.server.stratum_v2.connections),
2290
        "The required maximum number of connections, defaults to {}."
2291
    )
2292
    (
2293
        "stratum_v2.rate_limit",
2294
        setting<uint32_t>(&configured.server.stratum_v2.rate_limit),
2295
        "The send rate limit in bytes per second, defaults to {} (network controls)."
2296
    )
2297
    (
2298
        "stratum_v2.connect_timeout_seconds",
2299
        setting<uint32_t>(&configured.server.stratum_v2.connect_timeout_seconds),
2300
        "The time limit for connection establishment, defaults to {} (network controls)."
2301
    )
2302
    (
2303
        "stratum_v2.inactivity_minutes",
2304
        setting<uint32_t>(&configured.server.stratum_v2.inactivity_minutes),
2305
        "The idle timeout (http keep-alive), defaults to {}."
2306
    )
2307
    (
2308
        "stratum_v2.expiration_minutes",
2309
        setting<uint32_t>(&configured.server.stratum_v2.expiration_minutes),
2310
        "The maximum connection duration, defaults to {}."
2311
    )
2312
    (
2313
        "stratum_v2.minimum_buffer",
2314
        setting<uint32_t>(&configured.server.stratum_v2.minimum_buffer),
2315
        "The minimum retained read buffer size, defaults to {}."
2316
    )
2317
    (
2318
        "stratum_v2.maximum_backlog",
2319
        setting<uint32_t>(&configured.server.stratum_v2.maximum_backlog),
2320
        "The maximum write backlog of a channel, defaults to {}."
2321
    )
2322
    (
2323
        "stratum_v2.maximum_request",
2324
        setting<uint32_t>(&configured.server.stratum_v2.maximum_request),
2325
        "The maximum allowed request size, defaults to {}."
2326
    )
2327

2328
#endif
2329
    /* [node] */
2330
    (
87 ✔
2331
        "node.threads",
2332
        setting<uint32_t>(&configured.node.threads),
29 ✔
2333
        "The number of threads in the validation threadpool, defaults to {} (hardware threads)."
2334
    )
2335
    (
87 ✔
2336
        "node.thread_priority",
2337
        setting<bool>(&configured.node.thread_priority),
29 ✔
2338
        "Set validation threads to high processing priority, defaults to {}."
2339
    )
2340
    (
87 ✔
2341
        "node.memory_priority",
2342
        setting<bool>(&configured.node.memory_priority),
29 ✔
2343
        "Set the process to high memory priority, defaults to {}."
2344
    )
2345
    (
87 ✔
2346
        "node.delay_inbound",
2347
        setting<bool>(&configured.node.delay_inbound),
29 ✔
2348
        "Block inbound peer/client (excluding admin) until current, defaults to {}."
2349
    )
2350
    (
87 ✔
2351
        "node.provide_blocks",
2352
        setting<bool>(&configured.node.provide_blocks),
29 ✔
2353
        "Serve blocks to network connections, defaults to {}."
2354
    )
2355
    (
87 ✔
2356
        "node.limited_blocks",
2357
        setting<bool>(&configured.node.limited_blocks),
29 ✔
2358
        "Limit block service to recent blocks, defaults to {}."
2359
    )
2360
    (
87 ✔
2361
        "node.require_blocks",
2362
        setting<bool>(&configured.node.require_blocks),
29 ✔
2363
        "Require block service of outbound connections, defaults to {}."
2364
    )
2365
    (
87 ✔
2366
        "node.provide_witness",
2367
        setting<bool>(&configured.node.provide_witness),
29 ✔
2368
        "Serve witness data to network connections, defaults to {}."
2369
    )
2370
    (
87 ✔
2371
        "node.require_witness",
2372
        setting<bool>(&configured.node.require_witness),
29 ✔
2373
        "Require witness service of outbound connections, defaults to {}."
2374
    )
2375
    (
87 ✔
2376
        "node.provide_filters",
2377
        setting<bool>(&configured.node.provide_filters),
29 ✔
2378
        "Serve client filters to network connections, defaults to {}."
2379
    )
2380
    (
87 ✔
2381
        "node.provide_privacy",
2382
        setting<bool>(&configured.node.provide_privacy),
29 ✔
2383
        "Provide opportunistic connection encryption, defaults to {}."
2384
    )
2385
    (
87 ✔
2386
        "node.use_gpu",
2387
        setting<bool>(&configured.node.use_gpu),
29 ✔
2388
        "Use the GPU where available, defaults to {}."
2389
    )
2390
    ////(
2391
    ////    "node.cpu_batch_verify",
2392
    ////    setting<bool>(&configured.node.cpu_batch_verify),
2393
    ////    "Batch signature verification on the CPU when the GPU is not used, defaults to {}."
2394
    ////)
2395
    ////(
2396
    ////    "node.cpu_batch_silent",
2397
    ////    setting<bool>(&configured.node.cpu_batch_silent),
2398
    ////    "Batch silent payment indexing on the CPU when the GPU is not used, defaults to {}."
2399
    ////)
2400
    (
87 ✔
2401
        "node.batch_verify",
2402
        setting<uint64_t>(&configured.node.batch_verify),
29 ✔
2403
        "Count of signatures to verify in each batch, defaults to {} (0 disables)."
2404
    )
2405
    (
87 ✔
2406
        "node.batch_silent",
2407
        setting<uint64_t>(&configured.node.batch_silent),
29 ✔
2408
        "Count of silent payment transactions to index in each batch, defaults to {} (0 disables)."
2409
    )
2410
    (
87 ✔
2411
        "node.fee_estimate_horizon",
2412
        setting<uint16_t>(&configured.node.fee_estimate_horizon),
29 ✔
2413
        "Fee estimation horizon, limited to 1008, defaults to {} (0 disables)."
2414
    )
2415
    (
87 ✔
2416
        "node.minimum_fee_rate",
2417
        setting<double>(&configured.node.minimum_fee_rate),
29 ✔
2418
        "Minimum fee rate for non-conflicting tx acceptance, defaults to {}."
2419
    )
2420
    (
87 ✔
2421
        "node.allowed_deviation",
2422
        setting<float>(&configured.node.allowed_deviation),
29 ✔
2423
        "Allowable underperformance standard deviation, defaults to {} (0 disables)."
2424
    )
2425
    (
87 ✔
2426
        "node.maximum_height",
2427
        setting<uint32_t>(&configured.node.maximum_height),
29 ✔
2428
        "Maximum block height to populate, defaults to {} (unlimited)."
2429
    )
2430
    (
87 ✔
2431
        "node.silent_start_height",
2432
        setting<uint32_t>(&configured.node.silent_start_height),
29 ✔
2433
        "Minimum height of silent payment indexation, defaults to {}."
2434
    )
2435
    (
87 ✔
2436
        "node.maximum_concurrency",
2437
        setting<uint32_t>(&configured.node.maximum_concurrency),
29 ✔
2438
        "Maximum number of blocks to download concurrently, defaults to {} (0 disables)."
2439
    )
2440
    (
87 ✔
2441
        "node.sample_period_seconds",
2442
        setting<uint16_t>(&configured.node.sample_period_seconds),
29 ✔
2443
        "Sampling period for drop of stalled channels, defaults to {} (0 disables)."
2444
    )
2445
    (
87 ✔
2446
        "node.compact_timeout_seconds",
2447
        setting<uint16_t>(&configured.node.compact_timeout_seconds),
29 ✔
2448
        "Time to await a compact block fill before downloading the block, defaults to {} (0 disables)."
2449
    )
2450
    (
87 ✔
2451
        "node.compact_missing_percent",
2452
        setting<uint8_t>(&configured.node.compact_missing_percent),
29 ✔
2453
        "Maximum percent of a compact block not pooled to fill it, defaults to {}."
2454
    )
2455
    (
87 ✔
2456
        "node.currency_window_minutes",
2457
        setting<uint32_t>(&configured.node.currency_window_minutes),
29 ✔
2458
        "Time from present that blocks are considered current, defaults to {} (0 disables)."
2459
    )
2460
    ////(
2461
    ////    "node.snapshot_bytes",
2462
    ////    setting<uint64_t>(&configured.node.snapshot_bytes),
2463
    ////    "Downloaded bytes that triggers snapshot, defaults to {} (0 disables)."
2464
    ////)
2465
    ////(
2466
    ////    "node.snapshot_valid",
2467
    ////    setting<uint32_t>(&configured.node.snapshot_valid),
2468
    ////    "Completed validations that trigger snapshot, defaults to {} (0 disables)."
2469
    ////)
2470
    ////(
2471
    ////    "node.snapshot_confirm",
2472
    ////    setting<uint32_t>(&configured.node.snapshot_confirm),
2473
    ////    "Completed confirmations that trigger snapshot, defaults to {} (0 disables)."
2474
    ////)
2475

2476
    /* [database] */
2477
    (
87 ✔
2478
        "database.turbo",
2479
        setting<bool>(&configured.database.turbo),
29 ✔
2480
        "Allow individual non-validation queries to use all CPUs, defaults to {}."
2481
    )
2482
    (
87 ✔
2483
        "database.gpu_scan_minimum",
2484
        setting<uint32_t>(&configured.database.gpu_scan_minimum),
29 ✔
2485
        "Minimum transactions for a silent payment scan to use the GPU, defaults to {}."
2486
    )
2487
    (
87 ✔
2488
        "database.mark_unconfirmable",
2489
        setting<bool>(&configured.database.mark_unconfirmable),
29 ✔
2490
        "Save unconfirmable block state (prevents revalidation), defaults to {}."
2491
    )
2492
    (
87 ✔
2493
        "database.interval_depth",
2494
        setting<uint8_t>(&configured.database.interval_depth),
29 ✔
2495
        "The interval depth for merkle proof optimization, defaults to {}."
2496
    )
2497

2498
    /* [table.*] */
2499

2500
    /* table.header */
2501
    (
87 ✔
2502
        "table.header.buckets",
2503
        setting<uint32_t>(&configured.database.header.buckets),
29 ✔
2504
        "The number of buckets in the header table head, derived from expected and memory, defaults to {}."
2505
    )
2506
    (
87 ✔
2507
        "table.header.expected",
2508
        setting<uint64_t>(&configured.database.header.expected),
29 ✔
2509
        "The expected element count of the header table, defaults to {}."
2510
    )
2511
    (
87 ✔
2512
        "table.header.size",
2513
        setting<uint64_t>(&configured.database.header.size),
29 ✔
2514
        "The minimum allocation of the header table body, defaults to {}."
2515
    )
2516
    (
87 ✔
2517
        "table.header.rate",
2518
        setting<uint16_t>(&configured.database.header.rate),
29 ✔
2519
        "The percentage expansion of the header table body, defaults to {}."
2520
    )
2521

2522
    /* table.input */
2523
    (
87 ✔
2524
        "table.input.size",
2525
        setting<uint64_t>(&configured.database.input.size),
29 ✔
2526
        "The minimum allocation of the input table body, defaults to {}."
2527
    )
2528
    (
87 ✔
2529
        "table.input.rate",
2530
        setting<uint16_t>(&configured.database.input.rate),
29 ✔
2531
        "The percentage expansion of the input table body, defaults to {}."
2532
    )
2533

2534
    /* table.output */
2535
    (
87 ✔
2536
        "table.output.size",
2537
        setting<uint64_t>(&configured.database.output.size),
29 ✔
2538
        "The minimum allocation of the output table body, defaults to {}."
2539
    )
2540
    (
87 ✔
2541
        "table.output.rate",
2542
        setting<uint16_t>(&configured.database.output.rate),
29 ✔
2543
        "The percentage expansion of the output table body, defaults to {}."
2544
    )
2545

2546
    /* table.ins */
2547
    (
87 ✔
2548
        "table.ins.buckets",
2549
        setting<uint32_t>(&configured.database.ins.buckets),
29 ✔
2550
        "The number of buckets in the ins table head, derived from expected and memory, defaults to {}."
2551
    )
2552
    (
87 ✔
2553
        "table.ins.expected",
2554
        setting<uint64_t>(&configured.database.ins.expected),
29 ✔
2555
        "The expected element count of the ins table, defaults to {}."
2556
    )
2557
    (
87 ✔
2558
        "table.ins.size",
2559
        setting<uint64_t>(&configured.database.ins.size),
29 ✔
2560
        "The minimum allocation of the ins table body, defaults to {}."
2561
    )
2562
    (
87 ✔
2563
        "table.ins.rate",
2564
        setting<uint16_t>(&configured.database.ins.rate),
29 ✔
2565
        "The percentage expansion of the ins table body, defaults to {}."
2566
    )
2567

2568
    /* table.outs */
2569
    (
87 ✔
2570
        "table.outs.buckets",
2571
        setting<uint32_t>(&configured.database.outs.buckets),
29 ✔
2572
        "The number of buckets in the outs table head, derived from expected and memory, defaults to {} (0 disables address index)."
2573
    )
2574
    (
87 ✔
2575
        "table.outs.expected",
2576
        setting<uint64_t>(&configured.database.outs.expected),
29 ✔
2577
        "The expected element count of the outs table, defaults to {}."
2578
    )
2579
    (
87 ✔
2580
        "table.outs.size",
2581
        setting<uint64_t>(&configured.database.outs.size),
29 ✔
2582
        "The minimum allocation of the outs table body, defaults to {}."
2583
    )
2584
    (
87 ✔
2585
        "table.outs.rate",
2586
        setting<uint16_t>(&configured.database.outs.rate),
29 ✔
2587
        "The percentage expansion of the outs table body, defaults to {}."
2588
    )
2589

2590
    /* table.tx */
2591
    (
87 ✔
2592
        "table.tx.buckets",
2593
        setting<uint32_t>(&configured.database.tx.buckets),
29 ✔
2594
        "The number of buckets in the tx table head, derived from expected and memory, defaults to {}."
2595
    )
2596
    (
87 ✔
2597
        "table.tx.expected",
2598
        setting<uint64_t>(&configured.database.tx.expected),
29 ✔
2599
        "The expected element count of the tx table, defaults to {}."
2600
    )
2601
    (
87 ✔
2602
        "table.tx.size",
2603
        setting<uint64_t>(&configured.database.tx.size),
29 ✔
2604
        "The minimum allocation of the tx table body, defaults to {}."
2605
    )
2606
    (
87 ✔
2607
        "table.tx.rate",
2608
        setting<uint16_t>(&configured.database.tx.rate),
29 ✔
2609
        "The percentage expansion of the tx table body, defaults to {}."
2610
    )
2611

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

2629
    /* table.candidate */
2630
    (
87 ✔
2631
        "table.candidate.buckets",
2632
        setting<uint32_t>(&configured.database.candidate.buckets),
29 ✔
2633
        "The number of buckets provisioned in the candidate table head, defaults to {}."
2634
    )
2635
    (
87 ✔
2636
        "table.candidate.rate",
2637
        setting<uint16_t>(&configured.database.candidate.rate),
29 ✔
2638
        "The percentage expansion of the candidate table head, defaults to {}."
2639
    )
2640

2641
    /* table.confirmed */
2642
    (
87 ✔
2643
        "table.confirmed.buckets",
2644
        setting<uint32_t>(&configured.database.confirmed.buckets),
29 ✔
2645
        "The number of buckets provisioned in the confirmed table head, defaults to {}."
2646
    )
2647
    (
87 ✔
2648
        "table.confirmed.rate",
2649
        setting<uint16_t>(&configured.database.confirmed.rate),
29 ✔
2650
        "The percentage expansion of the confirmed table head, defaults to {}."
2651
    )
2652

2653
    /* table.strong */
2654
    (
87 ✔
2655
        "table.strong.buckets",
2656
        setting<uint32_t>(&configured.database.strong.buckets),
29 ✔
2657
        "The number of buckets provisioned in the strong table head, derived from tx expected, defaults to {}."
2658
    )
2659
    (
87 ✔
2660
        "table.strong.rate",
2661
        setting<uint16_t>(&configured.database.strong.rate),
29 ✔
2662
        "The percentage expansion of the strong table head, defaults to {}."
2663
    )
2664

2665
    /* table.scan */
2666
    (
87 ✔
2667
        "table.scan.buckets",
2668
        setting<uint32_t>(&configured.database.scan.buckets),
29 ✔
2669
        "The number of buckets provisioned in the scan table head, defaults to {}."
2670
    )
2671
    (
87 ✔
2672
        "table.scan.size",
2673
        setting<uint64_t>(&configured.database.scan.size),
29 ✔
2674
        "The minimum allocation of the scan table body, defaults to {}."
2675
    )
2676
    (
87 ✔
2677
        "table.scan.rate",
2678
        setting<uint16_t>(&configured.database.scan.rate),
29 ✔
2679
        "The percentage expansion of the scan table body, defaults to {}."
2680
    )
2681

2682
    /* table.wtxid */
2683
    (
87 ✔
2684
        "table.wtxid.buckets",
2685
        setting<uint32_t>(&configured.database.wtxid.buckets),
29 ✔
2686
        "The number of buckets in the wtxid table head, derived from expected and memory, defaults to {} (0 disables)."
2687
    )
2688
    (
87 ✔
2689
        "table.wtxid.expected",
2690
        setting<uint64_t>(&configured.database.wtxid.expected),
29 ✔
2691
        "The expected element count of the wtxid table, defaults to {}."
2692
    )
2693
    (
87 ✔
2694
        "table.wtxid.size",
2695
        setting<uint64_t>(&configured.database.wtxid.size),
29 ✔
2696
        "The minimum allocation of the wtxid table body, defaults to {}."
2697
    )
2698
    (
87 ✔
2699
        "table.wtxid.rate",
2700
        setting<uint16_t>(&configured.database.wtxid.rate),
29 ✔
2701
        "The percentage expansion of the wtxid table body, defaults to {}."
2702
    )
2703

2704
    /* table.ecdsa */
2705
    (
87 ✔
2706
        "table.ecdsa.size",
2707
        setting<uint64_t>(&configured.database.ecdsa.size),
29 ✔
2708
        "The minimum allocation of each batch_ecdsa table body, defaults to {}."
2709
    )
2710
    (
87 ✔
2711
        "table.ecdsa.rate",
2712
        setting<uint16_t>(&configured.database.ecdsa.rate),
29 ✔
2713
        "The percentage expansion of each batch_ecdsa table body, defaults to {}."
2714
    )
2715

2716
    /* table.schnorr */
2717
    (
87 ✔
2718
        "table.schnorr.size",
2719
        setting<uint64_t>(&configured.database.schnorr.size),
29 ✔
2720
        "The minimum allocation of each batch_schnorr table body, defaults to {}."
2721
    )
2722
    (
87 ✔
2723
        "table.schnorr.rate",
2724
        setting<uint16_t>(&configured.database.schnorr.rate),
29 ✔
2725
        "The percentage expansion of each batch_schnorr table body, defaults to {}."
2726
    )
2727

2728
    /* table.silent */
2729
    (
87 ✔
2730
        "table.silent.size",
2731
        setting<uint64_t>(&configured.database.silent.size),
29 ✔
2732
        "The minimum allocation of each batch_silent table body, defaults to {}."
2733
    )
2734
    (
87 ✔
2735
        "table.silent.rate",
2736
        setting<uint16_t>(&configured.database.silent.rate),
29 ✔
2737
        "The percentage expansion of each batch_silent table body, defaults to {}."
2738
    )
2739

2740
    /* table.prevalid */
2741
    (
87 ✔
2742
        "table.prevalid.size",
2743
        setting<uint64_t>(&configured.database.prevalid.size),
29 ✔
2744
        "The minimum allocation of each batch_prevalid table body, defaults to {}."
2745
    )
2746
    (
87 ✔
2747
        "table.prevalid.rate",
2748
        setting<uint16_t>(&configured.database.prevalid.rate),
29 ✔
2749
        "The percentage expansion of each batch_prevalid table body, defaults to {}."
2750
    )
2751

2752
    /* table.presilent */
2753
    (
87 ✔
2754
        "table.presilent.size",
2755
        setting<uint64_t>(&configured.database.presilent.size),
29 ✔
2756
        "The minimum allocation of each batch_presilent table body, defaults to {}."
2757
    )
2758
    (
87 ✔
2759
        "table.presilent.rate",
2760
        setting<uint16_t>(&configured.database.presilent.rate),
29 ✔
2761
        "The percentage expansion of each batch_presilent table body, defaults to {}."
2762
    )
2763

2764
    /* table.prevout */
2765
    (
87 ✔
2766
        "table.prevout.buckets",
2767
        setting<uint32_t>(&configured.database.prevout.buckets),
29 ✔
2768
        "The minimum number of buckets in the prevout table head, defaults to {}."
2769
    )
2770
    (
87 ✔
2771
        "table.prevout.size",
2772
        setting<uint64_t>(&configured.database.prevout.size),
29 ✔
2773
        "The minimum allocation of the prevout table body, defaults to {}."
2774
    )
2775
    (
87 ✔
2776
        "table.prevout.rate",
2777
        setting<uint16_t>(&configured.database.prevout.rate),
29 ✔
2778
        "The percentage expansion of the prevout table, defaults to {}."
2779
    )
2780

2781
    /* table.duplicate */
2782
    (
87 ✔
2783
        "table.duplicate.buckets",
2784
        setting<uint32_t>(&configured.database.duplicate.buckets),
29 ✔
2785
        "The minimum number of buckets in the duplicate table head, defaults to {}."
2786
    )
2787
    (
87 ✔
2788
        "table.duplicate.expected",
2789
        setting<uint64_t>(&configured.database.duplicate.expected),
29 ✔
2790
        "The expected element count of the duplicate table, defaults to {}."
2791
    )
2792
    (
87 ✔
2793
        "table.duplicate.size",
2794
        setting<uint64_t>(&configured.database.duplicate.size),
29 ✔
2795
        "The minimum allocation of the duplicate table body, defaults to {}."
2796
    )
2797
    (
87 ✔
2798
        "table.duplicate.rate",
2799
        setting<uint16_t>(&configured.database.duplicate.rate),
29 ✔
2800
        "The percentage expansion of the duplicate table, defaults to {}."
2801
    )
2802

2803
    /* table.state */
2804
    (
87 ✔
2805
        "table.state.buckets",
2806
        setting<uint32_t>(&configured.database.state.buckets),
29 ✔
2807
        "The number of buckets provisioned in the state table head, defaults to {}."
2808
    )
2809
    (
87 ✔
2810
        "table.state.rate",
2811
        setting<uint16_t>(&configured.database.state.rate),
29 ✔
2812
        "The percentage expansion of the state table head, defaults to {}."
2813
    )
2814

2815
    /* table.pool */
2816
    (
87 ✔
2817
        "table.pool.buckets",
2818
        setting<uint32_t>(&configured.database.pool.buckets),
29 ✔
2819
        "The number of buckets in the pool table head, derived from expected and memory, defaults to {} (0 disables)."
2820
    )
2821
    (
87 ✔
2822
        "table.pool.expected",
2823
        setting<uint64_t>(&configured.database.pool.expected),
29 ✔
2824
        "The expected element count of the pool table, defaults to {}."
2825
    )
2826
    (
87 ✔
2827
        "table.pool.size",
2828
        setting<uint64_t>(&configured.database.pool.size),
29 ✔
2829
        "The minimum allocation of the pool table body, defaults to {}."
2830
    )
2831
    (
87 ✔
2832
        "table.pool.rate",
2833
        setting<uint16_t>(&configured.database.pool.rate),
29 ✔
2834
        "The percentage expansion of the pool table body, defaults to {}."
2835
    )
2836

2837
    /* table.spends */
2838
    (
87 ✔
2839
        "table.spends.size",
2840
        setting<uint64_t>(&configured.database.spends.size),
29 ✔
2841
        "The minimum allocation of the spends table body, defaults to {}."
2842
    )
2843
    (
87 ✔
2844
        "table.spends.rate",
2845
        setting<uint16_t>(&configured.database.spends.rate),
29 ✔
2846
        "The percentage expansion of the spends table body, defaults to {}."
2847
    )
2848

2849
    /* table.filter_bk */
2850
    (
87 ✔
2851
        "table.filter_bk.buckets",
2852
        setting<uint32_t>(&configured.database.filter_bk.buckets),
29 ✔
2853
        "The number of buckets in the filter_bk table head, defaults to {} (0 disables)."
2854
    )
2855
    (
87 ✔
2856
        "table.filter_bk.size",
2857
        setting<uint64_t>(&configured.database.filter_bk.size),
29 ✔
2858
        "The minimum allocation of the filter_bk table body, defaults to {}."
2859
    )
2860
    (
87 ✔
2861
        "table.filter_bk.rate",
2862
        setting<uint16_t>(&configured.database.filter_bk.rate),
29 ✔
2863
        "The percentage expansion of the filter_bk table body, defaults to {}."
2864
    )
2865

2866
    /* table.filter_tx */
2867
    (
87 ✔
2868
        "table.filter_tx.buckets",
2869
        setting<uint32_t>(&configured.database.filter_tx.buckets),
29 ✔
2870
        "The number of buckets in the filter_tx table head, defaults to {} (0 disables)."
2871
    )
2872
    (
87 ✔
2873
        "table.filter_tx.size",
2874
        setting<uint64_t>(&configured.database.filter_tx.size),
29 ✔
2875
        "The minimum allocation of the filter_tx table body, defaults to {}."
2876
    )
2877
    (
87 ✔
2878
        "table.filter_tx.rate",
2879
        setting<uint16_t>(&configured.database.filter_tx.rate),
29 ✔
2880
        "The percentage expansion of the filter_tx table body, defaults to {}."
2881
    )
2882

2883
    /* [log] */
2884
#if defined(HAVE_LOGA)
2885
    (
87 ✔
2886
        "log.application",
2887
        setting<bool>(&configured.log.application),
29 ✔
2888
        "Enable application logging, defaults to {}."
2889
    )
2890
#endif
2891
#if defined(HAVE_LOGN)
2892
    (
87 ✔
2893
        "log.news",
2894
        setting<bool>(&configured.log.news),
29 ✔
2895
        "Enable news logging, defaults to {}."
2896
    )
2897
#endif
2898
#if defined(HAVE_LOGS)
2899
    (
87 ✔
2900
        "log.session",
2901
        setting<bool>(&configured.log.session),
29 ✔
2902
        "Enable session logging, defaults to {}."
2903
    )
2904
#endif
2905
#if defined(HAVE_LOGP)
2906
    (
87 ✔
2907
        "log.protocol",
2908
        setting<bool>(&configured.log.protocol),
29 ✔
2909
        "Enable protocol logging, defaults to {}."
2910
    )
2911
#endif
2912
#if defined(HAVE_LOGX)
2913
    (
87 ✔
2914
        "log.proxy",
2915
        setting<bool>(&configured.log.proxy),
29 ✔
2916
        "Enable proxy logging, defaults to {}."
2917
    )
2918
#endif
2919
#if defined(HAVE_LOGR)
2920
    (
87 ✔
2921
        "log.remote",
2922
        setting<bool>(&configured.log.remote),
29 ✔
2923
        "Enable remote fault logging, defaults to {}."
2924
    )
2925
#endif
2926
#if defined(HAVE_LOGF)
2927
    (
87 ✔
2928
        "log.fault",
2929
        setting<bool>(&configured.log.fault),
29 ✔
2930
        "Enable local fault logging, defaults to {}."
2931
    )
2932
#endif
2933
#if defined(HAVE_LOGQ)
2934
    (
87 ✔
2935
        "log.quitting",
2936
        setting<bool>(&configured.log.quitting),
29 ✔
2937
        "Enable quitting logging, defaults to {}."
2938
    )
2939
#endif
2940
#if defined(HAVE_LOGO)
2941
    (
87 ✔
2942
        "log.objects",
2943
        setting<bool>(&configured.log.objects),
29 ✔
2944
        "Enable objects logging, defaults to {}."
2945
    )
2946
#endif
2947
#if defined(HAVE_LOGV)
2948
    (
87 ✔
2949
        "log.verbose",
2950
        setting<bool>(&configured.log.verbose),
29 ✔
2951
        "Enable verbose logging, defaults to {}."
2952
    )
2953
#endif
2954
    (
87 ✔
2955
        "log.console",
2956
        setting<bool>(&configured.log.console),
29 ✔
2957
        "Write the console log to a pair of rotated log files, defaults to {}."
2958
    )
2959
    (
87 ✔
2960
        "log.limit",
2961
        setting<uint32_t>(&configured.log.limit),
29 ✔
2962
        "The maximum byte size of each pair of rotated log files, defaults to {}."
2963
    )
2964
    (
58 ✔
2965
        "log.events",
2966
        setting<bool>(&configured.log.events),
29 ✔
2967
        "Write events to the events log file, defaults to {}."
2968
    );
2969

2970
    return description;
29 ✔
2971
}
×
2972

2973
BC_PUSH_WARNING(NO_ARRAY_TO_POINTER_DECAY)
2974
bool parser::parse(int argc, const char* argv[], std::ostream& error) THROWS
31 ✔
2975
BC_POP_WARNING()
2976
{
2977
    try
2978
    {
2979
        auto file = false;
2980
        load_command_variables(argc, argv);
31 ✔
2981
        ////load_environment_variables(environment_prefix);
2982

2983
        // Don't load config file if help is specified.
2984
        if (!get_option(help_variable))
29 ✔
2985
        {
2986
            // Returns true if the settings were loaded from a file.
2987
            file = load_configuration_variables(config_variable);
29 ✔
2988
        }
2989

2990
        // Update bound variables in metadata.settings.
2991
        notify(variables_);
29 ✔
2992
        select_network();
29 ✔
2993
        select_root();
29 ✔
2994
        select_paths();
29 ✔
2995
        derive_buckets();
29 ✔
2996

2997
        // Clear the config file path if it wasn't used.
2998
        if (!file)
29 ✔
2999
            configured.file = {};
7 ✔
3000
    }
3001
    catch (const option_exception& e)
2 ✔
3002
    {
3003
        error << format_invalid_parameter(e.what()) << std::endl;
2 ✔
3004
        return false;
3005
    }
2 ✔
3006

3007
    return true;
3008
}
3009

3010
} // namespace server
3011
} // 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