22// Distributed under the MIT software license, see the accompanying
33// file COPYING or http://www.opensource.org/licenses/mit-license.php.
44
5- #include < llmq /dkgsession.h>
5+ #include < active /dkgsession.h>
66
77#include < evo/deterministicmns.h>
88#include < llmq/debug.h>
2020#include < cxxtimer.hpp>
2121
2222namespace llmq {
23- void CDKGSession::Contribute (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
23+ ActiveDKGSession::ActiveDKGSession (CBLSWorker& bls_worker, CDeterministicMNManager& dmnman, CDKGDebugManager& dkgdbgman,
24+ CDKGSessionManager& qdkgsman, CMasternodeMetaMan& mn_metaman,
25+ CQuorumSnapshotManager& qsnapman, const CActiveMasternodeManager& mn_activeman,
26+ const ChainstateManager& chainman, const CSporkManager& sporkman,
27+ const CBlockIndex* base_block_index, const Consensus::LLMQParams& params) :
28+ CDKGSession (bls_worker, dmnman, dkgdbgman, qdkgsman, qsnapman, chainman, base_block_index, params),
29+ m_mn_metaman{mn_metaman},
30+ m_mn_activeman{mn_activeman},
31+ m_sporkman{sporkman},
32+ m_use_legacy_bls{!DeploymentActiveAfter (m_quorum_base_block_index, Params ().GetConsensus (), Consensus::DEPLOYMENT_V19)}
33+ {
34+ }
35+
36+ ActiveDKGSession::~ActiveDKGSession () = default ;
37+
38+ void ActiveDKGSession::Contribute (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
2439{
2540 CDKGLogger logger (*this , __func__, __LINE__);
2641
@@ -43,7 +58,7 @@ void CDKGSession::Contribute(CDKGPendingMessages& pendingMessages, PeerManager&
4358 SendContributions (pendingMessages, peerman);
4459}
4560
46- void CDKGSession ::SendContributions (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
61+ void ActiveDKGSession ::SendContributions (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
4762{
4863 CDKGLogger logger (*this , __func__, __LINE__);
4964
@@ -83,7 +98,7 @@ void CDKGSession::SendContributions(CDKGPendingMessages& pendingMessages, PeerMa
8398
8499 logger.Batch (" encrypted contributions. time=%d" , t1.count ());
85100
86- qc.sig = m_mn_activeman-> Sign (qc.GetSignHash (), m_use_legacy_bls);
101+ qc.sig = m_mn_activeman. Sign (qc.GetSignHash (), m_use_legacy_bls);
87102
88103 logger.Flush ();
89104
@@ -100,7 +115,7 @@ void CDKGSession::SendContributions(CDKGPendingMessages& pendingMessages, PeerMa
100115// The resulting aggregated vvec is then used to recover a public key share
101116// The public key share must match the public key belonging to the aggregated secret key contributions
102117// See CBLSWorker::VerifyContributionShares for more details.
103- void CDKGSession ::VerifyPendingContributions ()
118+ void ActiveDKGSession ::VerifyPendingContributions ()
104119{
105120 AssertLockHeld (cs_pending);
106121
@@ -154,7 +169,7 @@ void CDKGSession::VerifyPendingContributions()
154169 pendingContributionVerifications.clear ();
155170}
156171
157- void CDKGSession ::VerifyAndComplain (CConnman& connman, CDKGPendingMessages& pendingMessages, PeerManager& peerman)
172+ void ActiveDKGSession ::VerifyAndComplain (CConnman& connman, CDKGPendingMessages& pendingMessages, PeerManager& peerman)
158173{
159174 if (!AreWeMember ()) {
160175 return ;
@@ -195,7 +210,7 @@ void CDKGSession::VerifyAndComplain(CConnman& connman, CDKGPendingMessages& pend
195210 SendComplaint (pendingMessages, peerman);
196211}
197212
198- void CDKGSession ::VerifyConnectionAndMinProtoVersions (CConnman& connman) const
213+ void ActiveDKGSession ::VerifyConnectionAndMinProtoVersions (CConnman& connman) const
199214{
200215 assert (m_mn_metaman.IsValid ());
201216
@@ -239,7 +254,7 @@ void CDKGSession::VerifyConnectionAndMinProtoVersions(CConnman& connman) const
239254 }
240255}
241256
242- void CDKGSession ::SendComplaint (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
257+ void ActiveDKGSession ::SendComplaint (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
243258{
244259 CDKGLogger logger (*this , __func__, __LINE__);
245260
@@ -269,7 +284,7 @@ void CDKGSession::SendComplaint(CDKGPendingMessages& pendingMessages, PeerManage
269284
270285 logger.Batch (" sending complaint. badCount=%d, complaintCount=%d" , badCount, complaintCount);
271286
272- qc.sig = m_mn_activeman-> Sign (qc.GetSignHash (), m_use_legacy_bls);
287+ qc.sig = m_mn_activeman. Sign (qc.GetSignHash (), m_use_legacy_bls);
273288
274289 logger.Flush ();
275290
@@ -281,7 +296,7 @@ void CDKGSession::SendComplaint(CDKGPendingMessages& pendingMessages, PeerManage
281296 pendingMessages.PushPendingMessage (-1 , qc, peerman);
282297}
283298
284- void CDKGSession ::VerifyAndJustify (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
299+ void ActiveDKGSession ::VerifyAndJustify (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
285300{
286301 if (!AreWeMember ()) {
287302 return ;
@@ -322,8 +337,8 @@ void CDKGSession::VerifyAndJustify(CDKGPendingMessages& pendingMessages, PeerMan
322337 }
323338}
324339
325- void CDKGSession ::SendJustification (CDKGPendingMessages& pendingMessages, PeerManager& peerman,
326- const std::set<uint256>& forMembers)
340+ void ActiveDKGSession ::SendJustification (CDKGPendingMessages& pendingMessages, PeerManager& peerman,
341+ const std::set<uint256>& forMembers)
327342{
328343 CDKGLogger logger (*this , __func__, __LINE__);
329344
@@ -359,7 +374,7 @@ void CDKGSession::SendJustification(CDKGPendingMessages& pendingMessages, PeerMa
359374 return ;
360375 }
361376
362- qj.sig = m_mn_activeman-> Sign (qj.GetSignHash (), m_use_legacy_bls);
377+ qj.sig = m_mn_activeman. Sign (qj.GetSignHash (), m_use_legacy_bls);
363378
364379 logger.Flush ();
365380
@@ -371,7 +386,7 @@ void CDKGSession::SendJustification(CDKGPendingMessages& pendingMessages, PeerMa
371386 pendingMessages.PushPendingMessage (-1 , qj, peerman);
372387}
373388
374- void CDKGSession ::VerifyAndCommit (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
389+ void ActiveDKGSession ::VerifyAndCommit (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
375390{
376391 if (!AreWeMember ()) {
377392 return ;
@@ -416,7 +431,7 @@ void CDKGSession::VerifyAndCommit(CDKGPendingMessages& pendingMessages, PeerMana
416431 SendCommitment (pendingMessages, peerman);
417432}
418433
419- void CDKGSession ::SendCommitment (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
434+ void ActiveDKGSession ::SendCommitment (CDKGPendingMessages& pendingMessages, PeerManager& peerman)
420435{
421436 CDKGLogger logger (*this , __func__, __LINE__);
422437
@@ -498,7 +513,7 @@ void CDKGSession::SendCommitment(CDKGPendingMessages& pendingMessages, PeerManag
498513 (*commitmentHash.begin ())++;
499514 }
500515
501- qc.sig = m_mn_activeman-> Sign (commitmentHash, m_use_legacy_bls);
516+ qc.sig = m_mn_activeman. Sign (commitmentHash, m_use_legacy_bls);
502517 qc.quorumSig = skShare.Sign (commitmentHash, m_use_legacy_bls);
503518
504519 if (lieType == 3 ) {
@@ -528,7 +543,7 @@ void CDKGSession::SendCommitment(CDKGPendingMessages& pendingMessages, PeerManag
528543 pendingMessages.PushPendingMessage (-1 , qc, peerman);
529544}
530545
531- std::vector<CFinalCommitment> CDKGSession ::FinalizeCommitments ()
546+ std::vector<CFinalCommitment> ActiveDKGSession ::FinalizeCommitments ()
532547{
533548 if (!AreWeMember ()) {
534549 return {};
@@ -637,7 +652,7 @@ std::vector<CFinalCommitment> CDKGSession::FinalizeCommitments()
637652 return finalCommitments;
638653}
639654
640- CFinalCommitment CDKGSession ::FinalizeSingleCommitment ()
655+ CFinalCommitment ActiveDKGSession ::FinalizeSingleCommitment ()
641656{
642657 if (!AreWeMember ()) {
643658 return {};
@@ -664,7 +679,7 @@ CFinalCommitment CDKGSession::FinalizeSingleCommitment()
664679 // TODO: use sk1 here instead and use recovery mechanism from shares, but that's not trivial to do
665680 const bool workaround_qpublic_key = true ;
666681 if (workaround_qpublic_key) {
667- fqc.quorumPublicKey = m_mn_activeman-> GetPubKey ();
682+ fqc.quorumPublicKey = m_mn_activeman. GetPubKey ();
668683 }
669684 const bool isQuorumRotationEnabled{false };
670685 fqc.nVersion = CFinalCommitment::GetVersion (isQuorumRotationEnabled,
@@ -676,7 +691,7 @@ CFinalCommitment CDKGSession::FinalizeSingleCommitment()
676691 fqc.quorumVvecHash );
677692 fqc.quorumSig = sk1.Sign (commitmentHash, m_use_legacy_bls);
678693
679- fqc.membersSig = m_mn_activeman-> Sign (commitmentHash, m_use_legacy_bls);
694+ fqc.membersSig = m_mn_activeman. Sign (commitmentHash, m_use_legacy_bls);
680695
681696 if (workaround_qpublic_key) {
682697 fqc.quorumSig = fqc.membersSig ;
@@ -694,4 +709,10 @@ CFinalCommitment CDKGSession::FinalizeSingleCommitment()
694709
695710 return fqc;
696711}
712+
713+ bool ActiveDKGSession::MaybeDecrypt (const CBLSIESMultiRecipientObjects<CBLSSecretKey>& obj, size_t idx,
714+ CBLSSecretKey& ret_obj, int version)
715+ {
716+ return m_mn_activeman.Decrypt (obj, idx, ret_obj, version);
717+ }
697718} // namespace llmq
0 commit comments