From fd5ec4bff683ea5d06ec41a8ea74cf7e5c087a89 Mon Sep 17 00:00:00 2001 From: Gregory Sanders Date: Fri, 8 Nov 2019 09:27:12 -0500 Subject: [PATCH] HF: Simplify legacy->dynafed transition max sig size --- src/chainparams.cpp | 3 ++- src/dynafed.cpp | 2 +- test/functional/feature_blocksign.py | 2 +- test/functional/feature_dynafed.py | 7 +++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 5e24eb8357..e47aa1cbbc 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -720,7 +720,8 @@ public: // Block signing encumberance script, default of 51 aka OP_TRUE std::vector sign_bytes = ParseHex("5b21026a2a106ec32c8a1e8052e5d02a7b0a150423dbd9b116fc48d46630ff6e6a05b92102791646a8b49c2740352b4495c118d876347bf47d0551c01c4332fdc2df526f1a2102888bda53a424466b0451627df22090143bbf7c060e9eacb1e38426f6b07f2ae12102aee8967150dee220f613de3b239320355a498808084a93eaf39a34dcd62024852102d46e9259d0a0bb2bcbc461a3e68f34adca27b8d08fbe985853992b4b104e27412102e9944e35e5750ab621e098145b8e6cf373c273b7c04747d1aa020be0af40ccd62102f9a9d4b10a6d6c56d8c955c547330c589bb45e774551d46d415e51cd9ad5116321033b421566c124dfde4db9defe4084b7aa4e7f36744758d92806b8f72c2e943309210353dcc6b4cf6ad28aceb7f7b2db92a4bf07ac42d357adf756f3eca790664314b621037f55980af0455e4fb55aad9b85a55068bb6dc4740ea87276dc693f4598db45fa210384001daa88dabd23db878dbb1ce5b4c2a5fa72c3113e3514bf602325d0c37b8e21039056d089f2fe72dbc0a14780b4635b0dc8a1b40b7a59106325dd1bc45cc70493210397ab8ea7b0bf85bc7fc56bb27bf85e75502e94e76a6781c409f3f2ec3d1122192103b00e3b5b77884bf3cae204c4b4eac003601da75f96982ffcb3dcb29c5ee419b92103c1f3c0874cfe34b8131af34699589aacec4093399739ae352e8a46f80a6f68375fae"); consensus.signblockscript = CScript(sign_bytes.begin(), sign_bytes.end()); - consensus.max_block_signature_size = 12*74; // 11 signatures plus wiggle room + // 11 signatures, 15 pubkeys, plus wiggle room + consensus.max_block_signature_size = 12*74+16*33; g_signed_blocks = true; g_con_blockheightinheader = true; diff --git a/src/dynafed.cpp b/src/dynafed.cpp index bbea45d241..869bbfcfbb 100644 --- a/src/dynafed.cpp +++ b/src/dynafed.cpp @@ -73,7 +73,7 @@ DynaFedParamEntry ComputeNextBlockFullCurrentParameters(const CBlockIndex* pinde CScript sh_wsh_fedpeg_program = CScript() << OP_HASH160 << ToByteVector(fedpeg_p2sh) << OP_EQUAL; // Put them in winning proposal - winning_proposal = DynaFedParamEntry(p2wsh_signblock_script, consensus.max_block_signature_size+consensus.signblockscript.size(), sh_wsh_fedpeg_program, consensus.fedpegScript, consensus.first_extension_space); + winning_proposal = DynaFedParamEntry(p2wsh_signblock_script, consensus.max_block_signature_size, sh_wsh_fedpeg_program, consensus.fedpegScript, consensus.first_extension_space); } else { winning_proposal = p_epoch_start->dynafed_params.m_current; } diff --git a/test/functional/feature_blocksign.py b/test/functional/feature_blocksign.py index 346dca5d8d..7347195d64 100755 --- a/test/functional/feature_blocksign.py +++ b/test/functional/feature_blocksign.py @@ -84,7 +84,7 @@ class BlockSignTest(BitcoinTestFramework): self.witnessScript = signblockscript # post-dynafed this becomes witnessScript self.extra_args = [[ "-signblockscript={}".format(signblockscript), - "-con_max_block_sig_size={}".format(self.required_signers*74), + "-con_max_block_sig_size={}".format(self.required_signers*74+self.num_nodes*33), "-anyonecanspendaremine=1", "-con_dyna_deploy_start=0", ]] * self.num_nodes diff --git a/test/functional/feature_dynafed.py b/test/functional/feature_dynafed.py index 590fd8884c..ea03310e5f 100755 --- a/test/functional/feature_dynafed.py +++ b/test/functional/feature_dynafed.py @@ -50,8 +50,7 @@ def validate_no_vote_op_true(node, block, first_dynafed_active_block): else: assert_equal(dynamic_parameters["current"]["fedpegscript"], "") assert_equal(dynamic_parameters["current"]["extension_space"], []) - # TODO workshop this bump, or commit to new value in chainparams instead - assert_equal(dynamic_parameters["current"]["max_block_witness"], 75) + 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"]["signblockscript"], "") @@ -193,7 +192,7 @@ class DynaFedTest(BitcoinTestFramework): chain_info = self.nodes[i].getblockchaininfo() fedpeg_info = self.nodes[i].getsidechaininfo() assert_equal(chain_info["current_signblock_hex"], WSH_OP_TRUE) - assert_equal(chain_info["max_block_witness"], 75) + assert_equal(chain_info["max_block_witness"], 74) assert_equal(chain_info["extension_space"], initial_extension) assert_equal(fedpeg_info["current_fedpegscripts"], ["51", "51"]) @@ -211,7 +210,7 @@ class DynaFedTest(BitcoinTestFramework): chain_info = self.nodes[i].getblockchaininfo() fedpeg_info = self.nodes[i].getsidechaininfo() assert_equal(chain_info["current_signblock_hex"], WSH_OP_TRUE) - assert_equal(chain_info["max_block_witness"], 75) + assert_equal(chain_info["max_block_witness"], 74) assert_equal(chain_info["extension_space"], initial_extension) assert_equal(fedpeg_info["current_fedpegscripts"], ["51", "51"])