mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 20:42:59 +01:00
* Only require valid collaterals for votes and triggers * Bump proto version * Only announce votes from banned MNs to >= 70215 proto version nodes
This commit is contained in:
parent
b293e6ddee
commit
a2baa93ec5
@ -498,14 +498,6 @@ bool CGovernanceObject::IsValidLocally(std::string& strError, bool& fMissingMast
|
|||||||
strError = "Failed to find Masternode by UTXO, missing masternode=" + strOutpoint;
|
strError = "Failed to find Masternode by UTXO, missing masternode=" + strOutpoint;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!mnList.IsMNValid(dmn)) {
|
|
||||||
if (mnList.IsMNPoSeBanned(dmn)) {
|
|
||||||
strError = "Masternode is POSE_BANNED, masternode=" + strOutpoint;
|
|
||||||
} else {
|
|
||||||
strError = "Masternode is invalid for unknown reason, masternode=" + strOutpoint;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check that we have a valid MN signature
|
// Check that we have a valid MN signature
|
||||||
if (!CheckSignature(dmn->pdmnState->pubKeyOperator)) {
|
if (!CheckSignature(dmn->pdmnState->pubKeyOperator)) {
|
||||||
|
@ -25,6 +25,7 @@ class CGovernanceVote;
|
|||||||
|
|
||||||
static const int MIN_GOVERNANCE_PEER_PROTO_VERSION = 70213;
|
static const int MIN_GOVERNANCE_PEER_PROTO_VERSION = 70213;
|
||||||
static const int GOVERNANCE_FILTER_PROTO_VERSION = 70206;
|
static const int GOVERNANCE_FILTER_PROTO_VERSION = 70206;
|
||||||
|
static const int GOVERNANCE_POSE_BANNED_VOTES_VERSION = 70215;
|
||||||
|
|
||||||
static const double GOVERNANCE_FILTER_FP_RATE = 0.001;
|
static const double GOVERNANCE_FILTER_FP_RATE = 0.001;
|
||||||
|
|
||||||
|
@ -120,8 +120,21 @@ void CGovernanceVote::Relay(CConnman& connman) const
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto mnList = deterministicMNManager->GetListAtChainTip();
|
||||||
|
auto dmn = mnList.GetMNByCollateral(masternodeOutpoint);
|
||||||
|
if (!dmn) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// When this vote is from non-valid (PoSe banned) MN, we should only announce it to v0.14.0.1 nodes as older nodes
|
||||||
|
// will ban us otherwise.
|
||||||
|
int minVersion = MIN_GOVERNANCE_PEER_PROTO_VERSION;
|
||||||
|
if (!mnList.IsMNValid(dmn)) {
|
||||||
|
minVersion = GOVERNANCE_POSE_BANNED_VOTES_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
CInv inv(MSG_GOVERNANCE_OBJECT_VOTE, GetHash());
|
CInv inv(MSG_GOVERNANCE_OBJECT_VOTE, GetHash());
|
||||||
connman.RelayInv(inv, MIN_GOVERNANCE_PEER_PROTO_VERSION);
|
connman.RelayInv(inv, minVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGovernanceVote::UpdateHash() const
|
void CGovernanceVote::UpdateHash() const
|
||||||
@ -258,7 +271,7 @@ bool CGovernanceVote::IsValid(bool useVotingKey) const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto dmn = deterministicMNManager->GetListAtChainTip().GetValidMNByCollateral(masternodeOutpoint);
|
auto dmn = deterministicMNManager->GetListAtChainTip().GetMNByCollateral(masternodeOutpoint);
|
||||||
if (!dmn) {
|
if (!dmn) {
|
||||||
LogPrint("gobject", "CGovernanceVote::IsValid -- Unknown Masternode - %s\n", masternodeOutpoint.ToStringShort());
|
LogPrint("gobject", "CGovernanceVote::IsValid -- Unknown Masternode - %s\n", masternodeOutpoint.ToStringShort());
|
||||||
return false;
|
return false;
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
static const int PROTOCOL_VERSION = 70214;
|
static const int PROTOCOL_VERSION = 70215;
|
||||||
|
|
||||||
//! initial proto version, to be increased after version/verack negotiation
|
//! initial proto version, to be increased after version/verack negotiation
|
||||||
static const int INIT_PROTO_VERSION = 209;
|
static const int INIT_PROTO_VERSION = 209;
|
||||||
|
Loading…
Reference in New Issue
Block a user