Skip to content

Commit 3aef5e4

Browse files
committed
Merge a47f465 into merged_master (Elements PR ElementsProject#1209)
2 parents 400c502 + a47f465 commit 3aef5e4

File tree

4 files changed

+17
-5
lines changed

4 files changed

+17
-5
lines changed

src/chainparams.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -862,6 +862,7 @@ class CCustomParams : public CRegTestParams {
862862

863863
const CScript default_script(CScript() << OP_TRUE);
864864
consensus.fedpegScript = StrHexToScriptWithDefault(args.GetArg("-fedpegscript", ""), default_script);
865+
consensus.start_p2wsh_script = args.GetArg("-con_start_p2wsh_script", consensus.start_p2wsh_script);
865866

866867
// Calculate pegged Bitcoin asset
867868
std::vector<unsigned char> commit = CommitToArguments(consensus, strNetworkID);
@@ -1460,6 +1461,7 @@ class CLiquidV1TestParams : public CLiquidV1Params {
14601461
if (args.IsArgSet("-fedpegscript")) {
14611462
consensus.fedpegScript = StrHexToScriptWithDefault(args.GetArg("-fedpegscript", ""), CScript());
14621463
}
1464+
consensus.start_p2wsh_script = args.GetArg("-con_start_p2wsh_script", consensus.start_p2wsh_script);
14631465

14641466
consensus.total_valid_epochs = args.GetArg("-total_valid_epochs", consensus.total_valid_epochs);
14651467

src/chainparamsbase.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ void SetupChainParamsBaseOptions(ArgsManager& argsman)
6060
argsman.AddArg("-dynamic_epoch_length", "Per-chain parameter that sets how many blocks dynamic federation voting and enforcement are in effect for.", ArgsManager::ALLOW_ANY, OptionsCategory::ELEMENTS);
6161
argsman.AddArg("-total_valid_epochs", "Per-chain parameter that sets how long a particular fedpegscript is in effect for.", ArgsManager::ALLOW_ANY, OptionsCategory::ELEMENTS);
6262
argsman.AddArg("-evbparams=deployment:start:end:period:threshold", "Use given start/end times for specified version bits deployment (regtest or custom only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::ELEMENTS);
63+
argsman.AddArg("-con_start_p2wsh_script", "Create p2wsh addresses when starting in dynafed mode (regtest or custom only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::ELEMENTS);
6364
// END ELEMENTS
6465
//
6566
}

src/consensus/params.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ struct Params {
173173
// default 1 to not break legacy chains implicitly.
174174
size_t total_valid_epochs = 1;
175175
bool elements_mode = false;
176+
bool start_p2wsh_script = false;
176177
};
177178

178179
} // namespace Consensus

src/dynafed.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ DynaFedParamEntry ComputeNextBlockFullCurrentParameters(const CBlockIndex* pinde
5252
epoch_start_height -= epoch_length;
5353
}
5454

55+
if (consensus.genesis_style == "elements" && epoch_start_height == 0 && next_height > 1 && consensus.vDeployments[Consensus::DEPLOYMENT_DYNA_FED].nStartTime == Consensus::BIP9Deployment::ALWAYS_ACTIVE) {
56+
// when starting in dynafed mode, the full parameters are stored in block 1 instead of 0
57+
epoch_start_height = 1;
58+
}
5559
// We need to put in place the previous epoch's current which
5660
// may be pre-dynafed params
5761
const CBlockIndex* p_epoch_start = pindexPrev->GetAncestor(epoch_start_height);
@@ -69,11 +73,15 @@ DynaFedParamEntry ComputeNextBlockFullCurrentParameters(const CBlockIndex* pinde
6973
uint256 fedpegscript_redeemscript;
7074
CSHA256().Write(consensus.fedpegScript.data(), consensus.fedpegScript.size()).Finalize(fedpegscript_redeemscript.begin());
7175
CScript fedpeg_p2sw = CScript() << OP_0 << ToByteVector(fedpegscript_redeemscript);
72-
uint160 fedpeg_p2sh(Hash160(fedpeg_p2sw));
73-
CScript sh_wsh_fedpeg_program = CScript() << OP_HASH160 << ToByteVector(fedpeg_p2sh) << OP_EQUAL;
74-
75-
// Put them in winning proposal
76-
winning_proposal = DynaFedParamEntry(p2wsh_signblock_script, consensus.max_block_signature_size, sh_wsh_fedpeg_program, consensus.fedpegScript, consensus.first_extension_space);
76+
if (consensus.start_p2wsh_script) {
77+
winning_proposal = DynaFedParamEntry(p2wsh_signblock_script, consensus.max_block_signature_size, fedpeg_p2sw, consensus.fedpegScript, consensus.first_extension_space);
78+
} else {
79+
uint160 fedpeg_p2sh(Hash160(fedpeg_p2sw));
80+
CScript sh_wsh_fedpeg_program = CScript() << OP_HASH160 << ToByteVector(fedpeg_p2sh) << OP_EQUAL;
81+
82+
// Put them in winning proposal
83+
winning_proposal = DynaFedParamEntry(p2wsh_signblock_script, consensus.max_block_signature_size, sh_wsh_fedpeg_program, consensus.fedpegScript, consensus.first_extension_space);
84+
}
7785
} else {
7886
winning_proposal = p_epoch_start->dynafed_params().m_current;
7987
}

0 commit comments

Comments
 (0)