diff --git a/src/init.cpp b/src/init.cpp index 0743dc6..e1e8e88 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -537,7 +537,7 @@ void SetupServerArgs(ArgsManager& argsman) argsman.AddArg("-blockmaxweight=", strprintf("Set maximum BIP141 block weight (default: %d)", DEFAULT_BLOCK_MAX_WEIGHT), ArgsManager::ALLOW_ANY, OptionsCategory::BLOCK_CREATION); argsman.AddArg("-blockmintxfee=", strprintf("Set lowest fee rate (in %s/kvB) for transactions to be included in block creation. (default: %s)", CURRENCY_UNIT, FormatMoney(DEFAULT_BLOCK_MIN_TX_FEE)), ArgsManager::ALLOW_ANY, OptionsCategory::BLOCK_CREATION); - argsman.AddArg("-blockversion=", "Override block version to test forking scenarios", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::BLOCK_CREATION); + argsman.AddArg("-blockversion=", "Override block version bits to test forking scenarios; mining algorithm bits are set by the selected PoW algorithm", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::BLOCK_CREATION); argsman.AddArg("-rest", strprintf("Accept public REST requests (default: %u)", DEFAULT_REST_ENABLE), ArgsManager::ALLOW_ANY, OptionsCategory::RPC); argsman.AddArg("-rpcallowip=", "Allow JSON-RPC connections from specified source. Valid for are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified multiple times", ArgsManager::ALLOW_ANY, OptionsCategory::RPC); diff --git a/test/functional/mining_basic.py b/test/functional/mining_basic.py index 87ba656..9dc71ad 100755 --- a/test/functional/mining_basic.py +++ b/test/functional/mining_basic.py @@ -70,7 +70,8 @@ class MiningTest(DigiByteTestFramework): block_version = 255 | VERSIONBITS_TOP_BITS self.restart_node(0, extra_args=[f'-mocktime={t}', '-blockversion={}'.format(block_version)]) self.connect_nodes(0, 1) - assert_equal(block_version, self.nodes[0].getblocktemplate(NORMAL_GBT_REQUEST_PARAMS)['version']) + expected_block_version = (block_version & ~(15 << 8)) | (2 << 8) + assert_equal(expected_block_version, self.nodes[0].getblocktemplate(NORMAL_GBT_REQUEST_PARAMS)['version']) self.restart_node(0, extra_args=[f'-mocktime={t}']) self.connect_nodes(0, 1) assert_equal(671089154, self.nodes[0].getblocktemplate(NORMAL_GBT_REQUEST_PARAMS)['version']) diff --git a/test/functional/mining_randomx_gbt.py b/test/functional/mining_randomx_gbt.py index 00de44d..cf27f5a 100755 --- a/test/functional/mining_randomx_gbt.py +++ b/test/functional/mining_randomx_gbt.py @@ -69,6 +69,18 @@ class RandomXGetBlockTemplateTest(DigiByteTestFramework): "invalid", ) + self.log.info("Mining algorithm bits override -blockversion algo bits") + block_version = 0x200000ff + self.restart_node(0, extra_args=[f"-blockversion={block_version}"]) + node = self.nodes[0] + + sha_template = node.getblocktemplate(NORMAL_GBT_REQUEST_PARAMS) + expected_sha_version = ( + (block_version & ~BLOCK_VERSION_ALGO) | + BLOCK_VERSION_SHA256D + ) + assert_equal(sha_template["version"], expected_sha_version) + self.log.info("Activate RandomX at block 1 on regtest only") self.restart_node(0, extra_args=["-testactivationheight=randomx@1"]) node = self.nodes[0]