Skip to content

Commit

Permalink
CMasternodePaymentWinner::IsValid() pass CValidationState instead of …
Browse files Browse the repository at this point in the history
…error std::string.
  • Loading branch information
furszy committed Oct 12, 2021
1 parent 0af1572 commit 48d8770
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 10 deletions.
17 changes: 8 additions & 9 deletions src/masternode-payments.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,24 +161,24 @@ std::string CMasternodePaymentWinner::GetStrMessage() const
return vinMasternode.prevout.ToStringShort() + std::to_string(nBlockHeight) + HexStr(payee);
}

bool CMasternodePaymentWinner::IsValid(CNode* pnode, std::string& strError, int chainHeight)
bool CMasternodePaymentWinner::IsValid(CNode* pnode, CValidationState& state, int chainHeight)
{
int n = mnodeman.GetMasternodeRank(vinMasternode, nBlockHeight - 100);
if (n < 1 || n > MNPAYMENTS_SIGNATURES_TOTAL) {
//It's common to have masternodes mistakenly think they are in the top 10
// We don't want to print all of these messages, or punish them unless they're way off
std::string strError = strprintf("Masternode not in the top %d (%d)", MNPAYMENTS_SIGNATURES_TOTAL, n);
if (n > MNPAYMENTS_SIGNATURES_TOTAL * 2) {
strError = strprintf("Masternode not in the top %d (%d)", MNPAYMENTS_SIGNATURES_TOTAL * 2, n);
LogPrint(BCLog::MASTERNODE,"CMasternodePaymentWinner::IsValid - %s\n", strError);
//if (masternodeSync.IsSynced()) Misbehaving(pnode->GetId(), 20);
}
return false;
return state.Error(strError);
}

// Must be a P2PKH
if (!payee.IsPayToPublicKeyHash()) {
LogPrint(BCLog::MASTERNODE, "%s - payee must be a P2PKH\n", __func__);
return false;
return state.Error("payee must be a P2PKH");
}

return true;
Expand Down Expand Up @@ -467,10 +467,9 @@ bool CMasternodePayments::ProcessMNWinner(CMasternodePaymentWinner& winner, CNod
return state.Error("mnw old message version");
}

std::string strError = "";
if (!winner.IsValid(pfrom, strError, nHeight)) {
// if(strError != "") LogPrint(BCLog::MASTERNODE,"mnw - invalid message - %s\n", strError);
return state.Error(strError);
if (!winner.IsValid(pfrom, state, nHeight)) {
// error cause set internally
return false;
}

if (!masternodePayments.CanVote(winner.vinMasternode.prevout, winner.nBlockHeight)) {
Expand Down Expand Up @@ -502,7 +501,7 @@ bool CMasternodePayments::ProcessMNWinner(CMasternodePaymentWinner& winner, CNod
LOCK(cs_main);
Misbehaving(pfrom->GetId(), 20);
}
return state.Error("Invalid voter or voter mnwinner signature");
return state.Error("invalid voter mnwinner signature");
}

if (!masternodePayments.AddWinningMasternode(winner)) {
Expand Down
2 changes: 1 addition & 1 deletion src/masternode-payments.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ class CMasternodePaymentWinner : public CSignedMessage
std::string GetStrMessage() const override;
CTxIn GetVin() const { return vinMasternode; };

bool IsValid(CNode* pnode, std::string& strError, int chainHeight);
bool IsValid(CNode* pnode, CValidationState& state, int chainHeight);
void Relay();

void AddPayee(const CScript& payeeIn)
Expand Down

0 comments on commit 48d8770

Please sign in to comment.