From d8434da3c14ed6723d86ef2cd266008d366e1413 Mon Sep 17 00:00:00 2001 From: benthecarman Date: Mon, 10 Apr 2023 20:56:45 -0500 Subject: [PATCH] Allow configuring target block time for a signet --- src/chainparams.cpp | 9 +++++++++ src/chainparamsbase.cpp | 1 + src/kernel/chainparams.cpp | 2 +- src/kernel/chainparams.h | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 6f48ee41b3..42dcca224a 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -27,6 +27,15 @@ void ReadSigNetArgs(const ArgsManager& args, CChainParams::SigNetOptions& option } options.challenge.emplace(ParseHex(signet_challenge[0])); } + if (const auto signetblocktime{args.GetIntArg("-signetblocktime")}) { + if (!args.IsArgSet("-signetchallenge")) { + throw std::runtime_error("-signetblocktime cannot be set without -signetchallenge"); + } + if (*signetblocktime <= 0) { + throw std::runtime_error("-signetblocktime must be greater than 0"); + } + options.pow_target_spacing = *signetblocktime; + } } void ReadRegTestArgs(const ArgsManager& args, CChainParams::RegTestOptions& options) diff --git a/src/chainparamsbase.cpp b/src/chainparamsbase.cpp index 71978081ce..f8a1cc4186 100644 --- a/src/chainparamsbase.cpp +++ b/src/chainparamsbase.cpp @@ -25,6 +25,7 @@ void SetupChainParamsBaseOptions(ArgsManager& argsman) argsman.AddArg("-vbparams=deployment:start:end[:min_activation_height]", "Use given start/end times and min_activation_height for specified version bits deployment (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS); argsman.AddArg("-signet", "Use the signet chain. Equivalent to -chain=signet. Note that the network is defined by the -signetchallenge parameter", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS); argsman.AddArg("-signetchallenge", "Blocks must satisfy the given script to be considered valid (only for signet networks; defaults to the global default signet test network challenge)", ArgsManager::ALLOW_ANY | ArgsManager::DISALLOW_NEGATION, OptionsCategory::CHAINPARAMS); + argsman.AddArg("-signetblocktime", "Difficulty adjustment will target a block time of the given amount in seconds (only for custom signet networks, must have -signetchallenge set; defaults to 10 minutes)", ArgsManager::ALLOW_ANY | ArgsManager::DISALLOW_NEGATION, OptionsCategory::CHAINPARAMS); argsman.AddArg("-signetseednode", "Specify a seed node for the signet network, in the hostname[:port] format, e.g. sig.net:1234 (may be used multiple times to specify multiple seed nodes; defaults to the global default signet test network seed node(s))", ArgsManager::ALLOW_ANY | ArgsManager::DISALLOW_NEGATION, OptionsCategory::CHAINPARAMS); } diff --git a/src/kernel/chainparams.cpp b/src/kernel/chainparams.cpp index e0c4aff6f4..175588c10d 100644 --- a/src/kernel/chainparams.cpp +++ b/src/kernel/chainparams.cpp @@ -339,7 +339,7 @@ public: consensus.CSVHeight = 1; consensus.SegwitHeight = 1; consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks - consensus.nPowTargetSpacing = 10 * 60; + consensus.nPowTargetSpacing = options.pow_target_spacing; consensus.fPowAllowMinDifficultyBlocks = false; consensus.fPowNoRetargeting = false; consensus.nRuleChangeActivationThreshold = 1815; // 90% of 2016 diff --git a/src/kernel/chainparams.h b/src/kernel/chainparams.h index 32fe618dbd..d6f91c0fc0 100644 --- a/src/kernel/chainparams.h +++ b/src/kernel/chainparams.h @@ -135,6 +135,7 @@ public: struct SigNetOptions { std::optional> challenge{}; std::optional> seeds{}; + int64_t pow_target_spacing{10 * 60}; }; /**