Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ BITCOIN_CORE_H = \
blockfilter.h \
chain.h \
chainlock/chainlock.h \
chainlock/handler.h \
chainlock/clsig.h \
chainlock/signing.h \
chainparams.h \
Expand Down Expand Up @@ -499,6 +500,7 @@ libbitcoin_node_a_SOURCES = \
chain.cpp \
chainlock/chainlock.cpp \
chainlock/clsig.cpp \
chainlock/handler.cpp \
chainlock/signing.cpp \
coinjoin/coinjoin.cpp \
coinjoin/server.cpp \
Expand Down
35 changes: 19 additions & 16 deletions src/active/context.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#include <active/dkgsessionhandler.h>
#include <active/masternode.h>
#include <active/quorums.h>
#include <chainlock/chainlock.h>
#include <chainlock/handler.h>
#include <chainlock/signing.h>
#include <governance/governance.h>
#include <governance/signing.h>
Expand All @@ -19,20 +19,19 @@
#include <llmq/ehf_signals.h>
#include <llmq/quorumsman.h>
#include <llmq/signing_shares.h>

#include <util/check.h>
#include <validation.h>
#include <validationinterface.h>

ActiveContext::ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman, CConnman& connman,
CDeterministicMNManager& dmnman, CGovernanceManager& govman,
CMasternodeMetaMan& mn_metaman, CMNHFManager& mnhfman, CSporkManager& sporkman,
CTxMemPool& mempool, llmq::CChainLocksHandler& clhandler, llmq::CInstantSendManager& isman,
llmq::CQuorumBlockProcessor& qblockman, llmq::CQuorumManager& qman,
llmq::CQuorumSnapshotManager& qsnapman, llmq::CSigningManager& sigman,
PeerManager& peerman, const CMasternodeSync& mn_sync, const CBLSSecretKey& operator_sk,
const llmq::QvvecSyncModeMap& sync_map, const util::DbWrapperParams& db_params,
bool quorums_recovery, bool quorums_watch) :
m_clhandler{clhandler},
CDeterministicMNManager& dmnman, CGovernanceManager& govman, CMasternodeMetaMan& mn_metaman,
CMNHFManager& mnhfman, CSporkManager& sporkman, const chainlock::Chainlocks& chainlocks,
CTxMemPool& mempool, chainlock::ChainlockHandler& clhandler,
llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman,
llmq::CQuorumManager& qman, llmq::CQuorumSnapshotManager& qsnapman,
llmq::CSigningManager& sigman, PeerManager& peerman, const CMasternodeSync& mn_sync,
const CBLSSecretKey& operator_sk, const llmq::QvvecSyncModeMap& sync_map,
const util::DbWrapperParams& db_params, bool quorums_recovery, bool quorums_watch) :
m_isman{isman},
m_qman{qman},
nodeman{std::make_unique<CActiveMasternodeManager>(connman, dmnman, operator_sk)},
Expand All @@ -44,9 +43,9 @@ ActiveContext::ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman
ehf_sighandler{std::make_unique<llmq::CEHFSignalsHandler>(chainman, mnhfman, sigman, *shareman, qman)},
qman_handler{std::make_unique<llmq::QuorumParticipant>(bls_worker, connman, dmnman, qman, qsnapman, *nodeman, chainman,
mn_sync, sporkman, sync_map, quorums_recovery, quorums_watch)},
cl_signer{std::make_unique<chainlock::ChainLockSigner>(chainman.ActiveChainstate(), clhandler, sigman, *shareman,
sporkman, mn_sync)},
is_signer{std::make_unique<instantsend::InstantSendSigner>(chainman.ActiveChainstate(), clhandler, isman, sigman,
cl_signer{std::make_unique<chainlock::ChainLockSigner>(chainman.ActiveChainstate(), chainlocks, clhandler, isman,
qman, sigman, *shareman, mn_sync)},
is_signer{std::make_unique<instantsend::InstantSendSigner>(chainman.ActiveChainstate(), chainlocks, isman, sigman,
*shareman, qman, sporkman, mempool, mn_sync)}
{
qdkgsman->InitializeHandlers([&](const Consensus::LLMQParams& llmq_params,
Expand All @@ -55,7 +54,6 @@ ActiveContext::ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman
qblockman, qsnapman, *nodeman, chainman, sporkman,
llmq_params, quorums_watch, quorum_idx);
});
m_clhandler.ConnectSigner(cl_signer.get());
m_isman.ConnectSigner(is_signer.get());
m_qman.ConnectManagers(qman_handler.get(), qdkgsman.get());
}
Expand All @@ -64,7 +62,6 @@ ActiveContext::~ActiveContext()
{
m_qman.DisconnectManagers();
m_isman.DisconnectSigner();
m_clhandler.DisconnectSigner();
}

void ActiveContext::Interrupt()
Expand All @@ -77,16 +74,22 @@ void ActiveContext::Start(CConnman& connman, PeerManager& peerman)
qman_handler->Start();
qdkgsman->StartThreads(connman, peerman);
shareman->Start();
cl_signer->Start();
cl_signer->RegisterRecoveryInterface();
is_signer->RegisterRecoveryInterface();
shareman->RegisterRecoveryInterface();

RegisterValidationInterface(cl_signer.get());
}

