Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
2943376
refactor: drop unused active_chain from superblock validation
knst Sep 18, 2026
f7e3816
refactor: build LLMQContext and CChainstateHelper in init, not LoadCh…
knst Sep 18, 2026
be3d76e
refactor: move SuperblockManager out of CChainstateHelper into NodeCo…
knst Sep 18, 2026
17ef134
refactor: construct CMasternodeSync before the chainstate loading loop
knst Sep 18, 2026
0289991
refactor: extract the superblock height and payments-limit rules
knst Oct 1, 2026
93d7641
refactor: validate a superblock against a plain list of outputs
knst Oct 1, 2026
3c06566
refactor: (move-only) the superblock output check goes to masternode/…
knst Oct 1, 2026
e3193a2
refactor(governance): answer superblock questions with one GetStatus …
knst Oct 1, 2026
1680c16
refactor: drop the superblock re-check from IsBlockPayeeValid
knst Oct 1, 2026
3a38344
refactor: drop dependency of CMNPaymentsProcessor on CDeterministicMN…
knst Oct 1, 2026
919a4ac
refactor: query superblock payments through ChainstateManager::Options
knst Oct 1, 2026
2752cde
refactor: move the coinbase payment checks into Chainstate
knst Oct 1, 2026
2e7a3a5
refactor: decide superblock enforcement in Chainstate
knst Oct 1, 2026
b82a111
refactor: derive the payment checks' context from the chainstate
knst Oct 1, 2026
e376b27
refactor: fold IsTransactionValid into IsBlockPayeeValid
knst Oct 1, 2026
8b57f0d
refactor: dissolve CMNPaymentsProcessor
knst Oct 1, 2026
b22bc75
refactor(instantsend): own the conflicting-lock helpers in CInstantSe…
knst Sep 18, 2026
d5c1bd7
refactor: dissolve CChainstateHelper into Chainstate
knst Sep 18, 2026
dc095b9
build: drop governance sources from libdashkernel
knst Sep 18, 2026
70921d0
refactor: drop unreferenced index and DKG sources dependencies from l…
knst Sep 18, 2026
3da050a
refactor: let ChainstateManager run without a masternode sync manager…
knst Sep 18, 2026
d1cf100
refactor(rpc): log when masternode payments cannot determine a payee
knst Oct 6, 2026
4b23b58
refactor: drop unused forward declarations
knst Oct 6, 2026
25b870b
refactor: name the moved superblock checks correctly in their logs
knst Oct 6, 2026
5c8ad13
refactor: forward-declare SuperblockStatus in the kernel options header
knst Oct 8, 2026
5ce1a8d
refactor: drop the unreachable height re-check from IsSuperblockValid
knst Oct 8, 2026
c9b4f7b
refactor: compute the superblock payments limit once per block
knst Oct 8, 2026
4c57312
refactor: check the superblock's block value inside IsSuperblockValid
knst Oct 8, 2026
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
16 changes: 0 additions & 16 deletions src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,6 @@ BITCOIN_CORE_H = \
dsnotificationinterface.h \
evo/assetlocktx.h \
evo/cbtx.h \
evo/chainhelper.h \
evo/creditpool.h \
evo/deterministicmns.h \
evo/dmn_types.h \
Expand Down Expand Up @@ -548,7 +547,6 @@ libbitcoin_node_a_SOURCES = \
dsnotificationinterface.cpp \
evo/assetlocktx.cpp \
evo/cbtx.cpp \
evo/chainhelper.cpp \
evo/creditpool.cpp \
evo/deterministicmns.cpp \
evo/dmnstate.cpp \
Expand Down Expand Up @@ -1282,7 +1280,6 @@ libdashkernel_la_SOURCES = \
deploymentstatus.cpp \
evo/assetlocktx.cpp \
evo/cbtx.cpp \
evo/chainhelper.cpp \
evo/creditpool.cpp \
evo/deterministicmns.cpp \
evo/dmnstate.cpp \
Expand All @@ -1297,19 +1294,10 @@ libdashkernel_la_SOURCES = \
evo/specialtx_filter.cpp \
evo/specialtxman.cpp \
flatfile.cpp \
governance/common.cpp \
governance/object.cpp \
governance/superblock.cpp \
governance/vote.cpp \
governance/votedb.cpp \
gsl/assert.cpp \
hash.cpp \
index/addressindex.cpp \
index/addressindex_util.cpp \
index/base.cpp \
index/blockfilterindex.cpp \
index/coinstatsindex.cpp \
index/spentindex.cpp \
index/txindex.cpp \
init/common.cpp \
instantsend/db.cpp \
Expand All @@ -1326,9 +1314,6 @@ libdashkernel_la_SOURCES = \
llmq/blockprocessor.cpp \
llmq/commitment.cpp \
llmq/context.cpp \
llmq/debug.cpp \
llmq/dkgsession.cpp \
llmq/dkgsessionhandler.cpp \
llmq/dkgsessionmgr.cpp \
llmq/options.cpp \
llmq/quorums.cpp \
Expand All @@ -1340,7 +1325,6 @@ libdashkernel_la_SOURCES = \
logging.cpp \
masternode/meta.cpp \
masternode/payments.cpp \
masternode/sync.cpp \
merkleblock.cpp \
messagesigner.cpp \
netaddress.cpp \
Expand Down
4 changes: 2 additions & 2 deletions src/active/context.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
#include <validationinterface.h>

