Skip to content

Commit 3fcfe3f

Browse files
authored
fix!: Return FinalCommitment in qrinfo (instead of simply quorumHash) (#4850)
1 parent 145fee3 commit 3fcfe3f

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

src/llmq/snapshot.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,13 @@ void CQuorumRotationInfo::ToJson(UniValue& obj) const
9090
mnListDiffAtHMinus4C.value().ToJson(objdiff4c);
9191
obj.pushKV("mnListDiffAtHMinus4C", objdiff4c);
9292
}
93-
94-
UniValue hlists(UniValue::VARR);
95-
for (const auto& h : lastQuorumHashPerIndex) {
96-
hlists.push_back(h.ToString());
93+
UniValue hqclists(UniValue::VARR);
94+
for (const auto& qc : lastCommitmentPerIndex) {
95+
UniValue objqc;
96+
qc.ToJson(objqc);
97+
hqclists.push_back(objqc);
9798
}
98-
obj.pushKV("lastQuorumHashPerIndex", hlists);
99+
obj.pushKV("lastCommitmentPerIndex", hqclists);
99100

100101
UniValue snapshotlist(UniValue::VARR);
101102
for (const auto& snap : quorumSnapshotList) {
@@ -298,7 +299,12 @@ bool BuildQuorumRotationInfo(const CGetQuorumRotationInfo& request, CQuorumRotat
298299
std::vector<std::pair<int, const CBlockIndex*>> qdata = quorumBlockProcessor->GetLastMinedCommitmentsPerQuorumIndexUntilBlock(llmqType, blockIndex, 0);
299300

300301
for (const auto& obj : qdata) {
301-
response.lastQuorumHashPerIndex.push_back(obj.second->GetBlockHash());
302+
uint256 minedBlockHash;
303+
llmq::CFinalCommitmentPtr qc = llmq::quorumBlockProcessor->GetMinedCommitment(llmqType, obj.second->GetBlockHash(), minedBlockHash);
304+
if (qc == nullptr) {
305+
return false;
306+
}
307+
response.lastCommitmentPerIndex.push_back(*qc);
302308

303309
int quorumCycleStartHeight = obj.second->nHeight - (obj.second->nHeight % llmqParams.dkgInterval);
304310
snapshotHeightsNeeded.insert(quorumCycleStartHeight - cycleLength);

src/llmq/snapshot.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include <evo/evodb.h>
99
#include <evo/simplifiedmns.h>
10+
#include <llmq/commitment.h>
1011
#include <llmq/params.h>
1112
#include <saltedhasher.h>
1213
#include <serialize.h>
@@ -115,7 +116,7 @@ class CQuorumRotationInfo
115116
std::optional<CQuorumSnapshot> quorumSnapshotAtHMinus4C;
116117
std::optional<CSimplifiedMNListDiff> mnListDiffAtHMinus4C;
117118

118-
std::vector<uint256> lastQuorumHashPerIndex;
119+
std::vector<llmq::CFinalCommitment> lastCommitmentPerIndex;
119120
std::vector<CQuorumSnapshot> quorumSnapshotList;
120121
std::vector<CSimplifiedMNListDiff> mnListDiffList;
121122

@@ -146,8 +147,8 @@ class CQuorumRotationInfo
146147
::Serialize(s, mnListDiffAtHMinus4C.value());
147148
}
148149

149-
WriteCompactSize(s, lastQuorumHashPerIndex.size());
150-
for (const auto& obj : lastQuorumHashPerIndex) {
150+
WriteCompactSize(s, lastCommitmentPerIndex.size());
151+
for (const auto& obj : lastCommitmentPerIndex) {
151152
::Serialize(s, obj);
152153
}
153154

@@ -178,8 +179,9 @@ class CQuorumRotationInfo
178179
size_t cnt = ReadCompactSize(s);
179180
for ([[maybe_unused]] const auto _ : irange::range(cnt)) {
180181
uint256 hash;
181-
::Unserialize(s, hash);
182-
lastQuorumHashPerIndex.push_back(std::move(hash));
182+
CFinalCommitment qc;
183+
::Unserialize(s, qc);
184+
lastCommitmentPerIndex.push_back(std::move(qc));
183185
}
184186

185187
cnt = ReadCompactSize(s);

0 commit comments

Comments
 (0)