Skip to content

Commit 1443d30

Browse files
authored
Merge pull request #1231 from andreabonel/fix_dynamic_parameters_root_in_getblockheader
Fix dynamic parameters root in getblockheader
2 parents 6b826d5 + d856ef2 commit 1443d30

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

src/rpc/blockchain.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -154,17 +154,17 @@ UniValue paramEntryToJSON(const DynaFedParamEntry& entry)
154154
}
155155

156156
// fields all params have
157-
result.pushKV("root", HexStr(entry.CalculateRoot()));
157+
result.pushKV("root", entry.CalculateRoot().GetHex());
158158
result.pushKV("signblockscript", HexStr(entry.m_signblockscript));
159159
result.pushKV("max_block_witness", (uint64_t)entry.m_signblock_witness_limit);
160160

161161
// add the extra root which is stored for compact and calculated for full
162162
if (entry.m_serialize_type == 1) {
163163
// compact
164-
result.pushKV("extra_root", HexStr(entry.m_elided_root));
164+
result.pushKV("extra_root", entry.m_elided_root.GetHex());
165165
} else if (entry.m_serialize_type == 2) {
166166
// full
167-
result.pushKV("extra_root", HexStr(entry.CalculateExtraRoot()));
167+
result.pushKV("extra_root", entry.CalculateExtraRoot().GetHex());
168168
}
169169

170170
// some extra fields only present on full params

test/functional/feature_dynafed.py

+8
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
initial_extension = [initial_online+initial_online]
3030
new_extension = [initial_offline+initial_online]
3131

32+
initial_cpe_root = "3700bdb2975ff8e0dadaaba2b33857b0ca2610c950a92b1db725025e3647a8e1"
33+
3234
ERR_MP_INVALID_PEGOUT = "invalid-pegout-proof"
3335
ERR_MP_INVALID_PEGIN = "pegin-no-witness"
3436

@@ -48,16 +50,19 @@ def validate_no_vote_op_true(node, block, first_dynafed_active_block):
4850
assert_equal(dynamic_parameters["current"]["signblockscript"], WSH_OP_TRUE)
4951
if block_height % 10 == 0 or first_dynafed_active_block:
5052
assert_equal(dynamic_parameters["current"]["type"], "full")
53+
assert_equal(dynamic_parameters["current"]["root"], initial_cpe_root)
5154
assert_equal(dynamic_parameters["current"]["fedpegscript"], "51")
5255
assert_equal(dynamic_parameters["current"]["extension_space"], initial_extension)
5356
else:
5457
assert_equal(dynamic_parameters["current"]["type"], "compact")
58+
assert_equal(dynamic_parameters["current"]["root"], initial_cpe_root)
5559
assert not "fedpegscript" in dynamic_parameters["proposed"]
5660
assert not "extension_space" in dynamic_parameters["proposed"]
5761
assert_equal(dynamic_parameters["current"]["max_block_witness"], 74)
5862
# nothing was proposed, null fields make impossible to be valid blockheader
5963
# due to script rules requiring bool true on stack
6064
assert_equal(dynamic_parameters["proposed"]["type"], "null")
65+
assert not "root" in dynamic_parameters["proposed"]
6166
assert not "signblockscript" in dynamic_parameters["proposed"]
6267
assert not "max_block_witness" in dynamic_parameters["proposed"]
6368
assert not "fedpegscript" in dynamic_parameters["proposed"]
@@ -134,6 +139,9 @@ def test_dynafed_activation(self):
134139
self.sync_blocks(timeout=240)
135140
assert_equal(self.nodes[0].getblockchaininfo()["softforks"]["dynafed"]["bip9"]["status"], "active")
136141

142+
# Check the root hash
143+
assert_equal(self.nodes[0].getblockchaininfo()["current_params_root"], initial_cpe_root)
144+
137145
# Existing blocks should have null dynafed fields
138146
for block in blocks:
139147
assert "dynamic_parameters" not in self.nodes[0].getblock(block)

0 commit comments

Comments
 (0)