ActiveContext::ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman, CConnman& connman,
CDeterministicMNManager& dmnman, CGovernanceManager& govman,
CDeterministicMNManager& dmnman, CGovernanceManager& govman, CMNHFManager& mnhfman,
governance::SuperblockManager& superblocks, CSporkManager& sporkman,
const chainlock::Chainlocks& chainlocks, CTxMemPool& mempool,
chainlock::ChainlockHandler& clhandler, llmq::CInstantSendManager& isman,
Expand All @@ -43,7 +43,7 @@ ActiveContext::ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman
qdkgsman{std::make_unique<llmq::CDKGSessionManager>(dmnman, qsnapman, chainman, sporkman, db_params)},
shareman{std::make_unique<llmq::CSigSharesManager>(connman, chainman, sigman, *nodeman, qman, sporkman)},
gov_signer{std::make_unique<GovernanceSigner>(dmnman, govman, superblocks, *nodeman, chainman, mn_sync)},
ehf_sighandler{std::make_unique<llmq::CEHFSignalsHandler>(chainman, sigman, *shareman, qman)},
ehf_sighandler{std::make_unique<llmq::CEHFSignalsHandler>(chainman, mnhfman, sigman, *shareman, qman)},
cl_signer{std::make_unique<chainlock::ChainLockSigner>(chainman, chainlocks, clhandler, isman,
qman, sigman, *shareman, mn_sync)},
is_signer{std::make_unique<instantsend::InstantSendSigner>(chainman, chainlocks, isman, sigman,
Expand Down
2 changes: 1 addition & 1 deletion src/active/context.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ 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,
CDeterministicMNManager& dmnman, CGovernanceManager& govman, CMNHFManager& mnhfman,
governance::SuperblockManager& superblocks, CSporkManager& sporkman,
const chainlock::Chainlocks& chainlocks, CTxMemPool& mempool,
chainlock::ChainlockHandler& clhandler, llmq::CInstantSendManager& isman,
Expand Down
23 changes: 11 additions & 12 deletions src/bitcoin-chainstate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,13 @@
#include <chainparams.h>
#include <consensus/validation.h>
#include <core_io.h>
#include <evo/chainhelper.h>
#include <evo/deterministicmns.h>
#include <evo/evodb.h>
#include <evo/specialtxman.h>
#include <init/common.h>
#include <instantsend/instantsend.h>
#include <llmq/context.h>
#include <llmq/options.h>
#include <masternode/meta.h>
#include <masternode/sync.h>
#include <node/blockstorage.h>
#include <node/caches.h>
#include <node/chainstate.h>
Expand Down Expand Up @@ -98,27 +97,27 @@ int main(int argc, char* argv[])
CMasternodeMetaMan metaman;
CEvoDB evodb{util::DbWrapperParams{.path = gArgs.GetDataDirNet(), .memory = false, .wipe = false}};
CDeterministicMNManager dmnman{evodb, metaman};
CMasternodeSync mn_sync{std::make_unique<NullNodeSyncNotifier>()};
CSporkManager sporkman;
chainlock::Chainlocks chainlocks(sporkman);
// TODO: remove isman from bitcoin-chainstate and make it nullable for node::ChainstateLoadOptions same as mempool
llmq::CInstantSendManager isman{sporkman, util::DbWrapperParams{.path = gArgs.GetDataDirNet(), .memory = false, .wipe = false}};

std::unique_ptr<LLMQContext> llmq_ctx;
std::unique_ptr<CChainstateHelper> chain_helper;
auto llmq_ctx = WITH_LOCK(::cs_main, return std::make_unique<LLMQContext>(dmnman, evodb, chainman,
util::DbWrapperParams{.path = gArgs.GetDataDirNet(), .memory = false, .wipe = false},
llmq::DEFAULT_BLSCHECK_THREADS, llmq::DEFAULT_WORKER_COUNT, llmq::DEFAULT_MAX_RECOVERED_SIGS_AGE));
auto special_tx = std::make_unique<CSpecialTxProcessor>(evodb, dmnman,
*llmq_ctx->quorum_block_processor, *llmq_ctx->qsnapman,
chainman, chainman.m_blockman, chainman.GetConsensus(),
chainlocks, *llmq_ctx->qman);

node::CacheSizes cache_sizes;
cache_sizes.block_tree_db = 2 << 20;
cache_sizes.coins_db = 2 << 22;
cache_sizes.coins = (450 << 20) - (2 << 20) - (2 << 22);
node::ChainstateLoadOptions options;
options.isman = &isman;
options.chainlocks = &chainlocks;
options.mn_sync = &mn_sync;
options.data_dir = gArgs.GetDataDirNet();
options.check_interrupt = [] { return false; };
options.coins_error_cb = [] {};
auto [status, error] = node::LoadChainstate(chainman, cache_sizes, options, evodb, dmnman, llmq_ctx, chain_helper);
auto [status, error] = node::LoadChainstate(chainman, cache_sizes, options, evodb, dmnman, *special_tx);
if (status != node::ChainstateLoadStatus::SUCCESS) {
std::cerr << "Failed to load Chain state from your datadir." << std::endl;
goto epilogue;
Expand Down Expand Up @@ -280,6 +279,6 @@ int main(int argc, char* argv[])
}
GetMainSignals().UnregisterBackgroundSignalScheduler();
// Tear down Dash kernel objects before kernel::~Context().
chain_helper.reset();
special_tx.reset();
llmq_ctx.reset();
}
104 changes: 0 additions & 104 deletions src/evo/chainhelper.cpp

This file was deleted.

92 changes: 0 additions & 92 deletions src/evo/chainhelper.h

This file was deleted.

5 changes: 2 additions & 3 deletions src/evo/providertx_service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include <consensus/tx_verify.h>
#include <consensus/validation.h>
#include <deploymentstatus.h>
#include <evo/chainhelper.h>
#include <evo/deterministicmns.h>
#include <evo/netinfo.h>
#include <evo/providertx.h>
Expand Down Expand Up @@ -360,7 +359,7 @@ std::optional<ProviderTxError> Preflight(node::NodeContext& node, const CTransac
{
AssertLockNotHeld(::cs_main);
auto& chainman{*Assert(node.chainman)};
auto& chain_helper{*Assert(node.chain_helper)};
auto& special_tx{*Assert(node.special_tx)};
LOCK(::cs_main);

const CBlockIndex* tip{chainman.ActiveChain().Tip()};
Expand All @@ -379,7 +378,7 @@ std::optional<ProviderTxError> Preflight(node::NodeContext& node, const CTransac
}

TxValidationState state;
if (!chain_helper.special_tx->CheckSpecialTx(tx, tip, GetSpecialTxRules(tip, chainman),
if (!special_tx.CheckSpecialTx(tx, tip, GetSpecialTxRules(tip, chainman),
chainman.ActiveChainstate().CoinsTip(), true, state)) {
return Error(ProviderTxErrorCode::CONSENSUS_REJECTED, state.ToString(), state.GetRejectReason());
}
Expand Down
Loading
Loading