diff --git a/src/Application.cpp b/src/Application.cpp index 8e24b10ad1..d0f69436f5 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -129,17 +129,23 @@ void Application::run() Log(lsINFO) << "Root master seed: " << rootSeedMaster.humanSeed(); Log(lsINFO) << "Root account: " << rootAddress.humanAccountID(); - Ledger::pointer firstLedger = boost::make_shared(rootAddress, SYSTEM_CURRENCY_START); - assert(!!firstLedger->getAccountState(rootAddress)); - firstLedger->updateHash(); - firstLedger->setClosed(); - firstLedger->setAccepted(); - mMasterLedger.pushLedger(firstLedger); + { + Ledger::pointer ledger = boost::make_shared(rootAddress, SYSTEM_CURRENCY_START); + assert(!!ledger->getAccountState(rootAddress)); + ledger->updateHash(); + ledger->setClosed(); + ledger->setAccepted(); + mMasterLedger.pushLedger(ledger); - Ledger::pointer secondLedger = boost::make_shared(true, boost::ref(*firstLedger)); - mMasterLedger.pushLedger(secondLedger); - assert(!!secondLedger->getAccountState(rootAddress)); - // temporary + for (int i = 0; i < 2; ++i) + { + ledger = boost::make_shared(true, boost::ref(*ledger)); + ledger->setClosed(); + ledger->setAccepted(); + mMasterLedger.pushLedger(ledger); + assert(!!secondLedger->getAccountState(rootAddress)); + } + } mNetOps.setStateTimer(); diff --git a/src/Ledger.cpp b/src/Ledger.cpp index a46d0a6e5c..081b318d2f 100644 --- a/src/Ledger.cpp +++ b/src/Ledger.cpp @@ -59,13 +59,23 @@ Ledger::Ledger(Ledger& ledger, bool isMutable) : mTotCoins(ledger.mTotCoins), mL Ledger::Ledger(bool dummy, Ledger& prevLedger) : mTotCoins(prevLedger.mTotCoins), mLedgerSeq(prevLedger.mLedgerSeq + 1), - mCloseTime(0), mParentCloseTime(prevLedger.mCloseTime), mCloseResolution(prevLedger.mCloseResolution), + mParentCloseTime(prevLedger.mCloseTime), mCloseResolution(prevLedger.mCloseResolution), mCloseFlags(0), mClosed(false), mValidHash(false), mAccepted(false), mImmutable(false), mTransactionMap(new SHAMap()), mAccountStateMap(prevLedger.mAccountStateMap->snapShot(true)) { // Create a new ledger that follows this one prevLedger.updateHash(); mParentHash = prevLedger.getHash(); assert(mParentHash.isNonZero()); + + mCloseResolution = ContinuousLedgerTiming::getNextLedgerTimeResolution(prevLedger.mCloseResolution, + prevLedger.getCloseAgree(), mLedgerSeq); + if (prevLedger.mCloseTime == 0) + { + mCloseTime = theApp->getOPs().getNetworkTimeNC(); + mCloseTime -= (mCloseTime % mCloseResolution); + } + else + mCloseTime = prevLedger.mCloseTime + mCloseResolution; } Ledger::Ledger(const std::vector& rawLedger) : @@ -142,7 +152,7 @@ void Ledger::setAccepted(uint32 closeTime, int closeResolution, bool correctClos void Ledger::setAccepted() { // used when we acquired the ledger - assert(mClosed && !mAccepted && (mCloseResolution != 0)); + assert(mClosed && !mAccepted && (mCloseResolution != 0) && (mCloseResolution != 0)); updateHash(); mAccepted = true; mImmutable = true; diff --git a/src/NetworkOPs.cpp b/src/NetworkOPs.cpp index 7854356c0f..861b413d25 100644 --- a/src/NetworkOPs.cpp +++ b/src/NetworkOPs.cpp @@ -310,7 +310,7 @@ void NetworkOPs::checkState(const boost::system::error_code& result) (theApp->getMasterLedger().getCurrentLedger()->getCloseTimeNC() + 4)) setMode(omFULL); else - Log(lsWARNING) << "Too late to go to full, will try in consensus window"; + Log(lsINFO) << "Will try to go to FULL in consensus window"; } if (mMode == omFULL)