refactor: more CGovernanceVote cleanups

This commit is contained in:
UdjinM6 2024-11-04 17:27:00 +03:00
parent efc8c99139
commit c32fac079f
No known key found for this signature in database
GPG Key ID: 83592BD1400D58D9
5 changed files with 32 additions and 35 deletions

View File

@ -548,14 +548,10 @@ std::vector<CGovernanceVote> CGovernanceManager::GetCurrentVotes(const uint256&
vote_rec_t voteRecord; vote_rec_t voteRecord;
if (!govobj.GetCurrentMNVotes(mnpair.first, voteRecord)) continue; if (!govobj.GetCurrentMNVotes(mnpair.first, voteRecord)) continue;
for (const auto& voteInstancePair : voteRecord.mapInstances) { for (const auto& [signal, vote_instance] : voteRecord.mapInstances) {
int signal = voteInstancePair.first; CGovernanceVote vote = CGovernanceVote(mnpair.first, nParentHash, (vote_signal_enum_t)signal,
int outcome = voteInstancePair.second.eOutcome; vote_instance.eOutcome);
int64_t nCreationTime = voteInstancePair.second.nCreationTime; vote.SetTime(vote_instance.nCreationTime);
CGovernanceVote vote = CGovernanceVote(mnpair.first, nParentHash, (vote_signal_enum_t)signal, (vote_outcome_enum_t)outcome);
vote.SetTime(nCreationTime);
vecResult.push_back(vote); vecResult.push_back(vote);
} }
} }

View File

