diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 070f011f42f9..2cadf5c327a2 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -195,7 +195,6 @@ BITCOIN_QT_H = \ qt/transactionrecord.h \ qt/transactiontablemodel.h \ qt/transactionview.h \ - qt/util.h \ qt/utilitydialog.h \ qt/walletcontroller.h \ qt/walletframe.h \ diff --git a/src/interfaces/node.h b/src/interfaces/node.h index e91b69e310f4..36b75ac4dbde 100644 --- a/src/interfaces/node.h +++ b/src/interfaces/node.h @@ -143,7 +143,6 @@ class GOV int32_t m_yes{0}; }; virtual Votes getObjVotes(const CGovernanceObject& obj, vote_signal_enum_t vote_signal) = 0; - virtual bool getObjLocalValidity(const CGovernanceObject& obj, std::string& error, bool check_collateral) = 0; virtual bool existsObj(const uint256& hash) = 0; virtual bool isEnabled() = 0; virtual bool processVoteAndRelay(const CGovernanceVote& vote, std::string& error) = 0; diff --git a/src/node/interfaces.cpp b/src/node/interfaces.cpp index 8db8a2c610e5..77fa829b6996 100644 --- a/src/node/interfaces.cpp +++ b/src/node/interfaces.cpp @@ -251,14 +251,6 @@ class GOVImpl : public GOV } return false; } - bool getObjLocalValidity(const CGovernanceObject& obj, std::string& error, bool check_collateral) override - { - if (context().govman != nullptr && context().chainman != nullptr && context().dmnman != nullptr) { - LOCK(cs_main); - return obj.IsValidLocally(context().dmnman->GetListAtChainTip(), *(context().chainman), error, check_collateral); - } - return false; - } bool isEnabled() override { if (context().govman != nullptr) { diff --git a/src/qt/clientfeeds.cpp b/src/qt/clientfeeds.cpp index c9dad9391fcb..a05ab37e1f32 100644 --- a/src/qt/clientfeeds.cpp +++ b/src/qt/clientfeeds.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include @@ -188,9 +187,7 @@ void MasternodeFeed::fetch() nNextPayment = nextPaymentIt->second; } auto entry = std::make_shared(dmn, collateralStr, nNextPayment); - ret->m_by_protx[dmn->getProTxHash()] = entry.get(); - ret->m_by_service[util::make_array(dmn->getNetInfoPrimary().GetKey())] = entry.get(); - ret->m_entries.push_back(std::move(entry)); + ret->m_entries.emplace_back(std::move(entry)); }); ret->m_valid = true; diff --git a/src/qt/clientfeeds.h b/src/qt/clientfeeds.h index 08ab6e7fc853..622b7157d3e2 100644 --- a/src/qt/clientfeeds.h +++ b/src/qt/clientfeeds.h @@ -151,10 +151,8 @@ class InstantSendFeed : public Feed { struct MasternodeData { bool m_valid{false}; int m_list_height{0}; - interfaces::MnList::Counts m_counts{}; - QHash m_by_service{}; - std::vector> m_entries{}; - Uint256HashMap m_by_protx{}; + interfaces::MnList::Counts m_counts; + std::vector> m_entries; }; class MasternodeFeed : public Feed { diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index 0cae58e68685..3a9b9240400a 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -531,6 +531,11 @@ namespace GUIUtil return false; } + template + inline QByteArray MakeQByteArray(const T1& data) + { + return QByteArray(reinterpret_cast(data.data()), data.size()); + } } // namespace GUIUtil #endif // BITCOIN_QT_GUIUTIL_H diff --git a/src/qt/proposallist.cpp b/src/qt/proposallist.cpp index 3f0fc8cabcb3..924aac344e9e 100644 --- a/src/qt/proposallist.cpp +++ b/src/qt/proposallist.cpp @@ -532,16 +532,19 @@ void ProposalList::voteForProposal(vote_outcome_enum_t outcome) // Vote with each masternode for (const auto& [proTxHash, votingKeyID] : votableMasternodes) { // Find the masternode - const auto* dmn = [&]() -> const MasternodeEntry* { - if (const auto it = data_mn->m_by_protx.find(proTxHash); it != data_mn->m_by_protx.end() && !it->second->isBanned()) { - return it->second; + QString protx_hash{QString::fromStdString(proTxHash.ToString())}; + const auto dmn = [&]() -> const std::shared_ptr { + for (const auto& mn : data_mn->m_entries) { + if (mn->proTxHash() == protx_hash) { + return mn->isBanned() ? nullptr : mn; + } } return nullptr; }(); if (!dmn) { nFailed++; - failedMessages.append(tr("Masternode %1 not found").arg(QString::fromStdString(proTxHash.ToString()))); + failedMessages.append(tr("Masternode %1 not found").arg(protx_hash)); continue; } @@ -552,7 +555,7 @@ void ProposalList::voteForProposal(vote_outcome_enum_t outcome) if (!walletModel->wallet().signGovernanceVote(votingKeyID, vote)) { nFailed++; failedMessages.append( - tr("Failed to sign vote for masternode %1").arg(QString::fromStdString(proTxHash.ToString()))); + tr("Failed to sign vote for masternode %1").arg(protx_hash)); continue; } diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index c6c88aff22c8..611042137238 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -19,7 +19,6 @@ #include #include #include -#include #include #include @@ -1277,12 +1276,12 @@ void RPCConsole::updateDetailWidget() } ui->peerMappedAS->setText(stats->nodeStats.m_mapped_as != 0 ? QString::number(stats->nodeStats.m_mapped_as) : ts.na); - const auto addr_key{util::make_array(stats->nodeStats.addr.GetKey())}; - const MasternodeEntry* dmn = [&]() -> const MasternodeEntry* { + const auto addr_key{GUIUtil::MakeQByteArray(stats->nodeStats.addr.GetKey())}; + const std::shared_ptr dmn = [&]() -> const std::shared_ptr { if (m_feed_masternode) { if (const auto data{m_feed_masternode->data()}; data) { - if (auto it = data->m_by_service.find(addr_key); it != data->m_by_service.end()) { - return it.value(); + for (const auto& mn : data->m_entries) { + if (mn->serviceKey() == addr_key) return mn; } } } diff --git a/src/qt/util.h b/src/qt/util.h deleted file mode 100644 index 218d4eb0c318..000000000000 --- a/src/qt/util.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) 2026 The Dash Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_UTIL_H -#define BITCOIN_QT_UTIL_H - -#include - -namespace util { -template -inline QByteArray make_array(const T1& data) -{ - return QByteArray(reinterpret_cast(data.data()), data.size()); -} -} // namespace util - -#endif // BITCOIN_QT_UTIL_H