Skip to content

Commit 18fff7e

Browse files
committed
rpc: switch to taking an integer for rate in quorum dkgsimerror
This is required in order to backport bitcoin#23156, which gets rid of `ParseDouble` (used by `ParseDoubleV`), which is last used by `quorum dkgsimerror`.
1 parent 8598a3f commit 18fff7e

File tree

4 files changed

+17
-21
lines changed

4 files changed

+17
-21
lines changed

doc/release-notes-6297.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
RPC changes
2+
-----------
3+
4+
- `quorum dkgsimerror` will no longer accept a decimal value between 0 and 1 for the `rate` argument, it will now
5+
expect an integer between 0 to 100.

src/rpc/quorums.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -750,24 +750,24 @@ static RPCHelpMan quorum_dkgsimerror()
750750
"as you will get yourself very likely PoSe banned for this.\n",
751751
{
752752
{"type", RPCArg::Type::STR, RPCArg::Optional::NO, "Error type."},
753-
{"rate", RPCArg::Type::NUM, RPCArg::Optional::NO, "Rate at which to simulate this error type."},
753+
{"rate", RPCArg::Type::NUM, RPCArg::Optional::NO, "Rate at which to simulate this error type (between 0 and 100)."},
754754
},
755755
RPCResults{},
756756
RPCExamples{""},
757757
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
758758
{
759759
std::string type_str = request.params[0].get_str();
760-
double rate = ParseDoubleV(request.params[1], "rate");
760+
int32_t rate = ParseInt32V(request.params[1], "rate");
761761

762-
if (rate < 0 || rate > 1) {
763-
throw JSONRPCError(RPC_INVALID_PARAMETER, "invalid rate. Must be between 0 and 1");
762+
if (rate < 0 || rate > 100) {
763+
throw JSONRPCError(RPC_INVALID_PARAMETER, "invalid rate. Must be between 0 and 100");
764764
}
765765

766766
if (const llmq::DKGError::type type = llmq::DKGError::from_string(type_str);
767767
type == llmq::DKGError::type::_COUNT) {
768768
throw JSONRPCError(RPC_INVALID_PARAMETER, "invalid type. See DKGError class implementation");
769769
} else {
770-
llmq::SetSimulatedDKGErrorRate(type, rate);
770+
llmq::SetSimulatedDKGErrorRate(type, static_cast<double>(rate) / 100);
771771
return UniValue();
772772
}
773773
},

src/rpc/util.cpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -139,15 +139,6 @@ int64_t ParseInt64V(const UniValue& v, const std::string &strName)
139139
return num;
140140
}
141141

142-
double ParseDoubleV(const UniValue& v, const std::string &strName)
143-
{
144-
std::string strNum = v.getValStr();
145-
double num;
146-
if (!ParseDouble(strNum, &num))
147-
throw JSONRPCError(RPC_INVALID_PARAMETER, strName+" must be a be number (not '"+strNum+"')");
148-
return num;
149-
}
150-
151142
bool ParseBoolV(const UniValue& v, const std::string &strName)
152143
{
153144
std::string strBool;

test/functional/feature_llmq_dkgerrors.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,18 @@ def run_test(self):
2525
self.assert_member_valid(qh, self.mninfo[0].proTxHash, True)
2626

2727
self.log.info("Lets omit the contribution")
28-
self.mninfo[0].node.quorum('dkgsimerror', 'contribution-omit', '1')
28+
self.mninfo[0].node.quorum('dkgsimerror', 'contribution-omit', '100')
2929
qh = self.mine_quorum(expected_contributions=2)
3030
self.assert_member_valid(qh, self.mninfo[0].proTxHash, False)
3131

3232
self.log.info("Lets lie in the contribution but provide a correct justification")
3333
self.mninfo[0].node.quorum('dkgsimerror', 'contribution-omit', '0')
34-
self.mninfo[0].node.quorum('dkgsimerror', 'contribution-lie', '1')
34+
self.mninfo[0].node.quorum('dkgsimerror', 'contribution-lie', '100')
3535
qh = self.mine_quorum(expected_contributions=3, expected_complaints=2, expected_justifications=1)
3636
self.assert_member_valid(qh, self.mninfo[0].proTxHash, True)
3737

3838
self.log.info("Lets lie in the contribution and then omit the justification")
39-
self.mninfo[0].node.quorum('dkgsimerror', 'justify-omit', '1')
39+
self.mninfo[0].node.quorum('dkgsimerror', 'justify-omit', '100')
4040
qh = self.mine_quorum(expected_contributions=3, expected_complaints=2)
4141
self.assert_member_valid(qh, self.mninfo[0].proTxHash, False)
4242

@@ -45,26 +45,26 @@ def run_test(self):
4545

4646
self.log.info("Lets lie in the contribution and then also lie in the justification")
4747
self.mninfo[0].node.quorum('dkgsimerror', 'justify-omit', '0')
48-
self.mninfo[0].node.quorum('dkgsimerror', 'justify-lie', '1')
48+
self.mninfo[0].node.quorum('dkgsimerror', 'justify-lie', '100')
4949
qh = self.mine_quorum(expected_contributions=3, expected_complaints=2, expected_justifications=1)
5050
self.assert_member_valid(qh, self.mninfo[0].proTxHash, False)
5151

5252
self.log.info("Lets lie about another MN")
5353
self.mninfo[0].node.quorum('dkgsimerror', 'contribution-lie', '0')
5454
self.mninfo[0].node.quorum('dkgsimerror', 'justify-lie', '0')
55-
self.mninfo[0].node.quorum('dkgsimerror', 'complain-lie', '1')
55+
self.mninfo[0].node.quorum('dkgsimerror', 'complain-lie', '100')
5656
qh = self.mine_quorum(expected_contributions=3, expected_complaints=1, expected_justifications=2)
5757
self.assert_member_valid(qh, self.mninfo[0].proTxHash, True)
5858

5959
self.log.info("Lets omit 1 premature commitments")
6060
self.mninfo[0].node.quorum('dkgsimerror', 'complain-lie', '0')
61-
self.mninfo[0].node.quorum('dkgsimerror', 'commit-omit', '1')
61+
self.mninfo[0].node.quorum('dkgsimerror', 'commit-omit', '100')
6262
qh = self.mine_quorum(expected_contributions=3, expected_complaints=0, expected_justifications=0, expected_commitments=2)
6363
self.assert_member_valid(qh, self.mninfo[0].proTxHash, True)
6464

6565
self.log.info("Lets lie in 1 premature commitments")
6666
self.mninfo[0].node.quorum('dkgsimerror', 'commit-omit', '0')
67-
self.mninfo[0].node.quorum('dkgsimerror', 'commit-lie', '1')
67+
self.mninfo[0].node.quorum('dkgsimerror', 'commit-lie', '100')
6868
qh = self.mine_quorum(expected_contributions=3, expected_complaints=0, expected_justifications=0, expected_commitments=2)
6969
self.assert_member_valid(qh, self.mninfo[0].proTxHash, True)
7070

0 commit comments

Comments
 (0)