@ -90,7 +90,7 @@ bool CGovernanceObject::ProcessVote(CMasternodeMetaMan& mn_metaman, CGovernanceM
exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_WARNING); exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_WARNING);
return false; return false;
} }
if (eSignal > MAX_SUPPORTED_VOTE_SIGNAL) { if (eSignal < VOTE_SIGNAL_NONE || eSignal >= VOTE_SIGNAL_UNKNOWN) {
std::ostringstream ostr; std::ostringstream ostr;
ostr << "CGovernanceObject::ProcessVote -- Unsupported vote signal: " << CGovernanceVoting::ConvertSignalToString(vote.GetSignal()); ostr << "CGovernanceObject::ProcessVote -- Unsupported vote signal: " << CGovernanceVoting::ConvertSignalToString(vote.GetSignal());
LogPrintf("%s\n", ostr.str()); LogPrintf("%s\n", ostr.str());

View File

@ -87,10 +87,10 @@ vote_signal_enum_t CGovernanceVoting::ConvertVoteSignal(const std::string& strVo
CGovernanceVote::CGovernanceVote(const COutPoint& outpointMasternodeIn, const uint256& nParentHashIn, CGovernanceVote::CGovernanceVote(const COutPoint& outpointMasternodeIn, const uint256& nParentHashIn,
vote_signal_enum_t eVoteSignalIn, vote_outcome_enum_t eVoteOutcomeIn) : vote_signal_enum_t eVoteSignalIn, vote_outcome_enum_t eVoteOutcomeIn) :
nVoteSignal(eVoteSignalIn),
masternodeOutpoint(outpointMasternodeIn), masternodeOutpoint(outpointMasternodeIn),
nParentHash(nParentHashIn), nParentHash(nParentHashIn),
nVoteOutcome(eVoteOutcomeIn), nVoteOutcome(eVoteOutcomeIn),
nVoteSignal(eVoteSignalIn),
nTime(GetAdjustedTime()) nTime(GetAdjustedTime())
{ {
UpdateHash(); UpdateHash();
@ -197,15 +197,15 @@ bool CGovernanceVote::IsValid(const CDeterministicMNList& tip_mn_list, bool useV
return false; return false;
} }
// support up to MAX_SUPPORTED_VOTE_SIGNAL, can be extended if (nVoteSignal < VOTE_SIGNAL_NONE || nVoteSignal >= VOTE_SIGNAL_UNKNOWN) {
if (nVoteSignal > MAX_SUPPORTED_VOTE_SIGNAL) { LogPrint(BCLog::GOBJECT, "CGovernanceVote::IsValid -- Client attempted to vote on invalid signal(%d) - %s\n",
LogPrint(BCLog::GOBJECT, "CGovernanceVote::IsValid -- Client attempted to vote on invalid signal(%d) - %s\n", nVoteSignal, GetHash().ToString()); nVoteSignal, GetHash().ToString());
return false; return false;
} }
// 0=none, 1=yes, 2=no, 3=abstain. Beyond that reject votes if (nVoteOutcome < VOTE_OUTCOME_NONE || nVoteOutcome >= VOTE_OUTCOME_UNKNOWN) {
if (nVoteOutcome > 3) { LogPrint(BCLog::GOBJECT, "CGovernanceVote::IsValid -- Client attempted to vote on invalid outcome(%d) - %s\n",
LogPrint(BCLog::GOBJECT, "CGovernanceVote::IsValid -- Client attempted to vote on invalid outcome(%d) - %s\n", nVoteSignal, GetHash().ToString()); nVoteOutcome, GetHash().ToString());
return false; return false;
} }

View File

@ -18,24 +18,25 @@ class CKeyID;
class PeerManager; class PeerManager;
// INTENTION OF MASTERNODES REGARDING ITEM // INTENTION OF MASTERNODES REGARDING ITEM
enum vote_outcome_enum_t : uint8_t { enum vote_outcome_enum_t : int {
VOTE_OUTCOME_NONE = 0, VOTE_OUTCOME_NONE = 0,
VOTE_OUTCOME_YES = 1, VOTE_OUTCOME_YES,
VOTE_OUTCOME_NO = 2, VOTE_OUTCOME_NO,
VOTE_OUTCOME_ABSTAIN = 3 VOTE_OUTCOME_ABSTAIN,
VOTE_OUTCOME_UNKNOWN
}; };
template<> struct is_serializable_enum<vote_outcome_enum_t> : std::true_type {};
// SIGNAL VARIOUS THINGS TO HAPPEN: // SIGNAL VARIOUS THINGS TO HAPPEN:
enum vote_signal_enum_t : uint8_t { enum vote_signal_enum_t : int {
VOTE_SIGNAL_NONE = 0, VOTE_SIGNAL_NONE = 0,
VOTE_SIGNAL_FUNDING = 1, // -- fund this object for it's stated amount VOTE_SIGNAL_FUNDING, // -- fund this object for it's stated amount
VOTE_SIGNAL_VALID = 2, // -- this object checks out in sentinel engine VOTE_SIGNAL_VALID, // -- this object checks out in sentinel engine
VOTE_SIGNAL_DELETE = 3, // -- this object should be deleted from memory entirely VOTE_SIGNAL_DELETE, // -- this object should be deleted from memory entirely
VOTE_SIGNAL_ENDORSED = 4, // -- officially endorsed by the network somehow (delegation) VOTE_SIGNAL_ENDORSED, // -- officially endorsed by the network somehow (delegation)
VOTE_SIGNAL_UNKNOWN
}; };
template<> struct is_serializable_enum<vote_signal_enum_t> : std::true_type {};
static constexpr int MAX_SUPPORTED_VOTE_SIGNAL = VOTE_SIGNAL_ENDORSED;
/** /**
* Governance Voting * Governance Voting
@ -63,10 +64,10 @@ class CGovernanceVote
friend bool operator<(const CGovernanceVote& vote1, const CGovernanceVote& vote2); friend bool operator<(const CGovernanceVote& vote1, const CGovernanceVote& vote2);
private: private:
int nVoteSignal{VOTE_SIGNAL_NONE}; // see VOTE_ACTIONS above
COutPoint masternodeOutpoint; COutPoint masternodeOutpoint;
uint256 nParentHash; uint256 nParentHash;
int nVoteOutcome{VOTE_OUTCOME_NONE}; // see VOTE_OUTCOMES above vote_outcome_enum_t nVoteOutcome{VOTE_OUTCOME_NONE};
vote_signal_enum_t nVoteSignal{VOTE_SIGNAL_NONE};
int64_t nTime{0}; int64_t nTime{0};
std::vector<unsigned char> vchSig; std::vector<unsigned char> vchSig;
@ -80,9 +81,9 @@ public:
int64_t GetTimestamp() const { return nTime; } int64_t GetTimestamp() const { return nTime; }
vote_signal_enum_t GetSignal() const { return vote_signal_enum_t(nVoteSignal); } vote_signal_enum_t GetSignal() const { return nVoteSignal; }
vote_outcome_enum_t GetOutcome() const { return vote_outcome_enum_t(nVoteOutcome); } vote_outcome_enum_t GetOutcome() const { return nVoteOutcome; }
const uint256& GetParentHash() const { return nParentHash; } const uint256& GetParentHash() const { return nParentHash; }

View File

@ -39,7 +39,7 @@ enum class TransactionError;
struct CNodeStateStats; struct CNodeStateStats;
struct NodeContext; struct NodeContext;
enum vote_signal_enum_t : uint8_t; enum vote_signal_enum_t : int;
namespace interfaces { namespace interfaces {
class Handler; class Handler;