// Copyright (c) 2018 The Dash Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "evodb.h" CEvoDB* evoDb; CEvoDB::CEvoDB(size_t nCacheSize, bool fMemory, bool fWipe) : db(fMemory ? "" : (GetDataDir() / "evodb"), nCacheSize, fMemory, fWipe), rootBatch(db), rootDBTransaction(db, rootBatch), curDBTransaction(rootDBTransaction, rootDBTransaction) { } bool CEvoDB::CommitRootTransaction() { assert(curDBTransaction.IsClean()); rootDBTransaction.Commit(); bool ret = db.WriteBatch(rootBatch); rootBatch.Clear(); return ret; } bool CEvoDB::VerifyBestBlock(const uint256& hash) { // Make sure evodb is consistent. // If we already have best block hash saved, the previous block should match it. uint256 hashBestBlock; bool fHasBestBlock = Read(EVODB_BEST_BLOCK, hashBestBlock); uint256 hashBlockIndex = fHasBestBlock ? hash : uint256(); assert(hashBestBlock == hashBlockIndex); return fHasBestBlock; } void CEvoDB::WriteBestBlock(const uint256& hash) { Write(EVODB_BEST_BLOCK, hash); }