diff --git a/src/clientversion.h b/src/clientversion.h index f741b9d15..acbaa6f54 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -17,7 +17,7 @@ #define CLIENT_VERSION_MAJOR 0 #define CLIENT_VERSION_MINOR 12 #define CLIENT_VERSION_REVISION 1 -#define CLIENT_VERSION_BUILD 0 +#define CLIENT_VERSION_BUILD 1 //! Set to true for release, false for prerelease or test build #define CLIENT_VERSION_IS_RELEASE true diff --git a/src/governance-misc.h b/src/governance-misc.h index a64c4caf2..8db6c28ae 100644 --- a/src/governance-misc.h +++ b/src/governance-misc.h @@ -11,7 +11,7 @@ using namespace std; -class CBudgetVote; +class CGovernanceVote; /** * Triggers and Settings - 12.2 diff --git a/src/governance-vote.cpp b/src/governance-vote.cpp index 8c1f46e6b..62d2aee4e 100644 --- a/src/governance-vote.cpp +++ b/src/governance-vote.cpp @@ -18,11 +18,11 @@ #include -CBudgetVote::CBudgetVote() +CGovernanceVote::CGovernanceVote() { vinMasternode = CTxIn(); nParentHash = uint256(); - nVoteAction = VOTE_ACTION_NONE; + nVoteSignal = VOTE_SIGNAL_NONE; nVoteOutcome = VOTE_OUTCOME_NONE; nTime = 0; fValid = true; @@ -30,24 +30,24 @@ CBudgetVote::CBudgetVote() vchSig.clear(); } -CBudgetVote::CBudgetVote(CTxIn vinMasternodeIn, uint256 nParentHashIn, int nVoteActionIn, int nVoteOutcomeIn) +CGovernanceVote::CGovernanceVote(CTxIn vinMasternodeIn, uint256 nParentHashIn, int nVoteSignalIn, int nVoteOutcomeIn) { vinMasternode = vinMasternodeIn; nParentHash = nParentHashIn; - nVoteAction = nVoteActionIn; + nVoteSignal = nVoteSignalIn; nVoteOutcome = nVoteOutcomeIn; nTime = GetAdjustedTime(); fValid = true; fSynced = false; } -void CBudgetVote::Relay() +void CGovernanceVote::Relay() { CInv inv(MSG_BUDGET_VOTE, GetHash()); RelayInv(inv, MIN_BUDGET_PEER_PROTO_VERSION); } -bool CBudgetVote::Sign(CKey& keyMasternode, CPubKey& pubKeyMasternode) +bool CGovernanceVote::Sign(CKey& keyMasternode, CPubKey& pubKeyMasternode) { // Choose coins to use CPubKey pubKeyCollateralAddress; @@ -55,46 +55,46 @@ bool CBudgetVote::Sign(CKey& keyMasternode, CPubKey& pubKeyMasternode) std::string errorMessage; std::string strMessage = vinMasternode.prevout.ToStringShort() + "|" + nParentHash.ToString() + "|" + - boost::lexical_cast(nVoteAction) + "|" + boost::lexical_cast(nVoteOutcome) + "|" + boost::lexical_cast(nTime); + boost::lexical_cast(nVoteSignal) + "|" + boost::lexical_cast(nVoteOutcome) + "|" + boost::lexical_cast(nTime); if(!darkSendSigner.SignMessage(strMessage, errorMessage, vchSig, keyMasternode)) { - LogPrintf("CBudgetVote::Sign - Error upon calling SignMessage"); + LogPrintf("CGovernanceVote::Sign - Error upon calling SignMessage"); return false; } if(!darkSendSigner.VerifyMessage(pubKeyMasternode, vchSig, strMessage, errorMessage)) { - LogPrintf("CBudgetVote::Sign - Error upon calling VerifyMessage"); + LogPrintf("CGovernanceVote::Sign - Error upon calling VerifyMessage"); return false; } return true; } -bool CBudgetVote::IsValid(bool fSignatureCheck) +bool CGovernanceVote::IsValid(bool fSignatureCheck) { if(nTime > GetTime() + (60*60)){ - LogPrint("mngovernance", "CBudgetVote::IsValid() - vote is too far ahead of current time - %s - nTime %lli - Max Time %lli\n", GetHash().ToString(), nTime, GetTime() + (60*60)); + LogPrint("mngovernance", "CGovernanceVote::IsValid() - vote is too far ahead of current time - %s - nTime %lli - Max Time %lli\n", GetHash().ToString(), nTime, GetTime() + (60*60)); return false; } // support up to 50 actions (implemented in sentinel) - if(nVoteAction > 50) + if(nVoteSignal > 50) { - LogPrint("mngovernance", "CBudgetVote::IsValid() - Client attempted to vote on invalid action(%d) - %s\n", nVoteAction, GetHash().ToString()); + LogPrint("mngovernance", "CGovernanceVote::IsValid() - Client attempted to vote on invalid action(%d) - %s\n", nVoteSignal, GetHash().ToString()); return false; } // 0=none, 1=yes, 2=no, 3=abstain. Beyond that reject votes if(nVoteOutcome > 3) { - LogPrint("mngovernance", "CBudgetVote::IsValid() - Client attempted to vote on invalid outcome(%d) - %s\n", nVoteAction, GetHash().ToString()); + LogPrint("mngovernance", "CGovernanceVote::IsValid() - Client attempted to vote on invalid outcome(%d) - %s\n", nVoteSignal, GetHash().ToString()); return false; } CMasternode* pmn = mnodeman.Find(vinMasternode); if(pmn == NULL) { - LogPrint("mngovernance", "CBudgetVote::IsValid() - Unknown Masternode - %s\n", vinMasternode.ToString()); + LogPrint("mngovernance", "CGovernanceVote::IsValid() - Unknown Masternode - %s\n", vinMasternode.ToString()); return false; } @@ -102,10 +102,10 @@ bool CBudgetVote::IsValid(bool fSignatureCheck) std::string errorMessage; std::string strMessage = vinMasternode.prevout.ToStringShort() + "|" + nParentHash.ToString() + "|" + - boost::lexical_cast(nVoteAction) + "|" + boost::lexical_cast(nVoteOutcome) + "|" + boost::lexical_cast(nTime); + boost::lexical_cast(nVoteSignal) + "|" + boost::lexical_cast(nVoteOutcome) + "|" + boost::lexical_cast(nTime); if(!darkSendSigner.VerifyMessage(pmn->pubkey2, vchSig, strMessage, errorMessage)) { - LogPrintf("CBudgetVote::IsValid() - Verify message failed - Error: %s\n", errorMessage); + LogPrintf("CGovernanceVote::IsValid() - Verify message failed - Error: %s\n", errorMessage); return false; } diff --git a/src/governance-vote.h b/src/governance-vote.h index d78a37e94..5fe930726 100644 --- a/src/governance-vote.h +++ b/src/governance-vote.h @@ -17,7 +17,7 @@ using namespace std; -class CBudgetVote; +class CGovernanceVote; #define VOTE_OUTCOME_NONE 0 #define VOTE_OUTCOME_YES 1 @@ -25,44 +25,43 @@ class CBudgetVote; #define VOTE_OUTCOME_ABSTAIN 3 // INTENTION OF MASTERNODES REGARDING ITEM -#define VOTE_ACTION_NONE 0 // SIGNAL VARIOUS THINGS TO HAPPEN: -#define VOTE_ACTION_FUNDING 1 // -- fund this object for it's stated amount -#define VOTE_ACTION_VALID 2 // -- this object checks out to sentinel -#define VOTE_ACTION_DELETE 3 // -- this object should be deleted from memory entirely -#define VOTE_ACTION_CLEAR_REGISTERS 4 // -- this object's registers should be cleared (stored elsewhere, e.g. dashdrive) -#define VOTE_ACTION_ENDORSED 5 // -- officially endorsed by the network somehow (delegation) -#define VOTE_ACTION_RELEASE_BOUNTY1 6 // -- release the first bounty associated with this -#define VOTE_ACTION_RELEASE_BOUNTY2 7 // -- second -#define VOTE_ACTION_RELEASE_BOUNTY3 8 // -- third -#define VOTE_ACTION_NOOP1 9 // FOR FURTHER EXPANSION -#define VOTE_ACTION_NOOP2 10 // -#define VOTE_ACTION_NOOP3 11 // -#define VOTE_ACTION_NOOP4 12 // -#define VOTE_ACTION_NOOP5 13 // -#define VOTE_ACTION_NOOP6 14 // -#define VOTE_ACTION_NOOP7 15 // -#define VOTE_ACTION_CUSTOM_START 16 // SENTINEL CUSTOM ACTIONS -#define VOTE_ACTION_CUSTOM_END 35 // 16-35 +#define VOTE_SIGNAL_NONE 0 // SIGNAL VARIOUS THINGS TO HAPPEN: +#define VOTE_SIGNAL_FUNDING 1 // -- fund this object for it's stated amount +#define VOTE_SIGNAL_VALID 2 // -- this object checks out to sentinel +#define VOTE_SIGNAL_DELETE 3 // -- this object should be deleted from memory entirely +#define VOTE_SIGNAL_CLEAR_REGISTERS 4 // -- this object's registers should be cleared (stored elsewhere, e.g. dashdrive) +#define VOTE_SIGNAL_ENDORSED 5 // -- officially endorsed by the network somehow (delegation) +#define VOTE_SIGNAL_RELEASE_BOUNTY1 6 // -- release the first bounty associated with this +#define VOTE_SIGNAL_RELEASE_BOUNTY2 7 // -- second +#define VOTE_SIGNAL_RELEASE_BOUNTY3 8 // -- third +#define VOTE_SIGNAL_NOOP1 9 // FOR FURTHER EXPANSION +#define VOTE_SIGNAL_NOOP2 10 // +#define VOTE_SIGNAL_NOOP3 11 // +#define VOTE_SIGNAL_NOOP4 12 // +#define VOTE_SIGNAL_NOOP5 13 // +#define VOTE_SIGNAL_NOOP6 14 // +#define VOTE_SIGNAL_NOOP7 15 // +#define VOTE_SIGNAL_CUSTOM_START 16 // SENTINEL CUSTOM ACTIONS +#define VOTE_SIGNAL_CUSTOM_END 35 // 16-35 // -// CBudgetVote - Allow a masternode node to vote and broadcast throughout the network +// CGovernanceVote - Allow a masternode node to vote and broadcast throughout the network // -class CBudgetVote +class CGovernanceVote { - //# ---- public: bool fValid; //if the vote is currently valid / counted bool fSynced; //if we've sent this to our peers - int nVoteAction; // see VOTE_ACTIONS above + int nVoteSignal; // see VOTE_ACTIONS above CTxIn vinMasternode; uint256 nParentHash; int nVoteOutcome; // see VOTE_OUTCOMES above int64_t nTime; std::vector vchSig; - CBudgetVote(); - CBudgetVote(CTxIn vinMasternodeIn, uint256 nParentHashIn, int nVoteActionIn, int nVoteOutcomeIn); + CGovernanceVote(); + CGovernanceVote(CTxIn vinMasternodeIn, uint256 nParentHashIn, int nVoteSignalIn, int nVoteOutcomeIn); bool Sign(CKey& keyMasternode, CPubKey& pubKeyMasternode); bool IsValid(bool fSignatureCheck); @@ -81,7 +80,7 @@ public: CHashWriter ss(SER_GETHASH, PROTOCOL_VERSION); ss << vinMasternode; ss << nParentHash; - ss << nVoteAction; + ss << nVoteSignal; ss << nVoteOutcome; ss << nTime; return ss.GetHash(); @@ -94,7 +93,7 @@ public: READWRITE(vinMasternode); READWRITE(nParentHash); READWRITE(nVoteOutcome); - READWRITE(nVoteAction); + READWRITE(nVoteSignal); READWRITE(nTime); READWRITE(vchSig); } @@ -107,11 +106,6 @@ public: * ------------------------------- * - Class Structure: - - // parent hash vote hash vote - std::map > mapVotes; - GetVote(name, yes_no): - caching function - mark last accessed votes diff --git a/src/governance.cpp b/src/governance.cpp index 73614bafd..b53ac983e 100644 --- a/src/governance.cpp +++ b/src/governance.cpp @@ -23,8 +23,8 @@ class CNode; CGovernanceManager governance; CCriticalSection cs_budget; -std::map askedForSourceProposalOrBudget; -std::vector vecImmatureBudgetProposals; +std::map mapAskedForGovernanceObject; +std::vector vecImmatureGovernanceObjects; int nSubmittedFinalBudget; @@ -79,11 +79,11 @@ bool IsCollateralValid(uint256 nTxCollateralHash, uint256 nExpectedHash, std::st nConf = conf; //if we're syncing we won't have instantX information, so accept 1 confirmation - if(conf >= BUDGET_FEE_CONFIRMATIONS){ + if(conf >= GOVERNANCE_FEE_CONFIRMATIONS){ strError = "valid"; return true; } else { - strError = strprintf("Collateral requires at least %d confirmations - %d confirmations", BUDGET_FEE_CONFIRMATIONS, conf); + strError = strprintf("Collateral requires at least %d confirmations - %d confirmations", GOVERNANCE_FEE_CONFIRMATIONS, conf); LogPrintf ("CGovernanceObject::IsCollateralValid - %s - %d confirmations\n", strError, conf); return false; } @@ -94,28 +94,28 @@ void CGovernanceManager::CheckOrphanVotes() LOCK(cs); std::string strError = ""; - std::map::iterator it1 = mapOrphanMasternodeBudgetVotes.begin(); - while(it1 != mapOrphanMasternodeBudgetVotes.end()){ - if(UpdateProposal(((*it1).second), NULL, strError)){ + std::map::iterator it1 = mapOrphanVotes.begin(); + while(it1 != mapOrphanVotes.end()){ + if(UpdateGovernanceObject(((*it1).second), NULL, strError)){ LogPrintf("CGovernanceManager::CheckOrphanVotes - Proposal/Budget is known, activating and removing orphan vote\n"); - mapOrphanMasternodeBudgetVotes.erase(it1++); + mapOrphanVotes.erase(it1++); } else { ++it1; } } } -bool CGovernanceManager::AddProposal(CGovernanceObject& budgetProposal) +bool CGovernanceManager::AddGovernanceObject(CGovernanceObject& budgetProposal) { LOCK(cs); std::string strError = ""; if(!budgetProposal.IsValid(pCurrentBlockIndex, strError)) { - LogPrintf("CGovernanceManager::AddProposal - invalid governance object - %s\n", strError); + LogPrintf("CGovernanceManager::AddGovernanceObject - invalid governance object - %s\n", strError); return false; } if(mapObjects.count(budgetProposal.GetHash())) { - LogPrintf("CGovernanceManager::AddProposal - already have governance object - %s\n", strError); + LogPrintf("CGovernanceManager::AddGovernanceObject - already have governance object - %s\n", strError); return false; } @@ -151,9 +151,9 @@ CGovernanceObject *CGovernanceManager::FindProposal(const std::string &strName) std::map::iterator it = mapObjects.begin(); while(it != mapObjects.end()){ - if((*it).second.strName == strName && (*it).second.GetYesCount(VOTE_ACTION_FUNDING) > nYesCount){ + if((*it).second.strName == strName && (*it).second.GetYesCount(VOTE_SIGNAL_FUNDING) > nYesCount){ pbudgetProposal = &((*it).second); - nYesCount = pbudgetProposal->GetYesCount(VOTE_ACTION_FUNDING); + nYesCount = pbudgetProposal->GetYesCount(VOTE_SIGNAL_FUNDING); } ++it; } @@ -252,12 +252,12 @@ void CGovernanceManager::NewBlock() //remove invalid votes once in a while (we have to check the signatures and validity of every vote, somewhat CPU intensive) - std::map::iterator it = askedForSourceProposalOrBudget.begin(); - while(it != askedForSourceProposalOrBudget.end()){ + std::map::iterator it = mapAskedForGovernanceObject.begin(); + while(it != mapAskedForGovernanceObject.end()){ if((*it).second > GetTime() - (60*60*24)){ ++it; } else { - askedForSourceProposalOrBudget.erase(it++); + mapAskedForGovernanceObject.erase(it++); } } @@ -267,8 +267,8 @@ void CGovernanceManager::NewBlock() ++it2; } - std::vector::iterator it4 = vecImmatureBudgetProposals.begin(); - while(it4 != vecImmatureBudgetProposals.end()) + std::vector::iterator it4 = vecImmatureGovernanceObjects.begin(); + while(it4 != vecImmatureGovernanceObjects.end()) { std::string strError = ""; int nConf = 0; @@ -280,15 +280,15 @@ void CGovernanceManager::NewBlock() // 12.1 -- fix below // if(!(*it4).IsValid(pCurrentBlockIndex, strError)) { // LogPrintf("mprop (immature) - invalid budget proposal - %s\n", strError); - // it4 = vecImmatureBudgetProposals.erase(it4); + // it4 = vecImmatureGovernanceObjects.erase(it4); // continue; // } // CGovernanceObject budgetProposal((*it4)); - // if(AddProposal(budgetProposal)) {(*it4).Relay();} + // if(AddGovernanceObject(budgetProposal)) {(*it4).Relay();} // LogPrintf("mprop (immature) - new budget - %s\n", (*it4).GetHash().ToString()); - // it4 = vecImmatureBudgetProposals.erase(it4); + // it4 = vecImmatureGovernanceObjects.erase(it4); } } @@ -325,7 +325,7 @@ void CGovernanceManager::ProcessMessage(CNode* pfrom, std::string& strCommand, C CGovernanceObject budgetProposalBroadcast; vRecv >> budgetProposalBroadcast; - if(mapSeenMasternodeBudgetProposals.count(budgetProposalBroadcast.GetHash())){ + if(mapSeenGovernanceObjects.count(budgetProposalBroadcast.GetHash())){ // TODO - print error code? what if it's GOVOBJ_ERROR_IMMATURE? masternodeSync.AddedBudgetItem(budgetProposalBroadcast.GetHash()); return; @@ -336,21 +336,21 @@ void CGovernanceManager::ProcessMessage(CNode* pfrom, std::string& strCommand, C if(!IsCollateralValid(budgetProposalBroadcast.nFeeTXHash, budgetProposalBroadcast.GetHash(), strError, budgetProposalBroadcast.nTime, nConf, GOVERNANCE_FEE_TX)){ LogPrintf("Proposal FeeTX is not valid - %s - %s\n", budgetProposalBroadcast.nFeeTXHash.ToString(), strError); //todo 12.1 - //if(nConf >= 1) vecImmatureBudgetProposals.push_back(budgetProposalBroadcast); + //if(nConf >= 1) vecImmatureGovernanceObjects.push_back(budgetProposalBroadcast); return; } if(!budgetProposalBroadcast.IsValid(pCurrentBlockIndex, strError)) { - mapSeenMasternodeBudgetProposals.insert(make_pair(budgetProposalBroadcast.GetHash(), SEEN_OBJECT_ERROR_INVALID)); + mapSeenGovernanceObjects.insert(make_pair(budgetProposalBroadcast.GetHash(), SEEN_OBJECT_ERROR_INVALID)); LogPrintf("mprop - invalid budget proposal - %s\n", strError); return; } - if(AddProposal(budgetProposalBroadcast)) + if(AddGovernanceObject(budgetProposalBroadcast)) { budgetProposalBroadcast.Relay(); } - mapSeenMasternodeBudgetProposals.insert(make_pair(budgetProposalBroadcast.GetHash(), SEEN_OBJECT_IS_VALID)); + mapSeenGovernanceObjects.insert(make_pair(budgetProposalBroadcast.GetHash(), SEEN_OBJECT_IS_VALID)); masternodeSync.AddedBudgetItem(budgetProposalBroadcast.GetHash()); LogPrintf("mprop - new budget - %s\n", budgetProposalBroadcast.GetHash().ToString()); @@ -359,11 +359,11 @@ void CGovernanceManager::ProcessMessage(CNode* pfrom, std::string& strCommand, C } if (strCommand == NetMsgType::MNGOVERNANCEVOTE) { //Masternode Vote - CBudgetVote vote; + CGovernanceVote vote; vRecv >> vote; vote.fValid = true; - if(mapSeenMasternodeBudgetVotes.count(vote.GetHash())){ + if(mapSeenVotes.count(vote.GetHash())){ masternodeSync.AddedBudgetItem(vote.GetHash()); return; } @@ -375,7 +375,7 @@ void CGovernanceManager::ProcessMessage(CNode* pfrom, std::string& strCommand, C return; } - mapSeenMasternodeBudgetVotes.insert(make_pair(vote.GetHash(), SEEN_OBJECT_IS_VALID)); + mapSeenVotes.insert(make_pair(vote.GetHash(), SEEN_OBJECT_IS_VALID)); if(!vote.IsValid(true)){ LogPrintf("mvote - signature invalid\n"); if(masternodeSync.IsSynced()) Misbehaving(pfrom->GetId(), 20); @@ -385,7 +385,7 @@ void CGovernanceManager::ProcessMessage(CNode* pfrom, std::string& strCommand, C } std::string strError = ""; - if(UpdateProposal(vote, pfrom, strError)) { + if(UpdateGovernanceObject(vote, pfrom, strError)) { vote.Relay(); masternodeSync.AddedBudgetItem(vote.GetHash()); } @@ -409,7 +409,7 @@ bool CGovernanceManager::PropExists(uint256 nHash) // { // LOCK(cs); -// std::map >::iterator it1 = mapVotes.begin(); +// std::map >::iterator it1 = mapVotes.begin(); // while(it1 != mapVotes.end()){ // (*it1).second.second.fSynced = false; // ++it1; @@ -430,7 +430,7 @@ bool CGovernanceManager::PropExists(uint256 nHash) // // this could screw up syncing, so let's log it // LogPrintf("CGovernanceManager::MarkSynced\n"); -// std::map >::iterator it1 = mapVotes.begin(); +// std::map >::iterator it1 = mapVotes.begin(); // while(it1 != mapVotes.end()){ // if((*it1).second.second.fValid) // (*it1).second.second.fSynced = true; @@ -458,8 +458,8 @@ void CGovernanceManager::Sync(CNode* pfrom, uint256 nProp) int nInvCount = 0; // sync gov objects - std::map::iterator it1 = mapSeenMasternodeBudgetProposals.begin(); - while(it1 != mapSeenMasternodeBudgetProposals.end()){ + std::map::iterator it1 = mapSeenGovernanceObjects.begin(); + while(it1 != mapSeenGovernanceObjects.end()){ CGovernanceObject* pbudgetProposal = FindProposal((*it1).first); if(pbudgetProposal && pbudgetProposal->fCachedValid && ((nProp == uint256() || ((*it1).first == nProp)))){ // Push the inventory budget proposal message over to the other client @@ -470,7 +470,7 @@ void CGovernanceManager::Sync(CNode* pfrom, uint256 nProp) } // sync votes - std::map::iterator it2 = mapVotes.begin(); + std::map::iterator it2 = mapVotes.begin(); while(it2 != mapVotes.end()){ pfrom->PushInventory(CInv(MSG_BUDGET_VOTE, (*it2).first)); nInvCount++; @@ -482,7 +482,7 @@ void CGovernanceManager::Sync(CNode* pfrom, uint256 nProp) LogPrintf("CGovernanceManager::Sync - sent %d items\n", nInvCount); } -bool CGovernanceManager::UpdateProposal(CBudgetVote& vote, CNode* pfrom, std::string& strError) +bool CGovernanceManager::UpdateGovernanceObject(CGovernanceVote& vote, CNode* pfrom, std::string& strError) { LOCK(cs); @@ -492,12 +492,12 @@ bool CGovernanceManager::UpdateProposal(CBudgetVote& vote, CNode* pfrom, std::st // otherwise we'll think a full sync succeeded when they return a result if(!masternodeSync.IsSynced()) return false; - LogPrintf("CGovernanceManager::UpdateProposal - Unknown proposal %d, asking for source proposal\n", vote.nParentHash.ToString()); - mapOrphanMasternodeBudgetVotes[vote.nParentHash] = vote; + LogPrintf("CGovernanceManager::UpdateGovernanceObject - Unknown proposal %d, asking for source proposal\n", vote.nParentHash.ToString()); + mapOrphanVotes[vote.nParentHash] = vote; - if(!askedForSourceProposalOrBudget.count(vote.nParentHash)){ + if(!mapAskedForGovernanceObject.count(vote.nParentHash)){ pfrom->PushMessage(NetMsgType::MNGOVERNANCEVOTESYNC, vote.nParentHash); - askedForSourceProposalOrBudget[vote.nParentHash] = GetTime(); + mapAskedForGovernanceObject[vote.nParentHash] = GetTime(); } } @@ -509,12 +509,12 @@ bool CGovernanceManager::UpdateProposal(CBudgetVote& vote, CNode* pfrom, std::st return AddOrUpdateVote(vote, strError); } -bool CGovernanceManager::AddOrUpdateVote(CBudgetVote& vote, std::string& strError) +bool CGovernanceManager::AddOrUpdateVote(CGovernanceVote& vote, std::string& strError) { LOCK(cs); // store newest vote per action - arith_uint256 a = UintToArith256(vote.nParentHash) + vote.nVoteAction; + arith_uint256 a = UintToArith256(vote.nParentHash) + vote.nVoteSignal; uint256 hash2 = ArithToUint256(a); if(mapVotes.count(hash2)) @@ -524,7 +524,7 @@ bool CGovernanceManager::AddOrUpdateVote(CBudgetVote& vote, std::string& strErro LogPrint("mngovernance", "CGovernanceObject::AddOrUpdateVote - %s\n", strError); return false; } - if(vote.nTime - mapVotes[hash2].nTime < BUDGET_VOTE_UPDATE_MIN){ + if(vote.nTime - mapVotes[hash2].nTime < GOVERNANCE_UPDATE_MIN){ strError = strprintf("time between votes is too soon - %s - %lli", vote.GetHash().ToString(), vote.nTime - mapVotes[hash2].nTime); LogPrint("mngovernance", "CGovernanceObject::AddOrUpdateVote - %s\n", strError); return false; @@ -554,7 +554,6 @@ CGovernanceObject::CGovernanceObject() fCachedReleaseBounty2 = false; fCachedReleaseBounty3 = false; - nHash = uint256(); } CGovernanceObject::CGovernanceObject(uint256 nHashParentIn, int nRevisionIn, std::string strNameIn, int64_t nTime, uint256 nFeeTXHashIn) @@ -585,7 +584,7 @@ CGovernanceObject::CGovernanceObject(const CGovernanceObject& other) bool CGovernanceObject::IsValid(const CBlockIndex* pindex, std::string& strError, bool fCheckCollateral) { - if(GetNoCount(VOTE_ACTION_VALID) - GetYesCount(VOTE_ACTION_VALID) > mnodeman.CountEnabled(MIN_BUDGET_PEER_PROTO_VERSION)/10){ + if(GetNoCount(VOTE_SIGNAL_VALID) - GetYesCount(VOTE_SIGNAL_VALID) > mnodeman.CountEnabled(MIN_BUDGET_PEER_PROTO_VERSION)/10){ strError = "Automated removal"; return false; } @@ -653,7 +652,7 @@ void CGovernanceManager::CleanAndRemove(bool fSignatureCheck) * */ - // std::map::iterator it2 = mapVotes.begin(); + // std::map::iterator it2 = mapVotes.begin(); // while(it2 != mapVotes.end()){ // if(!(*it2).second.IsValid(fSignatureCheck)) // { @@ -670,24 +669,24 @@ void CGovernanceManager::CleanAndRemove(bool fSignatureCheck) * Get specific vote counts for each outcome (funding, validity, etc) */ -int CGovernanceObject::GetAbsoluteYesCount(int nVoteOutcomeIn) +int CGovernanceObject::GetAbsoluteYesCount(int nVoteSignalIn) { - return governance.CountMatchingAbsoluteVotes(nVoteOutcomeIn, VOTE_OUTCOME_YES) - governance.CountMatchingAbsoluteVotes(nVoteOutcomeIn, VOTE_OUTCOME_NO); + return governance.CountMatchingVotes(nVoteSignalIn, VOTE_OUTCOME_YES) - governance.CountMatchingVotes(nVoteSignalIn, VOTE_OUTCOME_NO); } -int CGovernanceObject::GetYesCount(int nVoteOutcomeIn) +int CGovernanceObject::GetYesCount(int nVoteSignalIn) { - return governance.CountMatchingAbsoluteVotes(nVoteOutcomeIn, VOTE_OUTCOME_YES); + return governance.CountMatchingVotes(nVoteSignalIn, VOTE_OUTCOME_YES); } -int CGovernanceObject::GetNoCount(int nVoteOutcomeIn) +int CGovernanceObject::GetNoCount(int nVoteSignalIn) { - return governance.CountMatchingAbsoluteVotes(nVoteOutcomeIn, VOTE_OUTCOME_NO); + return governance.CountMatchingVotes(nVoteSignalIn, VOTE_OUTCOME_NO); } -int CGovernanceObject::GetAbstainCount(int nVoteOutcomeIn) +int CGovernanceObject::GetAbstainCount(int nVoteSignalIn) { - return governance.CountMatchingAbsoluteVotes(nVoteOutcomeIn, VOTE_OUTCOME_ABSTAIN); + return governance.CountMatchingVotes(nVoteSignalIn, VOTE_OUTCOME_ABSTAIN); } void CGovernanceObject::Relay() @@ -701,8 +700,8 @@ std::string CGovernanceManager::ToString() const std::ostringstream info; info << "Governance Objects: " << (int)mapObjects.size() << - ", Seen Budgets: " << (int)mapSeenMasternodeBudgetProposals.size() << - ", Seen Budget Votes: " << (int)mapSeenMasternodeBudgetVotes.size() << + ", Seen Budgets: " << (int)mapSeenGovernanceObjects.size() << + ", Seen Budget Votes: " << (int)mapSeenVotes.size() << ", Vote Count: " << (int)mapVotes.size(); return info.str(); @@ -717,7 +716,7 @@ void CGovernanceManager::UpdatedBlockTip(const CBlockIndex *pindex) NewBlock(); } -int CGovernanceManager::CountMatchingAbsoluteVotes(int nVoteActionIn, int nVoteOutcomeIn) +int CGovernanceManager::CountMatchingVotes(int nVoteSignalIn, int nVoteOutcomeIn) { /* * @@ -727,10 +726,9 @@ int CGovernanceManager::CountMatchingAbsoluteVotes(int nVoteActionIn, int nVoteO int nCount = 0; - std::map::iterator it2 = mapVotes.begin(); + std::map::iterator it2 = mapVotes.begin(); while(it2 != mapVotes.end()){ - //if(!(*it2).second.IsValid(true) && (*it2).second.nVoteAction == nVoteActionIn) - if((*it2).second.IsValid(true) && (*it2).second.nVoteAction == nVoteActionIn) + if((*it2).second.fValid && (*it2).second.nVoteSignal == nVoteSignalIn) { nCount += ((*it2).second.nVoteOutcome == nVoteOutcomeIn ? 1 : 0); ++it2; diff --git a/src/governance.h b/src/governance.h index 040646ae1..9354e9242 100644 --- a/src/governance.h +++ b/src/governance.h @@ -22,26 +22,17 @@ using namespace std; extern CCriticalSection cs_budget; -// note: is there a reason these are static? -// http://stackoverflow.com/questions/3709207/c-semantics-of-static-const-vs-const -static const CAmount BUDGET_FEE_TX = (5*COIN); -static const int64_t BUDGET_FEE_CONFIRMATIONS = 6; -static const int64_t BUDGET_VOTE_UPDATE_MIN = 60*60; -static const int64_t CONTRACT_ACTIVATION_TIME = 60*60*24*14; - - class CGovernanceManager; class CGovernanceObject; -class CBudgetVote; +class CGovernanceVote; class CNode; -// todo - 12.1 - change BUDGET_ to GOVERNANCE_ (cherry pick) static const CAmount GOVERNANCE_FEE_TX = (5*COIN); static const int64_t GOVERNANCE_FEE_CONFIRMATIONS = 6; static const int64_t GOVERNANCE_UPDATE_MIN = 60*60; -extern std::vector vecImmatureBudgetProposals; -extern std::map askedForSourceProposalOrBudget; +extern std::vector vecImmatureGovernanceObjects; +extern std::map mapAskedForGovernanceObject; extern CGovernanceManager governance; // FOR SEEN MAP ARRAYS - GOVERNANCE OBJECTS AND VOTES @@ -75,23 +66,23 @@ public: map mapObjects; // todo - 12.1 - move to private for better encapsulation - std::map mapSeenMasternodeBudgetProposals; - std::map mapSeenMasternodeBudgetVotes; - std::map mapOrphanMasternodeBudgetVotes; - std::map mapVotes; + std::map mapSeenGovernanceObjects; + std::map mapSeenVotes; + std::map mapOrphanVotes; + std::map mapVotes; CGovernanceManager() { mapObjects.clear(); } void ClearSeen() { - mapSeenMasternodeBudgetProposals.clear(); - mapSeenMasternodeBudgetVotes.clear(); + mapSeenGovernanceObjects.clear(); + mapSeenVotes.clear(); } int CountProposalInventoryItems() { - return mapSeenMasternodeBudgetProposals.size() + mapSeenMasternodeBudgetVotes.size(); + return mapSeenGovernanceObjects.size() + mapSeenVotes.size(); } int sizeProposals() {return (int)mapObjects.size();} @@ -111,14 +102,16 @@ public: std::vector GetAllProposals(int64_t nMoreThanTime); + int CountMatchingVotes(int nVoteSignalIn, int nVoteOutcomeIn); + bool IsBudgetPaymentBlock(int nBlockHeight); - bool AddProposal(CGovernanceObject& budgetProposal); - bool UpdateProposal(CBudgetVote& vote, CNode* pfrom, std::string& strError); - bool AddOrUpdateVote(CBudgetVote& vote, std::string& strError); + bool AddGovernanceObject (CGovernanceObject& budgetProposal); + bool UpdateGovernanceObject(CGovernanceVote& vote, CNode* pfrom, std::string& strError); + bool AddOrUpdateVote(CGovernanceVote& vote, std::string& strError); bool PropExists(uint256 nHash); std::string GetRequiredPaymentsString(int nBlockHeight); void CleanAndRemove(bool fSignatureCheck); - int CountMatchingAbsoluteVotes(int nVoteTypeIn, int nVoteOutcomeIn); + void CheckAndRemove(); void CheckOrphanVotes(); void Clear(){ @@ -126,20 +119,19 @@ public: LogPrintf("Budget object cleared\n"); mapObjects.clear(); - mapSeenMasternodeBudgetProposals.clear(); - mapSeenMasternodeBudgetVotes.clear(); - mapOrphanMasternodeBudgetVotes.clear(); + mapSeenGovernanceObjects.clear(); + mapSeenVotes.clear(); + mapOrphanVotes.clear(); } - void CheckAndRemove(); std::string ToString() const; ADD_SERIALIZE_METHODS; template inline void SerializationOp(Stream& s, Operation ser_action, int nType, int nVersion) { - READWRITE(mapSeenMasternodeBudgetProposals); - READWRITE(mapSeenMasternodeBudgetVotes); - READWRITE(mapOrphanMasternodeBudgetVotes); + READWRITE(mapSeenGovernanceObjects); + READWRITE(mapSeenVotes); + READWRITE(mapOrphanVotes); READWRITE(mapObjects); READWRITE(mapVotes); } @@ -149,35 +141,6 @@ public: void UpdateLastDiffTime(int64_t nTimeIn) {nTimeLastDiff=nTimeIn;} }; -/** -* Governance objects can hold any type of data -* -------------------------------------------- -* -*/ - -class CGovernanceObjectRegister -{ -private: - int nType; - std::string strReg; - -public: - CGovernanceObjectRegister(int nTypeIn, char* strRegIn) - { - nType = nTypeIn; - strReg = strRegIn; - } - - ADD_SERIALIZE_METHODS; - - template - inline void SerializationOp(Stream& s, Operation ser_action, int nType, int nVersion) { - //for syncing with other clients - READWRITE(nType); - READWRITE(LIMITED_STRING(strReg, 255)); - } -}; - /** * Generic Governance Object * @@ -198,7 +161,8 @@ public: std::string strName; //org name, username, prop name, etc. int64_t nTime; //time this object was created uint256 nFeeTXHash; //fee-tx - + std::string strData; // Data field - can be used for anything + // caching -- one per voting mechanism -- see governance-vote.h for more information bool fCachedFunding; bool fCachedValid; @@ -209,11 +173,6 @@ public: bool fCachedReleaseBounty2; bool fCachedReleaseBounty3; - uint256 nHash; - - // Data field - can be used for anything - std::string strData; - CGovernanceObject(); CGovernanceObject(uint256 nHashParentIn, int nRevisionIn, std::string strNameIn, int64_t nTime, uint256 nFeeTXHashIn); CGovernanceObject(const CGovernanceObject& other); @@ -231,6 +190,7 @@ public: swap(first.nRevision, second.nRevision); swap(first.nTime, second.nTime); swap(first.nFeeTXHash, second.nFeeTXHash); + swap(first.strData, second.strData); // swap all cached valid flags swap(first.fCachedFunding, second.fCachedFunding); @@ -242,8 +202,6 @@ public: swap(first.fCachedReleaseBounty2, second.fCachedReleaseBounty2); swap(first.fCachedReleaseBounty3, second.fCachedReleaseBounty3); - swap(first.nHash, second.nHash); - swap(first.strData, second.strData); } bool HasMinimumRequiredSupport(); @@ -252,10 +210,10 @@ public: std::string GetName() {return strName; } // get vote counts on each outcome - int GetAbsoluteYesCount(int nVoteOutcomeIn); - int GetYesCount(int nVoteOutcomeIn); - int GetNoCount(int nVoteOutcomeIn); - int GetAbstainCount(int nVoteOutcomeIn); + int GetAbsoluteYesCount(int nVoteSignalIn); + int GetYesCount(int nVoteSignalIn); + int GetNoCount(int nVoteSignalIn); + int GetAbstainCount(int nVoteSignalIn); void CleanAndRemove(bool fSignatureCheck); void Relay(); @@ -333,9 +291,7 @@ public: READWRITE(LIMITED_STRING(strName, 64)); READWRITE(nTime); READWRITE(nFeeTXHash); - - // todo - 12.1 - serialize map - //READWRITE(mapRegister); + READWRITE(strData); } }; diff --git a/src/main.cpp b/src/main.cpp index ffae361ef..461909d4a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4356,10 +4356,10 @@ bool static AlreadyHave(const CInv& inv) EXCLUSIVE_LOCKS_REQUIRED(cs_main) return mnpayments.mapMasternodePayeeVotes.count(inv.hash); case MSG_BUDGET_VOTE: - return governance.mapSeenMasternodeBudgetVotes.count(inv.hash); + return governance.mapSeenVotes.count(inv.hash); case MSG_BUDGET_PROPOSAL: - return governance.mapSeenMasternodeBudgetProposals.count(inv.hash); + return governance.mapSeenGovernanceObjects.count(inv.hash); case MSG_MASTERNODE_ANNOUNCE: return mnodeman.mapSeenMasternodeBroadcast.count(inv.hash); @@ -4527,20 +4527,20 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam } } if (!pushed && inv.type == MSG_BUDGET_VOTE) { - if(governance.mapSeenMasternodeBudgetVotes.count(inv.hash)){ + if(governance.mapSeenVotes.count(inv.hash)){ CDataStream ss(SER_NETWORK, PROTOCOL_VERSION); ss.reserve(1000); - ss << governance.mapSeenMasternodeBudgetVotes[inv.hash]; + ss << governance.mapSeenVotes[inv.hash]; pfrom->PushMessage(NetMsgType::MNGOVERNANCEVOTE, ss); pushed = true; } } if (!pushed && inv.type == MSG_BUDGET_PROPOSAL) { - if(governance.mapSeenMasternodeBudgetProposals.count(inv.hash)){ + if(governance.mapSeenGovernanceObjects.count(inv.hash)){ CDataStream ss(SER_NETWORK, PROTOCOL_VERSION); ss.reserve(1000); - ss << governance.mapSeenMasternodeBudgetProposals[inv.hash]; + ss << governance.mapSeenGovernanceObjects[inv.hash]; pfrom->PushMessage(NetMsgType::MNGOVERNANCEPROPOSAL, ss); pushed = true; } diff --git a/src/masternode-budget.cpp b/src/masternode-budget.cpp index 03cda16c5..de06dbaea 100644 --- a/src/masternode-budget.cpp +++ b/src/masternode-budget.cpp @@ -57,7 +57,7 @@ struct sortProposalsByVotes { // if(pfinalizedBudget && pfinalizedBudget->fValid){ // //mark votes -// std::map::iterator it4 = pfinalizedBudget->mapVotes.begin(); +// std::map::iterator it4 = pfinalizedBudget->mapVotes.begin(); // while(it4 != pfinalizedBudget->mapVotes.end()){ // if((*it4).second.fValid) // (*it4).second.fSynced = true; @@ -80,7 +80,7 @@ struct sortProposalsByVotes { // if(pfinalizedBudget && pfinalizedBudget->fValid){ // //send votes -// std::map::iterator it4 = pfinalizedBudget->mapVotes.begin(); +// std::map::iterator it4 = pfinalizedBudget->mapVotes.begin(); // while(it4 != pfinalizedBudget->mapVotes.end()){ // (*it4).second.fSynced = false; // ++it4; @@ -117,7 +117,7 @@ void CBudgetManager::Sync(CNode* pfrom, uint256 nProp, bool fPartial) nInvCount++; //send votes - std::map::iterator it4 = pfinalizedBudget->mapVotes.begin(); + std::map::iterator it4 = pfinalizedBudget->mapVotes.begin(); while(it4 != pfinalizedBudget->mapVotes.end()){ if((*it4).second.fValid) { if((fPartial && !(*it4).second.fSynced) || !fPartial) { @@ -176,7 +176,7 @@ void CBudgetManager::ProcessMessage(CNode* pfrom, std::string& strCommand, CData std::string strError = ""; int nConf = 0; - if(!IsCollateralValid(finalizedBudgetBroadcast.nFeeTXHash, finalizedBudgetBroadcast.GetHash(), strError, finalizedBudgetBroadcast.nTime, nConf, BUDGET_FEE_TX)){ + if(!IsCollateralValid(finalizedBudgetBroadcast.nFeeTXHash, finalizedBudgetBroadcast.GetHash(), strError, finalizedBudgetBroadcast.nTime, nConf, GOVERNANCE_FEE_TX)){ LogPrintf("Finalized Budget FeeTX is not valid - %s - %s\n", finalizedBudgetBroadcast.nFeeTXHash.ToString(), strError); if(nConf >= 1) vecImmatureFinalizedBudgets.push_back(finalizedBudgetBroadcast); @@ -201,7 +201,7 @@ void CBudgetManager::ProcessMessage(CNode* pfrom, std::string& strCommand, CData } if (strCommand == NetMsgType::MNGOVERNANCEFINALVOTE) { //Finalized Budget Vote - CBudgetVote vote; + CGovernanceVote vote; vRecv >> vote; vote.fValid = true; @@ -266,7 +266,7 @@ void CBudgetManager::NewBlock() { std::string strError = ""; int nConf = 0; - if(!IsCollateralValid((*it5).nFeeTXHash, (*it5).GetHash(), strError, (*it5).nTime, nConf, BUDGET_FEE_TX)){ + if(!IsCollateralValid((*it5).nFeeTXHash, (*it5).GetHash(), strError, (*it5).nTime, nConf, GOVERNANCE_FEE_TX)){ ++it5; continue; } @@ -402,7 +402,7 @@ bool CBudgetManager::HasNextFinalizedBudget() return false; } -bool CBudgetManager::UpdateFinalizedBudget(CBudgetVote& vote, CNode* pfrom, std::string& strError) +bool CBudgetManager::UpdateFinalizedBudget(CGovernanceVote& vote, CNode* pfrom, std::string& strError) { LOCK(cs); @@ -415,9 +415,9 @@ bool CBudgetManager::UpdateFinalizedBudget(CBudgetVote& vote, CNode* pfrom, std: LogPrintf("CBudgetManager::UpdateFinalizedBudget - Unknown Finalized Proposal %s, asking for source budget\n", vote.nBudgetHash.ToString()); mapOrphanFinalizedBudgetVotes[vote.nBudgetHash] = vote; - if(!askedForSourceProposalOrBudget.count(vote.nBudgetHash)){ + if(!mapAskedForGovernanceObject.count(vote.nBudgetHash)){ pfrom->PushMessage(NetMsgType::MNGOVERNANCEVOTESYNC, vote.nBudgetHash); - askedForSourceProposalOrBudget[vote.nBudgetHash] = GetTime(); + mapAskedForGovernanceObject[vote.nBudgetHash] = GetTime(); } } @@ -562,7 +562,7 @@ void CBudgetManager::CheckOrphanVotes() std::string strError = ""; - std::map::iterator it2 = mapOrphanFinalizedBudgetVotes.begin(); + std::map::iterator it2 = mapOrphanFinalizedBudgetVotes.begin(); while(it2 != mapOrphanFinalizedBudgetVotes.end()){ if(UpdateFinalizedBudget(((*it2).second),NULL, strError)){ LogPrintf("CBudgetManager::CheckOrphanVotes - Proposal/Budget is known, activating and removing orphan vote\n"); @@ -654,7 +654,7 @@ CFinalizedBudget::CFinalizedBudget(const CFinalizedBudget& other) fAutoChecked = false; } -bool CFinalizedBudget::AddOrUpdateVote(CBudgetVote& vote, std::string& strError) +bool CFinalizedBudget::AddOrUpdateVote(CGovernanceVote& vote, std::string& strError) { LOCK(cs); @@ -665,7 +665,7 @@ bool CFinalizedBudget::AddOrUpdateVote(CBudgetVote& vote, std::string& strError) LogPrint("mngovernance", "CFinalizedBudget::AddOrUpdateVote - %s\n", strError); return false; } - if(vote.nTime - mapVotes[hash].nTime < BUDGET_VOTE_UPDATE_MIN){ + if(vote.nTime - mapVotes[hash].nTime < GOVERNANCE_VOTE_UPDATE_MIN){ strError = strprintf("time between votes is too soon - %s - %lli", vote.GetHash().ToString(), vote.nTime - mapVotes[hash].nTime); LogPrint("mngovernance", "CFinalizedBudget::AddOrUpdateVote - %s\n", strError); return false; @@ -757,7 +757,7 @@ void CFinalizedBudget::AutoCheck() // If masternode voted for a proposal, but is now invalid -- remove the vote void CFinalizedBudget::CleanAndRemove(bool fSignatureCheck) { - std::map::iterator it = mapVotes.begin(); + std::map::iterator it = mapVotes.begin(); while(it != mapVotes.end()) { (*it).second.fValid = (*it).second.IsValid(fSignatureCheck); @@ -847,7 +847,7 @@ bool CFinalizedBudget::IsValid(const CBlockIndex* pindex, std::string& strError, std::string strError2 = ""; if(fCheckCollateral){ int nConf = 0; - if(!IsCollateralValid(nFeeTXHash, GetHash(), strError2, nTime, nConf, BUDGET_FEE_TX)){ + if(!IsCollateralValid(nFeeTXHash, GetHash(), strError2, nTime, nConf, GOVERNANCE_FEE_TX)){ strError = "Invalid Collateral : " + strError2; return false; } @@ -906,7 +906,7 @@ void CFinalizedBudget::SubmitVote() return; } - CBudgetVote vote(activeMasternode.vin, GetHash()); + CGovernanceVote vote(activeMasternode.vin, GetHash()); if(!vote.Sign(keyMasternode, pubKeyMasternode)){ LogPrintf("CFinalizedBudget::SubmitVote - Failure to sign."); return; @@ -957,7 +957,7 @@ void CFinalizedBudget::Relay() RelayInv(inv, MIN_BUDGET_PEER_PROTO_VERSION); } -CBudgetVote::CBudgetVote() +CGovernanceVote::CGovernanceVote() { vin = CTxIn(); nBudgetHash = uint256(); @@ -967,7 +967,7 @@ CBudgetVote::CBudgetVote() fSynced = false; } -CBudgetVote::CBudgetVote(CTxIn vinIn, uint256 nBudgetHashIn) +CGovernanceVote::CGovernanceVote(CTxIn vinIn, uint256 nBudgetHashIn) { vin = vinIn; nBudgetHash = nBudgetHashIn; @@ -977,13 +977,13 @@ CBudgetVote::CBudgetVote(CTxIn vinIn, uint256 nBudgetHashIn) fSynced = false; } -void CBudgetVote::Relay() +void CGovernanceVote::Relay() { CInv inv(MSG_BUDGET_FINALIZED_VOTE, GetHash()); RelayInv(inv, MIN_BUDGET_PEER_PROTO_VERSION); } -bool CBudgetVote::Sign(CKey& keyMasternode, CPubKey& pubKeyMasternode) +bool CGovernanceVote::Sign(CKey& keyMasternode, CPubKey& pubKeyMasternode) { // Choose coins to use CPubKey pubKeyCollateralAddress; @@ -993,22 +993,22 @@ bool CBudgetVote::Sign(CKey& keyMasternode, CPubKey& pubKeyMasternode) std::string strMessage = vin.prevout.ToStringShort() + nBudgetHash.ToString() + boost::lexical_cast(nTime); if(!darkSendSigner.SignMessage(strMessage, errorMessage, vchSig, keyMasternode)) { - LogPrintf("CBudgetVote::Sign - Error upon calling SignMessage"); + LogPrintf("CGovernanceVote::Sign - Error upon calling SignMessage"); return false; } if(!darkSendSigner.VerifyMessage(pubKeyMasternode, vchSig, strMessage, errorMessage)) { - LogPrintf("CBudgetVote::Sign - Error upon calling VerifyMessage"); + LogPrintf("CGovernanceVote::Sign - Error upon calling VerifyMessage"); return false; } return true; } -bool CBudgetVote::IsValid(bool fSignatureCheck) +bool CGovernanceVote::IsValid(bool fSignatureCheck) { if(nTime > GetTime() + (60*60)){ - LogPrint("mngovernance", "CBudgetVote::IsValid() - vote is too far ahead of current time - %s - nTime %lli - Max Time %lli\n", GetHash().ToString(), nTime, GetTime() + (60*60)); + LogPrint("mngovernance", "CGovernanceVote::IsValid() - vote is too far ahead of current time - %s - nTime %lli - Max Time %lli\n", GetHash().ToString(), nTime, GetTime() + (60*60)); return false; } @@ -1016,7 +1016,7 @@ bool CBudgetVote::IsValid(bool fSignatureCheck) if(pmn == NULL) { - LogPrint("mngovernance", "CBudgetVote::IsValid() - Unknown Masternode\n"); + LogPrint("mngovernance", "CGovernanceVote::IsValid() - Unknown Masternode\n"); return false; } @@ -1026,7 +1026,7 @@ bool CBudgetVote::IsValid(bool fSignatureCheck) std::string strMessage = vin.prevout.ToStringShort() + nBudgetHash.ToString() + boost::lexical_cast(nTime); if(!darkSendSigner.VerifyMessage(pmn->pubkey2, vchSig, strMessage, errorMessage)) { - LogPrintf("CBudgetVote::IsValid() - Verify message failed\n"); + LogPrintf("CGovernanceVote::IsValid() - Verify message failed\n"); return false; } diff --git a/src/rpcmasternode-budget.cpp b/src/rpcmasternode-budget.cpp index ed23c5617..1efafc56f 100644 --- a/src/rpcmasternode-budget.cpp +++ b/src/rpcmasternode-budget.cpp @@ -22,32 +22,32 @@ using namespace std; -int ConvertVoteOutcome(std::string strVoteAction) +int ConvertVoteOutcome(std::string strVoteOutcome) { int nVote = -1; - if(strVoteAction == "yes") nVote = VOTE_OUTCOME_YES; - if(strVoteAction == "no") nVote = VOTE_OUTCOME_NO; - if(strVoteAction == "abstain") nVote = VOTE_OUTCOME_ABSTAIN; - if(strVoteAction == "none") nVote = VOTE_OUTCOME_NONE; + if(strVoteOutcome == "yes") nVote = VOTE_OUTCOME_YES; + if(strVoteOutcome == "no") nVote = VOTE_OUTCOME_NO; + if(strVoteOutcome == "abstain") nVote = VOTE_OUTCOME_ABSTAIN; + if(strVoteOutcome == "none") nVote = VOTE_OUTCOME_NONE; return nVote; } -int ConvertVoteAction(std::string strVoteOutcome) +int ConvertVoteSignal(std::string strVoteSignal) { - if(strVoteOutcome == "none") return 0; - if(strVoteOutcome == "funding") return 1; - if(strVoteOutcome == "valid") return 2; - if(strVoteOutcome == "delete") return 3; - if(strVoteOutcome == "clear_registers") return 4; - if(strVoteOutcome == "endorsed") return 5; - if(strVoteOutcome == "release_bounty1") return 6; - if(strVoteOutcome == "release_bounty2") return 7; - if(strVoteOutcome == "release_bounty3") return 8; + if(strVoteSignal == "none") return 0; + if(strVoteSignal == "funding") return 1; + if(strVoteSignal == "valid") return 2; + if(strVoteSignal == "delete") return 3; + if(strVoteSignal == "clear_registers") return 4; + if(strVoteSignal == "endorsed") return 5; + if(strVoteSignal == "release_bounty1") return 6; + if(strVoteSignal == "release_bounty2") return 7; + if(strVoteSignal == "release_bounty3") return 8; // convert custom sentinel outcomes to integer and store try { - int i = boost::lexical_cast(strVoteOutcome); - if(i < VOTE_ACTION_CUSTOM_START || i > VOTE_ACTION_CUSTOM_END) return -1; + int i = boost::lexical_cast(strVoteSignal); + if(i < VOTE_SIGNAL_CUSTOM_START || i > VOTE_SIGNAL_CUSTOM_END) return -1; return i; } catch(std::exception const & e) @@ -117,7 +117,6 @@ UniValue mngovernance(const UniValue& params, bool fHelp) if (params.size() != 6) throw JSONRPCError(RPC_INVALID_PARAMETER, "Correct usage is 'mngovernance prepare