aboutsummaryrefslogtreecommitdiff
path: root/src/node/chainstatemanager_args.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/node/chainstatemanager_args.cpp')
-rw-r--r--src/node/chainstatemanager_args.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/node/chainstatemanager_args.cpp b/src/node/chainstatemanager_args.cpp
index 811d812e9f..4716be46b5 100644
--- a/src/node/chainstatemanager_args.cpp
+++ b/src/node/chainstatemanager_args.cpp
@@ -4,16 +4,32 @@
#include <node/chainstatemanager_args.h>
+#include <arith_uint256.h>
+#include <tinyformat.h>
+#include <uint256.h>
+#include <util/strencodings.h>
#include <util/system.h>
+#include <util/translation.h>
+#include <validation.h>
#include <chrono>
#include <optional>
+#include <string>
namespace node {
-void ApplyArgsManOptions(const ArgsManager& args, ChainstateManager::Options& opts)
+std::optional<bilingual_str> ApplyArgsManOptions(const ArgsManager& args, ChainstateManager::Options& opts)
{
+ if (auto value{args.GetArg("-minimumchainwork")}) {
+ if (!IsHexNumber(*value)) {
+ return strprintf(Untranslated("Invalid non-hex (%s) minimum chain work value specified"), *value);
+ }
+ opts.minimum_chain_work = UintToArith256(uint256S(*value));
+ }
+
if (auto value{args.GetArg("-assumevalid")}) opts.assumed_valid_block = uint256S(*value);
if (auto value{args.GetIntArg("-maxtipage")}) opts.max_tip_age = std::chrono::seconds{*value};
+
+ return std::nullopt;
}
} // namespace node