Pulled AddToBlockIndex out of CBlock.
This commit is contained in:
parent
f3ae51dcce
commit
1959997afb
2 changed files with 10 additions and 11 deletions
16
src/main.cpp
16
src/main.cpp
|
@ -2043,25 +2043,25 @@ bool SetBestChain(CValidationState &state, CBlockIndex* pindexNew)
|
|||
}
|
||||
|
||||
|
||||
bool CBlock::AddToBlockIndex(CValidationState &state, const CDiskBlockPos &pos)
|
||||
bool AddToBlockIndex(CBlock& block, CValidationState& state, const CDiskBlockPos& pos)
|
||||
{
|
||||
// Check for duplicate
|
||||
uint256 hash = GetHash();
|
||||
uint256 hash = block.GetHash();
|
||||
if (mapBlockIndex.count(hash))
|
||||
return state.Invalid(error("AddToBlockIndex() : %s already exists", hash.ToString().c_str()));
|
||||
|
||||
// Construct new block index object
|
||||
CBlockIndex* pindexNew = new CBlockIndex(*this);
|
||||
CBlockIndex* pindexNew = new CBlockIndex(block);
|
||||
assert(pindexNew);
|
||||
map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.insert(make_pair(hash, pindexNew)).first;
|
||||
pindexNew->phashBlock = &((*mi).first);
|
||||
map<uint256, CBlockIndex*>::iterator miPrev = mapBlockIndex.find(hashPrevBlock);
|
||||
map<uint256, CBlockIndex*>::iterator miPrev = mapBlockIndex.find(block.hashPrevBlock);
|
||||
if (miPrev != mapBlockIndex.end())
|
||||
{
|
||||
pindexNew->pprev = (*miPrev).second;
|
||||
pindexNew->nHeight = pindexNew->pprev->nHeight + 1;
|
||||
}
|
||||
pindexNew->nTx = vtx.size();
|
||||
pindexNew->nTx = block.vtx.size();
|
||||
pindexNew->nChainWork = (pindexNew->pprev ? pindexNew->pprev->nChainWork : 0) + pindexNew->GetBlockWork().getuint256();
|
||||
pindexNew->nChainTx = (pindexNew->pprev ? pindexNew->pprev->nChainTx : 0) + pindexNew->nTx;
|
||||
pindexNew->nFile = pos.nFile;
|
||||
|
@ -2082,7 +2082,7 @@ bool CBlock::AddToBlockIndex(CValidationState &state, const CDiskBlockPos &pos)
|
|||
// Notify UI to display prev block's coinbase if it was ours
|
||||
static uint256 hashPrevBestCoinBase;
|
||||
UpdatedTransaction(hashPrevBestCoinBase);
|
||||
hashPrevBestCoinBase = GetTxHash(0);
|
||||
hashPrevBestCoinBase = block.GetTxHash(0);
|
||||
}
|
||||
|
||||
if (!pblocktree->Flush())
|
||||
|
@ -2314,7 +2314,7 @@ bool CBlock::AcceptBlock(CValidationState &state, CDiskBlockPos *dbp)
|
|||
if (dbp == NULL)
|
||||
if (!WriteBlockToDisk(*this, blockPos))
|
||||
return state.Abort(_("Failed to write block"));
|
||||
if (!AddToBlockIndex(state, blockPos))
|
||||
if (!AddToBlockIndex(*this, state, blockPos))
|
||||
return error("AcceptBlock() : AddToBlockIndex failed");
|
||||
} catch(std::runtime_error &e) {
|
||||
return state.Abort(_("System error: ") + e.what());
|
||||
|
@ -2852,7 +2852,7 @@ bool InitBlockIndex() {
|
|||
return error("LoadBlockIndex() : FindBlockPos failed");
|
||||
if (!WriteBlockToDisk(block, blockPos))
|
||||
return error("LoadBlockIndex() : writing genesis block to disk failed");
|
||||
if (!block.AddToBlockIndex(state, blockPos))
|
||||
if (!AddToBlockIndex(block, state, blockPos))
|
||||
return error("LoadBlockIndex() : genesis block not accepted");
|
||||
} catch(std::runtime_error &e) {
|
||||
return error("LoadBlockIndex() : failed to initialize block database: %s", e.what());
|
||||
|
|
|
@ -703,9 +703,6 @@ public:
|
|||
}
|
||||
|
||||
|
||||
// Add this block to the block index, and if necessary, switch the active block chain to this
|
||||
bool AddToBlockIndex(CValidationState &state, const CDiskBlockPos &pos);
|
||||
|
||||
// Context-independent validity checks
|
||||
bool CheckBlock(CValidationState &state, bool fCheckPOW=true, bool fCheckMerkleRoot=true) const;
|
||||
|
||||
|
@ -732,6 +729,8 @@ bool DisconnectBlock(CBlock& block, CValidationState& state, CBlockIndex* pindex
|
|||
// Apply the effects of this block (with given index) on the UTXO set represented by coins
|
||||
bool ConnectBlock(CBlock& block, CValidationState& state, CBlockIndex* pindex, CCoinsViewCache& coins, bool fJustCheck = false);
|
||||
|
||||
// Add this block to the block index, and if necessary, switch the active block chain to this
|
||||
bool AddToBlockIndex(CBlock& block, CValidationState& state, const CDiskBlockPos& pos);
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue