Merge #14085: index: Fix for indexers skipping genesis block.

ed12d5df1b index: Fix for indexers skipping genesis block. (Jim Posen)

Pull request description:

  This fixes a bug where indexers would skip processing of the genesis block. Preserves the current behavior of omitting genesis block transaction from the index.

Tree-SHA512: 092fd3d629bf1ef279566217c668cc913a8b8e012d811d0e544231894c49a0c0c179537ac4727c39b9bf407479541745d79c4e118db6f0795a2b848d0fe62cbf
This commit is contained in:
Wladimir J. van der Laan
2019-01-09 14:47:40 +01:00
3 changed files with 15 additions and 1 deletions

View File

@@ -60,7 +60,11 @@ bool BaseIndex::Init()
}
LOCK(cs_main);
m_best_block_index = FindForkInGlobalIndex(chainActive, locator);
if (locator.IsNull()) {
m_best_block_index = nullptr;
} else {
m_best_block_index = FindForkInGlobalIndex(chainActive, locator);
}
m_synced = m_best_block_index.load() == chainActive.Tip();
return true;
}

View File

@@ -245,6 +245,9 @@ bool TxIndex::Init()
bool TxIndex::WriteBlock(const CBlock& block, const CBlockIndex* pindex)
{
// Exclude genesis block transaction because outputs are not spendable.
if (pindex->nHeight == 0) return true;
CDiskTxPos pos(pindex->GetBlockPos(), GetSizeOfCompactSize(block.vtx.size()));
std::vector<std::pair<uint256, CDiskTxPos>> vPos;
vPos.reserve(block.vtx.size());