diff --git a/src/Makefile.am b/src/Makefile.am index a0eca537b48d..f01a67d1adde 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -230,14 +230,12 @@ BITCOIN_CORE_H = \ evo/types.h \ external_signer.h \ dsnotificationinterface.h \ - governance/classes.h \ governance/common.h \ - governance/exceptions.h \ governance/governance.h \ governance/net_governance.h \ governance/object.h \ governance/signing.h \ - governance/validators.h \ + governance/superblock.h \ governance/vote.h \ governance/votedb.h \ gsl/assert.h \ @@ -521,13 +519,11 @@ libbitcoin_node_a_SOURCES = \ evo/specialtx_filter.cpp \ evo/specialtxman.cpp \ flatfile.cpp \ - governance/classes.cpp \ - governance/exceptions.cpp \ governance/governance.cpp \ governance/net_governance.cpp \ governance/object.cpp \ governance/signing.cpp \ - governance/validators.cpp \ + governance/superblock.cpp \ governance/vote.cpp \ governance/votedb.cpp \ gsl/assert.cpp \ diff --git a/src/active/context.cpp b/src/active/context.cpp index c89162df6a7e..4479c6653fa8 100644 --- a/src/active/context.cpp +++ b/src/active/context.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -26,7 +27,8 @@ #include ActiveContext::ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman, CConnman& connman, - CDeterministicMNManager& dmnman, CGovernanceManager& govman, CMasternodeMetaMan& mn_metaman, + CDeterministicMNManager& dmnman, CGovernanceManager& govman, + governance::SuperblockManager& superblocks, CMasternodeMetaMan& mn_metaman, CSporkManager& sporkman, const chainlock::Chainlocks& chainlocks, CTxMemPool& mempool, chainlock::ChainlockHandler& clhandler, llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman, llmq::CQuorumManager& qman, @@ -40,7 +42,7 @@ ActiveContext::ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman dkgdbgman{std::make_unique(dmnman, qsnapman, chainman)}, qdkgsman{std::make_unique(dmnman, qsnapman, chainman, sporkman, db_params, quorums_watch)}, shareman{std::make_unique(connman, chainman, sigman, *nodeman, qman, sporkman)}, - gov_signer{std::make_unique(connman, dmnman, govman, *nodeman, chainman, mn_sync)}, + gov_signer{std::make_unique(connman, dmnman, govman, superblocks, *nodeman, chainman, mn_sync)}, ehf_sighandler{std::make_unique(chainman, sigman, *shareman, qman)}, cl_signer{std::make_unique(chainman.ActiveChainstate(), chainlocks, clhandler, isman, qman, sigman, *shareman, mn_sync)}, diff --git a/src/active/context.h b/src/active/context.h index 44b71abc8af7..af41ec7bfc84 100644 --- a/src/active/context.h +++ b/src/active/context.h @@ -31,6 +31,9 @@ class Chainlocks; class ChainlockHandler; class ChainLockSigner; } // namespace chainlock +namespace governance { +class SuperblockManager; +} // namespace governance namespace instantsend { class InstantSendSigner; } // namespace instantsend @@ -55,7 +58,8 @@ struct ActiveContext final : public llmq::QuorumRole, public CValidationInterfac ActiveContext(const ActiveContext&) = delete; ActiveContext& operator=(const ActiveContext&) = delete; explicit ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman, CConnman& connman, - CDeterministicMNManager& dmnman, CGovernanceManager& govman, CMasternodeMetaMan& mn_metaman, + CDeterministicMNManager& dmnman, CGovernanceManager& govman, + governance::SuperblockManager& superblocks, CMasternodeMetaMan& mn_metaman, CSporkManager& sporkman, const chainlock::Chainlocks& chainlocks, CTxMemPool& mempool, chainlock::ChainlockHandler& clhandler, llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman, llmq::CQuorumManager& qman, diff --git a/src/evo/chainhelper.cpp b/src/evo/chainhelper.cpp index 63c6fdafd2a7..bffb8d1e43fc 100644 --- a/src/evo/chainhelper.cpp +++ b/src/evo/chainhelper.cpp @@ -10,20 +10,22 @@ #include #include #include +#include #include #include #include -CChainstateHelper::CChainstateHelper(CEvoDB& evodb, CDeterministicMNManager& dmnman, CGovernanceManager& govman, - llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman, - llmq::CQuorumSnapshotManager& qsnapman, const ChainstateManager& chainman, - const Consensus::Params& consensus_params, const CMasternodeSync& mn_sync, - const chainlock::Chainlocks& chainlocks, const llmq::CQuorumManager& qman) : +CChainstateHelper::CChainstateHelper(CEvoDB& evodb, CDeterministicMNManager& dmnman, llmq::CInstantSendManager& isman, + llmq::CQuorumBlockProcessor& qblockman, llmq::CQuorumSnapshotManager& qsnapman, + const ChainstateManager& chainman, const Consensus::Params& consensus_params, + const CMasternodeSync& mn_sync, const chainlock::Chainlocks& chainlocks, + const llmq::CQuorumManager& qman) : isman{isman}, credit_pool_manager{std::make_unique(evodb, chainman)}, m_chainlocks{chainlocks}, ehf_manager{std::make_unique(evodb, chainman, qman)}, - mn_payments{std::make_unique(dmnman, govman, chainman, consensus_params, mn_sync)}, + superblocks{std::make_unique()}, + mn_payments{std::make_unique(dmnman, *superblocks, chainman, consensus_params, mn_sync)}, special_tx{std::make_unique(*credit_pool_manager, dmnman, *ehf_manager, qblockman, qsnapman, chainman, consensus_params, chainlocks, qman)} {} diff --git a/src/evo/chainhelper.h b/src/evo/chainhelper.h index ec129d30df2b..08e5d8eb482b 100644 --- a/src/evo/chainhelper.h +++ b/src/evo/chainhelper.h @@ -13,7 +13,6 @@ class CBlockIndex; class CCreditPoolManager; class CDeterministicMNManager; class CEvoDB; -class CGovernanceManager; class ChainstateManager; class CMasternodeSync; class CMNHFManager; @@ -25,6 +24,9 @@ struct CCreditPool; namespace chainlock { class Chainlocks; } // namespace chainlock +namespace governance { +class SuperblockManager; +} // namespace governance namespace Consensus { struct Params; } // namespace Consensus @@ -43,6 +45,7 @@ class CChainstateHelper const std::unique_ptr credit_pool_manager; const chainlock::Chainlocks& m_chainlocks; const std::unique_ptr ehf_manager; + const std::unique_ptr superblocks; const std::unique_ptr mn_payments; const std::unique_ptr special_tx; @@ -50,11 +53,11 @@ class CChainstateHelper CChainstateHelper() = delete; CChainstateHelper(const CChainstateHelper&) = delete; CChainstateHelper& operator=(const CChainstateHelper&) = delete; - explicit CChainstateHelper(CEvoDB& evodb, CDeterministicMNManager& dmnman, CGovernanceManager& govman, - llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman, - llmq::CQuorumSnapshotManager& qsnapman, const ChainstateManager& chainman, - const Consensus::Params& consensus_params, const CMasternodeSync& mn_sync, - const chainlock::Chainlocks& chainlocks, const llmq::CQuorumManager& qman); + explicit CChainstateHelper(CEvoDB& evodb, CDeterministicMNManager& dmnman, llmq::CInstantSendManager& isman, + llmq::CQuorumBlockProcessor& qblockman, llmq::CQuorumSnapshotManager& qsnapman, + const ChainstateManager& chainman, const Consensus::Params& consensus_params, + const CMasternodeSync& mn_sync, const chainlock::Chainlocks& chainlocks, + const llmq::CQuorumManager& qman); ~CChainstateHelper(); /** Passthrough functions to chainlock::Chainlocks */ diff --git a/src/governance/classes.h b/src/governance/classes.h deleted file mode 100644 index 3994ca37b2b5..000000000000 --- a/src/governance/classes.h +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright (c) 2014-2025 The Dash Core developers -// Distributed under the MIT/X11 software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_GOVERNANCE_CLASSES_H -#define BITCOIN_GOVERNANCE_CLASSES_H - -#include -#include -#include