diff options
author | Gavin Andresen <gavinandresen@gmail.com> | 2013-01-21 10:07:46 -0800 |
---|---|---|
committer | Gavin Andresen <gavinandresen@gmail.com> | 2013-01-21 10:07:46 -0800 |
commit | 5fca58cb8eca56659125848f602340d08ce4bddb (patch) | |
tree | 3d4d4fd07b5e4870d697fbfc7f1bb7d381cbd93c /src | |
parent | 7327716a955dfe414e38c5d5f873cfcc0d57c877 (diff) | |
parent | 8301ff5077d449c0f6ddf49f386685ea6a4dd16d (diff) |
Merge pull request #2190 from sipa/fixgenesis
Bugfix + simplify special case for genesis
Diffstat (limited to 'src')
-rw-r--r-- | src/main.cpp | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/main.cpp b/src/main.cpp index a6394e0bff..fca12b7cb8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1592,6 +1592,14 @@ bool CBlock::ConnectBlock(CBlockIndex* pindex, CCoinsViewCache &view, bool fJust // verify that the view's current state corresponds to the previous block assert(pindex->pprev == view.GetBestBlock()); + // Special case for the genesis block, skipping connection of its transactions + // (its coinbase is unspendable) + if (GetHash() == hashGenesisBlock) { + view.SetBestBlock(pindex); + pindexGenesisBlock = pindex; + return true; + } + bool fScriptChecks = pindex->nHeight >= Checkpoints::GetTotalBlocksEstimate(); // Do not allow blocks that contain transactions which 'overwrite' older transactions, @@ -1727,21 +1735,6 @@ bool SetBestChain(CBlockIndex* pindexNew) // Only when all have succeeded, we push it to pcoinsTip. CCoinsViewCache view(*pcoinsTip, true); - // special case for attaching the genesis block - // note that no ConnectBlock is called, so its coinbase output is non-spendable - if (pindexGenesisBlock == NULL && pindexNew->GetBlockHash() == hashGenesisBlock) - { - view.SetBestBlock(pindexNew); - if (!view.Flush()) - return false; - pindexGenesisBlock = pindexNew; - pindexBest = pindexNew; - hashBestChain = pindexNew->GetBlockHash(); - nBestHeight = pindexBest->nHeight; - bnBestChainWork = pindexNew->bnChainWork; - return true; - } - // Find the fork (typically, there is none) CBlockIndex* pfork = view.GetBestBlock(); CBlockIndex* plonger = pindexNew; |