mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-13 12:33:42 +02:00
Merge pull request #1231 from andreabonel/fix_dynamic_parameters_root_in_getblockheader
Fix dynamic parameters root in getblockheader
This commit is contained in:
commit
1443d302ae
2 changed files with 11 additions and 3 deletions
|
|
@ -154,17 +154,17 @@ UniValue paramEntryToJSON(const DynaFedParamEntry& entry)
|
|||
}
|
||||
|
||||
// fields all params have
|
||||
result.pushKV("root", HexStr(entry.CalculateRoot()));
|
||||
result.pushKV("root", entry.CalculateRoot().GetHex());
|
||||
result.pushKV("signblockscript", HexStr(entry.m_signblockscript));
|
||||
result.pushKV("max_block_witness", (uint64_t)entry.m_signblock_witness_limit);
|
||||
|
||||
// add the extra root which is stored for compact and calculated for full
|
||||
if (entry.m_serialize_type == 1) {
|
||||
// compact
|
||||
result.pushKV("extra_root", HexStr(entry.m_elided_root));
|
||||
result.pushKV("extra_root", entry.m_elided_root.GetHex());
|
||||
} else if (entry.m_serialize_type == 2) {
|
||||
// full
|
||||
result.pushKV("extra_root", HexStr(entry.CalculateExtraRoot()));
|
||||
result.pushKV("extra_root", entry.CalculateExtraRoot().GetHex());
|
||||
}
|
||||
|
||||
// some extra fields only present on full params
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ initial_offline = "03808355deeb0555203b53df7ef8f36edaf66ab0207ca1b11968a7ac42155
|
|||
initial_extension = [initial_online+initial_online]
|
||||
new_extension = [initial_offline+initial_online]
|
||||
|
||||
initial_cpe_root = "3700bdb2975ff8e0dadaaba2b33857b0ca2610c950a92b1db725025e3647a8e1"
|
||||
|
||||
ERR_MP_INVALID_PEGOUT = "invalid-pegout-proof"
|
||||
ERR_MP_INVALID_PEGIN = "pegin-no-witness"
|
||||
|
||||
|
|
@ -48,16 +50,19 @@ def validate_no_vote_op_true(node, block, first_dynafed_active_block):
|
|||
assert_equal(dynamic_parameters["current"]["signblockscript"], WSH_OP_TRUE)
|
||||
if block_height % 10 == 0 or first_dynafed_active_block:
|
||||
assert_equal(dynamic_parameters["current"]["type"], "full")
|
||||
assert_equal(dynamic_parameters["current"]["root"], initial_cpe_root)
|
||||
assert_equal(dynamic_parameters["current"]["fedpegscript"], "51")
|
||||
assert_equal(dynamic_parameters["current"]["extension_space"], initial_extension)
|
||||
else:
|
||||
assert_equal(dynamic_parameters["current"]["type"], "compact")
|
||||
assert_equal(dynamic_parameters["current"]["root"], initial_cpe_root)
|
||||
assert not "fedpegscript" in dynamic_parameters["proposed"]
|
||||
assert not "extension_space" in dynamic_parameters["proposed"]
|
||||
assert_equal(dynamic_parameters["current"]["max_block_witness"], 74)
|
||||
# nothing was proposed, null fields make impossible to be valid blockheader
|
||||
# due to script rules requiring bool true on stack
|
||||
assert_equal(dynamic_parameters["proposed"]["type"], "null")
|
||||
assert not "root" in dynamic_parameters["proposed"]
|
||||
assert not "signblockscript" in dynamic_parameters["proposed"]
|
||||
assert not "max_block_witness" in dynamic_parameters["proposed"]
|
||||
assert not "fedpegscript" in dynamic_parameters["proposed"]
|
||||
|
|
@ -134,6 +139,9 @@ class DynaFedTest(BitcoinTestFramework):
|
|||
self.sync_blocks(timeout=240)
|
||||
assert_equal(self.nodes[0].getblockchaininfo()["softforks"]["dynafed"]["bip9"]["status"], "active")
|
||||
|
||||
# Check the root hash
|
||||
assert_equal(self.nodes[0].getblockchaininfo()["current_params_root"], initial_cpe_root)
|
||||
|
||||
# Existing blocks should have null dynafed fields
|
||||
for block in blocks:
|
||||
assert "dynamic_parameters" not in self.nodes[0].getblock(block)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue