Skip to content

Commit 61effe2

Browse files
committed
refactor: remove dependency of NetHandler on llmq/quorum and llmq/commitment
1 parent 2844baa commit 61effe2

File tree

3 files changed

+16
-27
lines changed

3 files changed

+16
-27
lines changed

src/llmq/net_signing.cpp

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44

55
#include <llmq/net_signing.h>
66

7-
#include <llmq/commitment.h>
8-
#include <llmq/quorums.h>
97
#include <llmq/signhash.h>
108
#include <llmq/signing.h>
119

@@ -78,10 +76,10 @@ bool NetSigning::ProcessPendingRecoveredSigs()
7876
}
7977

8078
std::unordered_map<NodeId, std::list<std::shared_ptr<const llmq::CRecoveredSig>>> recSigsByNode;
81-
std::unordered_map<std::pair<Consensus::LLMQType, uint256>, llmq::CQuorumCPtr, StaticSaltedHasher> quorums;
79+
std::unordered_map<std::pair<Consensus::LLMQType, uint256>, CBLSPublicKey, StaticSaltedHasher> pubkeys;
8280

8381
const size_t nMaxBatchSize{32};
84-
bool more_work = m_sig_manager.CollectPendingRecoveredSigsToVerify(nMaxBatchSize, recSigsByNode, quorums);
82+
bool more_work = m_sig_manager.CollectPendingRecoveredSigsToVerify(nMaxBatchSize, recSigsByNode, pubkeys);
8583
if (recSigsByNode.empty()) {
8684
return false;
8785
}
@@ -91,20 +89,16 @@ bool NetSigning::ProcessPendingRecoveredSigs()
9189
CBLSBatchVerifier<NodeId, uint256> batchVerifier(false, false);
9290

9391
size_t verifyCount = 0;
94-
for (const auto& p : recSigsByNode) {
95-
NodeId nodeId = p.first;
96-
const auto& v = p.second;
97-
92+
for (const auto& [nodeId, v] : recSigsByNode) {
9893
for (const auto& recSig : v) {
9994
// we didn't verify the lazy signature until now
10095
if (!recSig->sig.Get().IsValid()) {
10196
batchVerifier.badSources.emplace(nodeId);
10297
break;
10398
}
10499

105-
const auto& quorum = quorums.at(std::make_pair(recSig->getLlmqType(), recSig->getQuorumHash()));
106-
batchVerifier.PushMessage(nodeId, recSig->GetHash(), recSig->buildSignHash().Get(), recSig->sig.Get(),
107-
quorum->qc->quorumPublicKey);
100+
const auto& pubkey = pubkeys.at(std::make_pair(recSig->getLlmqType(), recSig->getQuorumHash()));
101+
batchVerifier.PushMessage(nodeId, recSig->GetHash(), recSig->buildSignHash().Get(), recSig->sig.Get(), pubkey);
108102
verifyCount++;
109103
}
110104
}
@@ -117,10 +111,7 @@ bool NetSigning::ProcessPendingRecoveredSigs()
117111
verifyCount, verifyTimer.count(), recSigsByNode.size());
118112

