Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 4 additions & 14 deletions src/evo/deterministicmns.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ bool CDeterministicMNList::IsMNValid(const uint256& proTxHash) const
if (p == nullptr) {
return false;
}
return IsMNValid(**p);
return !(*p)->pdmnState->IsBanned();
}

bool CDeterministicMNList::IsMNPoSeBanned(const uint256& proTxHash) const
Expand All @@ -78,17 +78,7 @@ bool CDeterministicMNList::IsMNPoSeBanned(const uint256& proTxHash) const
if (p == nullptr) {
return false;
}
return IsMNPoSeBanned(**p);
}

bool CDeterministicMNList::IsMNValid(const CDeterministicMN& dmn)
{
return !IsMNPoSeBanned(dmn);
}

bool CDeterministicMNList::IsMNPoSeBanned(const CDeterministicMN& dmn)
{
return dmn.pdmnState->IsBanned();
return (*p)->pdmnState->IsBanned();
}

CDeterministicMNCPtr CDeterministicMNList::GetMN(const uint256& proTxHash) const
Expand All @@ -103,7 +93,7 @@ CDeterministicMNCPtr CDeterministicMNList::GetMN(const uint256& proTxHash) const
CDeterministicMNCPtr CDeterministicMNList::GetValidMN(const uint256& proTxHash) const
{
auto dmn = GetMN(proTxHash);
if (dmn && !IsMNValid(*dmn)) {
if (dmn && dmn->pdmnState->IsBanned()) {
return nullptr;
}
return dmn;
Expand All @@ -127,7 +117,7 @@ CDeterministicMNCPtr CDeterministicMNList::GetMNByCollateral(const COutPoint& co
CDeterministicMNCPtr CDeterministicMNList::GetValidMNByCollateral(const COutPoint& collateralOutpoint) const
{
auto dmn = GetMNByCollateral(collateralOutpoint);
if (dmn && !IsMNValid(*dmn)) {
if (dmn && dmn->pdmnState->IsBanned()) {
return nullptr;
}
return dmn;
Expand Down
15 changes: 7 additions & 8 deletions src/evo/deterministicmns.h
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ class CDeterministicMNList

[[nodiscard]] size_t GetValidMNsCount() const
{
return ranges::count_if(mnMap, [](const auto& p) { return IsMNValid(*p.second); });
return ranges::count_if(mnMap, [](const auto& p) { return !p.second->pdmnState->IsBanned(); });
}

[[nodiscard]] size_t GetAllEvoCount() const
Expand All @@ -231,14 +231,15 @@ class CDeterministicMNList

[[nodiscard]] size_t GetValidEvoCount() const
{
return ranges::count_if(mnMap,
[](const auto& p) { return p.second->nType == MnType::Evo && IsMNValid(*p.second); });
return ranges::count_if(mnMap, [](const auto& p) {
return p.second->nType == MnType::Evo && !p.second->pdmnState->IsBanned();
});
}

[[nodiscard]] size_t GetValidWeightedMNsCount() const
{
return std::accumulate(mnMap.begin(), mnMap.end(), 0, [](auto res, const auto& p) {
if (!IsMNValid(*p.second)) return res;
if (p.second->pdmnState->IsBanned()) return res;
return res + GetMnType(p.second->nType).voting_weight;
});
}
Expand All @@ -253,7 +254,7 @@ class CDeterministicMNList
void ForEachMN(bool onlyValid, Callback&& cb) const
{
for (const auto& p : mnMap) {
if (!onlyValid || IsMNValid(*p.second)) {
if (!onlyValid || !p.second->pdmnState->IsBanned()) {
cb(*p.second);
}
}
Expand All @@ -270,7 +271,7 @@ class CDeterministicMNList
void ForEachMNShared(bool onlyValid, Callback&& cb) const
{
for (const auto& p : mnMap) {
if (!onlyValid || IsMNValid(*p.second)) {
if (!onlyValid || !p.second->pdmnState->IsBanned()) {
cb(p.second);
}
}
Expand Down Expand Up @@ -301,8 +302,6 @@ class CDeterministicMNList

[[nodiscard]] bool IsMNValid(const uint256& proTxHash) const;
[[nodiscard]] bool IsMNPoSeBanned(const uint256& proTxHash) const;
static bool IsMNValid(const CDeterministicMN& dmn);
static bool IsMNPoSeBanned(const CDeterministicMN& dmn);

[[nodiscard]] bool HasMN(const uint256& proTxHash) const
{
Expand Down
9 changes: 3 additions & 6 deletions src/rpc/masternode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -517,13 +517,10 @@ static RPCHelpMan masternodelist_helper(bool is_composite)

const auto mnList = CHECK_NONFATAL(node.dmnman)->GetListAtChainTip();
const auto dmnToStatus = [&](const auto& dmn) {
if (mnList.IsMNValid(dmn)) {
return "ENABLED";
}
if (mnList.IsMNPoSeBanned(dmn)) {
if (dmn.pdmnState->IsBanned()) {
return "POSE_BANNED";
}
return "UNKNOWN";
return "ENABLED";
};
const auto dmnToLastPaidTime = [&](const auto& dmn) {
if (dmn.pdmnState->nLastPaidHeight == 0) {
Expand All @@ -539,7 +536,7 @@ static RPCHelpMan masternodelist_helper(bool is_composite)
const bool showEvoOnly = strMode == "evo";
const int tipHeight = WITH_LOCK(cs_main, return chainman.ActiveChain().Tip()->nHeight);
mnList.ForEachMN(false, [&](auto& dmn) {
if (showRecentMnsOnly && mnList.IsMNPoSeBanned(dmn)) {
if (showRecentMnsOnly && dmn.pdmnState->IsBanned()) {
if (tipHeight - dmn.pdmnState->GetBannedHeight() > Params().GetConsensus().nSuperblockCycle) {
return;
}
Expand Down
Loading