diff options
| author | Gavin Andresen <[email protected]> | 2013-01-21 10:07:46 -0800 |
|---|---|---|
| committer | Gavin Andresen <[email protected]> | 2013-01-21 10:07:46 -0800 |
| commit | 5fca58cb8eca56659125848f602340d08ce4bddb (patch) | |
| tree | 3d4d4fd07b5e4870d697fbfc7f1bb7d381cbd93c /src/main.cpp | |
| parent | Merge pull request #2194 from Diapolo/UTF8-bitcoinrpc.cpp (diff) | |
| parent | Bugfix + simplify special case for genesis (diff) | |
| download | discoin-5fca58cb8eca56659125848f602340d08ce4bddb.tar.xz discoin-5fca58cb8eca56659125848f602340d08ce4bddb.zip | |
Merge pull request #2190 from sipa/fixgenesis
Bugfix + simplify special case for genesis
Diffstat (limited to 'src/main.cpp')
| -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 a6394e0bf..fca12b7cb 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; |