void ActiveContext::Stop()
{
UnregisterValidationInterface(cl_signer.get());

shareman->UnregisterRecoveryInterface();
is_signer->UnregisterRecoveryInterface();
cl_signer->UnregisterRecoveryInterface();
cl_signer->Stop();
shareman->Stop();
qdkgsman->StopThreads();
qman_handler->Stop();
Expand Down
18 changes: 9 additions & 9 deletions src/active/context.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,14 @@ class CTxMemPool;
class GovernanceSigner;
class PeerManager;
namespace chainlock {
class Chainlocks;
class ChainlockHandler;
class ChainLockSigner;
} // namespace chainlock
namespace instantsend {
class InstantSendSigner;
} // namespace instantsend
namespace llmq {
class CChainLocksHandler;
class CDKGDebugManager;
class CDKGSessionManager;
class CEHFSignalsHandler;
Expand All @@ -53,7 +54,6 @@ struct DbWrapperParams;

struct ActiveContext final : public CValidationInterface {
private:
llmq::CChainLocksHandler& m_clhandler;
llmq::CInstantSendManager& m_isman;
llmq::CQuorumManager& m_qman;

Expand All @@ -63,13 +63,13 @@ struct ActiveContext final : public CValidationInterface {
ActiveContext& operator=(const ActiveContext&) = delete;
explicit ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman, CConnman& connman,
CDeterministicMNManager& dmnman, CGovernanceManager& govman, CMasternodeMetaMan& mn_metaman,
CMNHFManager& mnhfman, CSporkManager& sporkman, CTxMemPool& mempool,
llmq::CChainLocksHandler& clhandler, llmq::CInstantSendManager& isman,
llmq::CQuorumBlockProcessor& qblockman, llmq::CQuorumManager& qman,
llmq::CQuorumSnapshotManager& qsnapman, llmq::CSigningManager& sigman, PeerManager& peerman,
const CMasternodeSync& mn_sync, const CBLSSecretKey& operator_sk,
const llmq::QvvecSyncModeMap& sync_map, const util::DbWrapperParams& db_params,
bool quorums_recovery, bool quorums_watch);
CMNHFManager& mnhfman, CSporkManager& sporkman, const chainlock::Chainlocks& chainlocks,
CTxMemPool& mempool, chainlock::ChainlockHandler& clhandler,
llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman,
llmq::CQuorumManager& qman, llmq::CQuorumSnapshotManager& qsnapman,
llmq::CSigningManager& sigman, PeerManager& peerman, const CMasternodeSync& mn_sync,
const CBLSSecretKey& operator_sk, const llmq::QvvecSyncModeMap& sync_map,
const util::DbWrapperParams& db_params, bool quorums_recovery, bool quorums_watch);
~ActiveContext();

void Interrupt();
Expand Down
4 changes: 2 additions & 2 deletions src/bench/rpc_blockchain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ static void BlockToJsonVerbose(benchmark::Bench& bench)
TestBlockAndIndex data;
const LLMQContext& llmq_ctx = *data.testing_setup->m_node.llmq_ctx;
bench.run([&] {
auto univalue = blockToJSON(data.testing_setup->m_node.chainman->m_blockman, data.block, &data.blockindex, &data.blockindex, *llmq_ctx.clhandler, *llmq_ctx.isman, TxVerbosity::SHOW_DETAILS_AND_PREVOUT);
auto univalue = blockToJSON(data.testing_setup->m_node.chainman->m_blockman, data.block, &data.blockindex, &data.blockindex, *data.testing_setup->m_node.chainlocks, *llmq_ctx.isman, TxVerbosity::SHOW_DETAILS_AND_PREVOUT);
ankerl::nanobench::doNotOptimizeAway(univalue);
});
}
Expand All @@ -56,7 +56,7 @@ static void BlockToJsonVerboseWrite(benchmark::Bench& bench)
{
TestBlockAndIndex data;
const LLMQContext& llmq_ctx = *data.testing_setup->m_node.llmq_ctx;
auto univalue = blockToJSON(data.testing_setup->m_node.chainman->m_blockman, data.block, &data.blockindex, &data.blockindex, *llmq_ctx.clhandler, *llmq_ctx.isman, TxVerbosity::SHOW_DETAILS_AND_PREVOUT);
auto univalue = blockToJSON(data.testing_setup->m_node.chainman->m_blockman, data.block, &data.blockindex, &data.blockindex, *data.testing_setup->m_node.chainlocks, *llmq_ctx.isman, TxVerbosity::SHOW_DETAILS_AND_PREVOUT);
bench.run([&] {
auto str = univalue.write();
ankerl::nanobench::doNotOptimizeAway(str);
Expand Down
Loading
Loading