Restore relaying and fix rate threshold (#1206)
* Restore object relaying during orphan processing * Relay votes during orphan processing * Allow relaying of objects and votes during syncing * Double rate check threshold
This commit is contained in:
parent
8fc8e6c8c2
commit
84c242fc8c
@ -644,7 +644,6 @@ bool CGovernanceObject::GetCurrentMNVotes(const CTxIn& mnCollateralOutpoint, vot
|
|||||||
|
|
||||||
void CGovernanceObject::Relay()
|
void CGovernanceObject::Relay()
|
||||||
{
|
{
|
||||||
if(!masternodeSync.IsSynced()) return;
|
|
||||||
CInv inv(MSG_GOVERNANCE_OBJECT, GetHash());
|
CInv inv(MSG_GOVERNANCE_OBJECT, GetHash());
|
||||||
RelayInv(inv, PROTOCOL_VERSION);
|
RelayInv(inv, PROTOCOL_VERSION);
|
||||||
}
|
}
|
||||||
@ -732,6 +731,7 @@ void CGovernanceObject::CheckOrphanVotes()
|
|||||||
LogPrintf("CGovernanceObject::CheckOrphanVotes -- Failed to add orphan vote: %s\n", exception.what());
|
LogPrintf("CGovernanceObject::CheckOrphanVotes -- Failed to add orphan vote: %s\n", exception.what());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
vote.Relay();
|
||||||
fRemove = true;
|
fRemove = true;
|
||||||
}
|
}
|
||||||
++it;
|
++it;
|
||||||
|
@ -235,7 +235,6 @@ CGovernanceVote::CGovernanceVote(CTxIn vinMasternodeIn, uint256 nParentHashIn, v
|
|||||||
|
|
||||||
void CGovernanceVote::Relay() const
|
void CGovernanceVote::Relay() const
|
||||||
{
|
{
|
||||||
if(!masternodeSync.IsSynced()) return;
|
|
||||||
CInv inv(MSG_GOVERNANCE_OBJECT_VOTE, GetHash());
|
CInv inv(MSG_GOVERNANCE_OBJECT_VOTE, GetHash());
|
||||||
RelayInv(inv, PROTOCOL_VERSION);
|
RelayInv(inv, PROTOCOL_VERSION);
|
||||||
}
|
}
|
||||||
|
@ -280,6 +280,7 @@ void CGovernanceManager::CheckOrphanVotes(CGovernanceObject& govobj, CGovernance
|
|||||||
fRemove = true;
|
fRemove = true;
|
||||||
}
|
}
|
||||||
else if(govobj.ProcessVote(NULL, vote, exception)) {
|
else if(govobj.ProcessVote(NULL, vote, exception)) {
|
||||||
|
vote.Relay();
|
||||||
fRemove = true;
|
fRemove = true;
|
||||||
}
|
}
|
||||||
if(fRemove) {
|
if(fRemove) {
|
||||||
@ -785,7 +786,7 @@ bool CGovernanceManager::MasternodeRateCheck(const CGovernanceObject& govobj, bo
|
|||||||
switch(nObjectType) {
|
switch(nObjectType) {
|
||||||
case GOVERNANCE_OBJECT_TRIGGER:
|
case GOVERNANCE_OBJECT_TRIGGER:
|
||||||
// Allow 1 trigger per mn per cycle, with a small fudge factor
|
// Allow 1 trigger per mn per cycle, with a small fudge factor
|
||||||
dMaxRate = 1.1 / nSuperblockCycleSeconds;
|
dMaxRate = 2 * 1.1 / double(nSuperblockCycleSeconds);
|
||||||
buffer = it->second.triggerBuffer;
|
buffer = it->second.triggerBuffer;
|
||||||
buffer.AddTimestamp(nTimestamp);
|
buffer.AddTimestamp(nTimestamp);
|
||||||
dRate = buffer.GetRate();
|
dRate = buffer.GetRate();
|
||||||
@ -794,7 +795,7 @@ bool CGovernanceManager::MasternodeRateCheck(const CGovernanceObject& govobj, bo
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GOVERNANCE_OBJECT_WATCHDOG:
|
case GOVERNANCE_OBJECT_WATCHDOG:
|
||||||
dMaxRate = 1.1 / 3600.;
|
dMaxRate = 2 * 1.1 / 3600.;
|
||||||
buffer = it->second.watchdogBuffer;
|
buffer = it->second.watchdogBuffer;
|
||||||
buffer.AddTimestamp(nTimestamp);
|
buffer.AddTimestamp(nTimestamp);
|
||||||
dRate = buffer.GetRate();
|
dRate = buffer.GetRate();
|
||||||
@ -907,6 +908,7 @@ void CGovernanceManager::CheckMasternodeOrphanObjects()
|
|||||||
|
|
||||||
if(AddGovernanceObject(govobj)) {
|
if(AddGovernanceObject(govobj)) {
|
||||||
LogPrintf("CGovernanceManager::CheckMasternodeOrphanObjects -- %s new\n", govobj.GetHash().ToString());
|
LogPrintf("CGovernanceManager::CheckMasternodeOrphanObjects -- %s new\n", govobj.GetHash().ToString());
|
||||||
|
govobj.Relay();
|
||||||
mapMasternodeOrphanObjects.erase(it++);
|
mapMasternodeOrphanObjects.erase(it++);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Loading…
Reference in New Issue
Block a user