aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2013-01-21 10:07:46 -0800
committerGavin Andresen <gavinandresen@gmail.com>2013-01-21 10:07:46 -0800
commit5fca58cb8eca56659125848f602340d08ce4bddb (patch)
tree3d4d4fd07b5e4870d697fbfc7f1bb7d381cbd93c /src
parent7327716a955dfe414e38c5d5f873cfcc0d57c877 (diff)
parent8301ff5077d449c0f6ddf49f386685ea6a4dd16d (diff)
downloadbitcoin-5fca58cb8eca56659125848f602340d08ce4bddb.tar.xz
Merge pull request #2190 from sipa/fixgenesis
Bugfix + simplify special case for genesis
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp23
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;