119113
Uint256HashSet processed;
120-
for (const auto& p : recSigsByNode) {
121-
NodeId nodeId = p.first;
122-
const auto& v = p.second;
123-
114+
for (const auto& [nodeId, v] : recSigsByNode) {
124115
if (batchVerifier.badSources.count(nodeId)) {
125116
LogPrint(BCLog::LLMQ, "NetSigning::%s -- invalid recSig from other node, banning peer=%d\n", __func__, nodeId);
126117
m_peer_manager->PeerMisbehaving(nodeId, 100);

src/llmq/signing.cpp

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,8 @@ void CSigningManager::VerifyAndProcessRecoveredSig(NodeId from, std::shared_ptr<
366366
auto quorum = qman.GetQuorum(llmq_type, recoveredSig->getQuorumHash());
367367

368368
if (!quorum) {
369-
LogPrint(BCLog::LLMQ, "NetSigning::%s -- quorum %s not found\n", __func__, recoveredSig->getQuorumHash().ToString());
369+
LogPrint(BCLog::LLMQ, "NetSigning::%s -- quorum %s not found\n", __func__,
370+
recoveredSig->getQuorumHash().ToString());
370371
return;
371372
}
372373
if (!IsQuorumActive(llmq_type, qman, quorum->qc->quorumHash)) {
@@ -394,9 +395,8 @@ void CSigningManager::VerifyAndProcessRecoveredSig(NodeId from, std::shared_ptr<
394395
}
395396

396397
bool CSigningManager::CollectPendingRecoveredSigsToVerify(
397-
size_t maxUniqueSessions,
398-
std::unordered_map<NodeId, std::list<std::shared_ptr<const CRecoveredSig>>>& retSigShares,
399-
std::unordered_map<std::pair<Consensus::LLMQType, uint256>, CQuorumCPtr, StaticSaltedHasher>& retQuorums)
398+
size_t maxUniqueSessions, std::unordered_map<NodeId, std::list<std::shared_ptr<const CRecoveredSig>>>& retSigShares,
399+
std::unordered_map<std::pair<Consensus::LLMQType, uint256>, CBLSPublicKey, StaticSaltedHasher>& ret_pubkeys)
400400
{
401401
bool more_work{false};
402402

@@ -434,16 +434,13 @@ bool CSigningManager::CollectPendingRecoveredSigsToVerify(
434434
!pendingReconstructedRecoveredSigs.empty();
435435
}
436436

437-
for (auto& p : retSigShares) {
438-
NodeId nodeId = p.first;
439-
auto& v = p.second;
440-
437+
for (auto& [nodeId, v] : retSigShares) {
441438
for (auto it = v.begin(); it != v.end();) {
442439
const auto& recSig = *it;
443440

444441
auto llmqType = recSig->getLlmqType();
445442
auto quorumKey = std::make_pair(recSig->getLlmqType(), recSig->getQuorumHash());
446-
if (!retQuorums.count(quorumKey)) {
443+
if (!ret_pubkeys.count(quorumKey)) {
447444
auto quorum = qman.GetQuorum(llmqType, recSig->getQuorumHash());
448445
if (!quorum) {
449446
LogPrint(BCLog::LLMQ, "CSigningManager::%s -- quorum %s not found, node=%d\n", __func__,
@@ -458,7 +455,7 @@ bool CSigningManager::CollectPendingRecoveredSigsToVerify(
458455
continue;
459456
}
460457

461-
retQuorums.emplace(quorumKey, quorum);
458+
ret_pubkeys.emplace(quorumKey, quorum->qc->quorumPublicKey);
462459
}
463460

464461
++it;

src/llmq/signing.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,10 +197,11 @@ class CSigningManager
197197
void TruncateRecoveredSig(Consensus::LLMQType llmqType, const uint256& id);
198198

199199
// Used by NetSigning:
200-
[[nodiscard]] Uint256HashMap<std::shared_ptr<const CRecoveredSig>> FetchPendingReconstructed() EXCLUSIVE_LOCKS_REQUIRED(!cs_pending);
200+
[[nodiscard]] Uint256HashMap<std::shared_ptr<const CRecoveredSig>> FetchPendingReconstructed()
201+
EXCLUSIVE_LOCKS_REQUIRED(!cs_pending);
201202
[[nodiscard]] bool CollectPendingRecoveredSigsToVerify(
202203
size_t maxUniqueSessions, std::unordered_map<NodeId, std::list<std::shared_ptr<const CRecoveredSig>>>& retSigShares,
203-
std::unordered_map<std::pair<Consensus::LLMQType, uint256>, CQuorumCPtr, StaticSaltedHasher>& retQuorums)
204+
std::unordered_map<std::pair<Consensus::LLMQType, uint256>, CBLSPublicKey, StaticSaltedHasher>& ret_pubkeys)
204205
EXCLUSIVE_LOCKS_REQUIRED(!cs_pending);
205206
[[nodiscard]] std::vector<CRecoveredSigsListener*> GetListeners() const EXCLUSIVE_LOCKS_REQUIRED(!cs_listeners);
206207
// Returns true if recovered sigs should be send to listeners

0 commit comments

Comments
 (0)