diff --git a/src/chainparams.cpp b/src/chainparams.cpp index ade7c3564d..b14183f7c8 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -482,6 +482,8 @@ class CCustomParams : public CRegTestParams { consensus.nMinimumChainWork = uint256S(args.GetArg("-con_nminimumchainwork", "0x0")); consensus.defaultAssumeValid = uint256S(args.GetArg("-con_defaultassumevalid", "0x00")); + // TODO: Embed in genesis block in nTime field with new genesis block type + consensus.dynamic_epoch_length = args.GetArg("-dynamic_epoch_length", 10); // TODO: pass in serialized vector of byte vectors, parse into extension space // Junk keys for testing consensus.first_extension_space = {ParseHex("02fcba7ecf41bc7e1be4ee122d9d22e3333671eb0a3a87b5cdf099d59874e1940f02fcba7ecf41bc7e1be4ee122d9d22e3333671eb0a3a87b5cdf099d59874e1940f")}; diff --git a/src/chainparamsbase.cpp b/src/chainparamsbase.cpp index 21497ac30c..4fcae23d6a 100644 --- a/src/chainparamsbase.cpp +++ b/src/chainparamsbase.cpp @@ -47,6 +47,7 @@ void SetupChainParamsBaseOptions() gArgs.AddArg("-pak", "Entries in the PAK list. Order of entries matter.", false, OptionsCategory::ELEMENTS); gArgs.AddArg("-multi_data_permitted", "Allow relay of multiple OP_RETURN outputs. (default: -enforce_pak)", false, OptionsCategory::ELEMENTS); gArgs.AddArg("-con_csv_deploy_start", "Starting height for CSV deployment. (default: -1, which means ACTIVE from genesis)", false, OptionsCategory::ELEMENTS); + gArgs.AddArg("-dynamic_epoch_length", "Per-chain parameter that sets how many blocks dynamic federation voting and enforcement are in effect for.", false, OptionsCategory::ELEMENTS); // END ELEMENTS // } diff --git a/src/consensus/params.h b/src/consensus/params.h index 9c1aea3ac0..d2546c1b01 100644 --- a/src/consensus/params.h +++ b/src/consensus/params.h @@ -100,6 +100,9 @@ struct Params { CScript signblockscript; uint32_t max_block_signature_size; // g_signed_blocks - Whether blocks are signed or not, get around circular dep + // Set positive to avoid division by 0 + // for non-dynafed chains and unit tests + uint32_t dynamic_epoch_length = std::numeric_limits::max(); // Used to seed the extension space for first dynamic blocks std::vector> first_extension_space; };