mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-12 12:52:35 -03:00
index: Fix for indexers skipping genesis block.
This commit is contained in:
parent
0df9b0aed2
commit
ed12d5df1b
3 changed files with 15 additions and 1 deletions
|
@ -60,7 +60,11 @@ bool BaseIndex::Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
LOCK(cs_main);
|
LOCK(cs_main);
|
||||||
|
if (locator.IsNull()) {
|
||||||
|
m_best_block_index = nullptr;
|
||||||
|
} else {
|
||||||
m_best_block_index = FindForkInGlobalIndex(chainActive, locator);
|
m_best_block_index = FindForkInGlobalIndex(chainActive, locator);
|
||||||
|
}
|
||||||
m_synced = m_best_block_index.load() == chainActive.Tip();
|
m_synced = m_best_block_index.load() == chainActive.Tip();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -245,6 +245,9 @@ bool TxIndex::Init()
|
||||||
|
|
||||||
bool TxIndex::WriteBlock(const CBlock& block, const CBlockIndex* pindex)
|
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()));
|
CDiskTxPos pos(pindex->GetBlockPos(), GetSizeOfCompactSize(block.vtx.size()));
|
||||||
std::vector<std::pair<uint256, CDiskTxPos>> vPos;
|
std::vector<std::pair<uint256, CDiskTxPos>> vPos;
|
||||||
vPos.reserve(block.vtx.size());
|
vPos.reserve(block.vtx.size());
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
// Distributed under the MIT software license, see the accompanying
|
// Distributed under the MIT software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
#include <chainparams.h>
|
||||||
#include <index/txindex.h>
|
#include <index/txindex.h>
|
||||||
#include <script/standard.h>
|
#include <script/standard.h>
|
||||||
#include <test/test_bitcoin.h>
|
#include <test/test_bitcoin.h>
|
||||||
|
@ -38,6 +39,12 @@ BOOST_FIXTURE_TEST_CASE(txindex_initial_sync, TestChain100Setup)
|
||||||
MilliSleep(100);
|
MilliSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check that txindex excludes genesis block transactions.
|
||||||
|
const CBlock& genesis_block = Params().GenesisBlock();
|
||||||
|
for (const auto& txn : genesis_block.vtx) {
|
||||||
|
BOOST_CHECK(!txindex.FindTx(txn->GetHash(), block_hash, tx_disk));
|
||||||
|
}
|
||||||
|
|
||||||
// Check that txindex has all txs that were in the chain before it started.
|
// Check that txindex has all txs that were in the chain before it started.
|
||||||
for (const auto& txn : m_coinbase_txns) {
|
for (const auto& txn : m_coinbase_txns) {
|
||||||
if (!txindex.FindTx(txn->GetHash(), block_hash, tx_disk)) {
|
if (!txindex.FindTx(txn->GetHash(), block_hash, tx_disk)) {
|
||||||
|
|
Loading…
Reference in a new issue