Timing change to avoid allowing a server to race ahead of the

majority of validators. Enforce minimum ledger open time which
is extended if there are too few validations.
This commit is contained in:
JoelKatz
2013-04-15 09:50:23 -07:00
parent b7eccd1dce
commit 0bc9c0b737
3 changed files with 24 additions and 6 deletions

View File

@@ -485,6 +485,7 @@ void LedgerConsensus::statePreClose()
{ // it is shortly before ledger close time
bool anyTransactions = theApp->getLedgerMaster().getCurrentLedger()->peekTransactionMap()->getHash().isNonZero();
int proposersClosed = mPeerPositions.size();
int proposersValidated = theApp->getValidations().getTrustedValidationCount(mPrevLedgerHash);
// This ledger is open. This computes how long since the last ledger closed
int sinceClose;
@@ -503,8 +504,8 @@ void LedgerConsensus::statePreClose()
idleInterval = LEDGER_IDLE_INTERVAL;
}
if (ContinuousLedgerTiming::shouldClose(anyTransactions, mPreviousProposers, proposersClosed,
mPreviousMSeconds, sinceClose, idleInterval))
if (ContinuousLedgerTiming::shouldClose(anyTransactions, mPreviousProposers, proposersClosed, proposersValidated,
mPreviousMSeconds, sinceClose, mCurrentMSeconds, idleInterval))
{
closeLedger();
}