diff --git a/src/rpc/rpcquorums.cpp b/src/rpc/rpcquorums.cpp index f0b0c5e57c4c..a0cef9bfa78e 100644 --- a/src/rpc/rpcquorums.cpp +++ b/src/rpc/rpcquorums.cpp @@ -649,26 +649,27 @@ static UniValue quorum_getdata(const JSONRPCRequest& request) }); } -static void quorum_getrotationinfo_help() +static void quorum_rotationinfo_help() { throw std::runtime_error( RPCHelpMan{ "quorum rotationinfo", "Get quorum rotation information\n", - {{"blockRequestHash", RPCArg::Type::STR_HEX, RPCArg::Optional::NO, "The blockHash of the request."}, - {"baseBlockHashesNb", RPCArg::Type::NUM, RPCArg::Optional::NO, - "Number of baseBlockHashes"}, - {"extraShare", RPCArg::Type::BOOL, RPCArg::Optional::NO, "Extra share"}}, + { + {"blockRequestHash", RPCArg::Type::STR_HEX, RPCArg::Optional::NO, "The blockHash of the request"}, + {"extraShare", RPCArg::Type::BOOL, /* default */ "false", "Extra share"}, + {"baseBlockHash...", RPCArg::Type::STR_HEX, /* default*/ "", "baseBlockHashes"}, + }, RPCResults{}, RPCExamples{""}, } - .ToString()); + .ToString()); } -static UniValue quorum_getrotationdata(const JSONRPCRequest& request) +static UniValue quorum_rotationinfo(const JSONRPCRequest& request) { if (request.fHelp || (request.params.size() < 2)) { - quorum_getrotationinfo_help(); + quorum_rotationinfo_help(); } llmq::CGetQuorumRotationInfo cmd; @@ -676,15 +677,12 @@ static UniValue quorum_getrotationdata(const JSONRPCRequest& request) std::string strError; cmd.blockRequestHash = ParseHashV(request.params[1], "blockRequestHash"); - size_t baseBlockHashesNb = static_cast(ParseInt32V(request.params[2], "baseBlockHashesNb")); - cmd.extraShare = ParseBoolV(request.params[3], "extraShare"); - - /*if (request.params.size() - 2 != cmd.baseBlockHashesNb) { - quorum_getrotationinfo_help(); - }*/ + cmd.extraShare = request.params[2].isNull() ? false : ParseBoolV(request.params[2], "extraShare"); - for (auto i = 0; i < baseBlockHashesNb; i++) { - cmd.baseBlockHashes.push_back(ParseHashV(request.params[3 + i], "quorumHash")); + size_t idx = 3; + while (!request.params[idx].isNull()) { + cmd.baseBlockHashes.emplace_back(ParseHashV(request.params[idx], "baseBlockHash")); + ++idx; } LOCK(cs_main); if (!BuildQuorumRotationInfo(cmd, quorumRotationInfoRet, strError)) { @@ -755,7 +753,7 @@ static UniValue _quorum(const JSONRPCRequest& request) } else if (command == "getdata") { return quorum_getdata(request); } else if (command == "rotationinfo") { - return quorum_getrotationdata(request); + return quorum_rotationinfo(request); } else { quorum_help(); } diff --git a/test/functional/test_framework/test_framework.py b/test/functional/test_framework/test_framework.py index c7c53ae4875b..bf0091d8c985 100755 --- a/test/functional/test_framework/test_framework.py +++ b/test/functional/test_framework/test_framework.py @@ -1463,7 +1463,7 @@ def mine_cycle_quorum(self, llmq_type_name="llmq_test_dip0024", llmq_type=103, best_block_hash = self.nodes[0].getbestblockhash() block_height = self.nodes[0].getblockcount() - quorum_rotation_info = self.nodes[0].quorum("rotationinfo", best_block_hash, 0, False) + quorum_rotation_info = self.nodes[0].quorum("rotationinfo", best_block_hash) self.log.info("h("+str(block_height)+"):"+str(quorum_rotation_info)) return (quorum_info_0, quorum_info_1)