It was the Bitcointalk forum that inspired us to create Bitcointalksearch.org - Bitcointalk is an excellent site that should be the default page for anybody dealing in cryptocurrency, since it is a virtual gold-mine of data. However, our experience and user feedback led us create our site; Bitcointalk's search is slow, and difficult to get the results you need, because you need to log in first to find anything useful - furthermore, there are rate limiters for their search functionality.
The aim of our project is to create a faster website that yields more results and faster without having to create an account and eliminate the need to log in - your personal data, therefore, will never be in jeopardy since we are not asking for any of your data and you don't need to provide them to use our site with all of its capabilities.
We created this website with the sole purpose of users being able to search quickly and efficiently in the field of cryptocurrency so they will have access to the latest and most accurate information and thereby assisting the crypto-community at large.
CBlockIndex* pblockindex = NULL;
int nPossibleHeight = pindexNew->pprev->nHeight + 1;
if (fDebug)
printf(" 'AddToBlockIndex()' - The new block pretends to a height %d, block chain height %d\n", nPossibleHeight,
pindexBest->nHeight);
nMaxDepthReplacement = GetArg("-maxdepthreplacement", 50);
int nFixPrev = 0;
CBlockIndex* newblockindex = pindexNew;
int nFixPindexBestnHeight = pindexBest->nHeight;
if (fHardForkOne)
{
if (pindexBest->nHeight > nPossibleHeight)
nFixPindexBestnHeight = nPossibleHeight;
if (nPossibleHeight > pindexBest->nHeight)
{
nFixPrev = nPossibleHeight - pindexBest->nHeight;
for (int i = nFixPrev; i > 0; i--)
{
if (i == i)
{
newblockindex = newblockindex->pprev;
}
}
}
for (int k = nFixPindexBestnHeight; k > nFixPindexBestnHeight - nMaxDepthReplacement; k--)
{
CBlockIndex* bestblockindex = FindBlockByHeight(k);
if (k == k)
{
if (newblockindex->pprev->GetBlockHash() == bestblockindex->pprev->GetBlockHash())
{
if (nPossibleHeight <= pindexBest->nHeight - nMaxDepthReplacement)
{
pindexNew->bnChainTrust = 0;
if (fDebug)
printf(" 'AddToBlockIndex()' - The new block pretends to a height %d, maximum allowed block height for a competing chain %d\n", nPossibleHeight,
pindexBest->nHeight - nMaxDepthReplacement);
break;
}
else if (newblockindex->GetBlockTime() > bestblockindex->GetBlockTime())
{
pindexNew->bnChainTrust = 0;
if (fDebug)
printf(" 'AddToBlockIndex()' - A fork is formed, the height of the parent block %d, hash child blocks hash(1)=%s hash(2)=%s, creation date block(1)=%s block(2)=%s,\n",
bestblockindex->pprev->nHeight, newblockindex->GetBlockHash().ToString().substr(0,8).c_str(), bestblockindex->GetBlockHash().
ToString().substr(0,8).c_str(), DateTimeStrFormat("%x %H:%M:%S", newblockindex->GetBlockTime()).c_str(), DateTimeStrFormat("%x %H:%M:%S",
bestblockindex->GetBlockTime()).c_str());
printf(" priority has a second block, NewChainTrust=%s down\n", pindexNew->bnChainTrust.ToString().c_str());
break;
}
else if (newblockindex->GetBlockTime() < bestblockindex->GetBlockTime() &&
nPossibleHeight > pindexBest->nHeight - nMaxDepthReplacement)
{
bnBestChainTrust = bestblockindex->pprev->bnChainTrust;;
if (fDebug)
printf(" 'AddToBlockIndex()' - A fork is formed, the height of the parent block %d, hash child blocks hash(1)=%s hash(2)=%s, creation date block(1)=%s block(2)=%s,\n",
bestblockindex->pprev->nHeight, newblockindex->GetBlockHash().ToString().substr(0,8).c_str(), bestblockindex->GetBlockHash().
ToString().substr(0,8).c_str(), DateTimeStrFormat("%x %H:%M:%S", newblockindex->GetBlockTime()).c_str(), DateTimeStrFormat("%x %H:%M:%S",
bestblockindex->GetBlockTime()).c_str());
printf(" priority has the first block, BestChainTrust=%s down\n", bnBestChainTrust.ToString().c_str());
break;
}
}
newblockindex = newblockindex->pprev;
}
}
}
if (nPossibleHeight < pindexBest->nHeight && fHardForkOne)
{
pblockindex = FindBlockByHeight(nPossibleHeight);
if (pindexNew->GetBlockTime() > pblockindex->GetBlockTime())
{
if (fDebug)
printf(" 'AddToBlockIndex()' - Generation time of a new block date=%s later than available in the database date=%s\n",
DateTimeStrFormat("%x %H:%M:%S", pindexNew->GetBlockTime()).c_str(), DateTimeStrFormat("%x %H:%M:%S",
pblockindex->GetBlockTime()).c_str());
pindexNew->bnChainTrust = 0;
}
else if (pindexNew->GetBlockTime() < pblockindex->GetBlockTime())
{
if (nPossibleHeight < pindexBest->nHeight && nPossibleHeight > pindexBest->nHeight - nMaxDepthReplacement)
{
if (fDebug)
printf(" 'AddToBlockIndex()' - The generation time of a new block date=%s earlier than the one in the database date=%s\n",
DateTimeStrFormat("%x %H:%M:%S", pindexNew->GetBlockTime()).c_str(), DateTimeStrFormat("%x %H:%M:%S",
pblockindex->GetBlockTime()).c_str());
bnBestChainTrust = pblockindex->pprev->bnChainTrust;
}
}
}
// New best
if (pindexNew->bnChainTrust > bnBestChainTrust)
{
if (!SetBestChain(state, txdb, pindexNew))
return false;
}
else if (pindexNew->bnChainTrust == bnBestChainTrust && fHardForkOne && pindexPrevPos->GetBlockHash() >=
pindexPrevPrevPos->GetBlockHash())
{
printf(" 'AddToBlockIndex()' - BestChainTrust %s\n", bnBestChainTrust.ToString().c_str());
printf(" 'AddToBlockIndex()' - NewChainTrust %s\n", pindexNew->bnChainTrust.ToString().c_str());
if (((pindexNew->IsProofOfStake() && pindexBest->IsProofOfStake()) ? (pindexNew->GetBlockHash() >
pindexBest->GetBlockHash()) : (hash > pindexBest->GetBlockHash())) ||
(pindexBest->IsProofOfWork() && pindexNew->IsProofOfStake()))
{
printf(" 'AddToBlockIndex()' bnChainTrust = bnBestChainTrust - Block accepted\n");
if (!SetBestChain(state, txdb, pindexNew))
{
return false;
}
}
else
{
printf(" 'AddToBlockIndex()' bnChainTrust = bnBestChainTrust - Block not accepted\n");
}
}
else if (pindexNew->bnChainTrust == bnBestChainTrust && fHardForkOne && pindexPrevPos->GetBlockHash() <
pindexPrevPrevPos->GetBlockHash())
{
printf(" 'AddToBlockIndex()_' - BestChainTrust %s\n", bnBestChainTrust.ToString().c_str());
printf(" 'AddToBlockIndex()_' - NewChainTrust %s\n", pindexNew->bnChainTrust.ToString().c_str());
if (((pindexNew->IsProofOfStake() && pindexBest->IsProofOfStake()) ? (pindexNew->GetBlockHash() <
pindexBest->GetBlockHash()) : (hash < pindexBest->GetBlockHash())) ||
(pindexBest->IsProofOfWork() && pindexNew->IsProofOfStake()))
{
printf(" 'AddToBlockIndex()_' bnChainTrust = bnBestChainTrust - Block accepted\n");
if (!SetBestChain(state, txdb, pindexNew))
{
return false;
}
}
else
{
printf(" 'AddToBlockIndex()_' bnChainTrust = bnBestChainTrust - Block not accepted\n");
}
}
received block 1652a05972b98e678461
CheckStakeKernelHash() : using modifier 0x35d696e7b209ef80 at height=349401 timestamp=2019-08-28 19:25:00 UTC for block from height=348699 timestamp=2019-08-19 21:11:31 UTC
CheckStakeKernelHash() : check protocol=0.3 modifier=0x35d696e7b209ef80 nTimeBlockFrom=1566249091 nTxPrevOffset=158 nTimeTxPrev=1566249091 nPrevout=1 nTimeTx=1572903179 hashProof=000001c1e2aca427813ef37c1bc66380e10d2afa0ba691c41d6947d2a4637ced
ComputeNextStakeModifier: prev modifier=0x3c2eb5bf4d3202fd time=2019-11-04 18:08:03 UTC
'AddToBlockIndex()' - The new block pretends to a height 357245, block chain height 357285
'AddToBlockIndex()' - A fork is formed, the height of the parent block 357233, hash child blocks hash(1)=46cba156 hash(2)=000084f2, creation date block(1)=04.11.2019 20:04:19 block(2)=04.11.2019 19:19:17,
priority has a second block, NewChainTrust=0 down
'AddToBlockIndex()' - Generation time of a new block date=04.11.2019 21:32:59 later than available in the database date=04.11.2019 20:19:24
ProcessBlock: ACCEPTED POS BLOCK
2019-11-06 19:34:49 UTC received: getblocks (997 bytes)
received block 0001b495e8c947f2aa67
ComputeNextStakeModifier: prev modifier=0x1673d3f6dc47f14c time=2019-11-07 00:10:33 UTC
'AddToBlockIndex()' - The new block pretends to a height 357365, block chain height 357366
'AddToBlockIndex()' - A fork is formed, the height of the parent block 357364, hash child blocks hash(1)=0001b495 hash(2)=045a8855, creation date block(1)=11/07/19 03:58:09 block(2)=11/07/19 03:59:48,
priority has the first block, BestChainTrust=769420279357256 down
'AddToBlockIndex()' - The generation time of a new block date=11/07/19 03:58:09 earlier than the one in the database date=11/07/19 03:59:48
REORGANIZE
REORGANIZE: Disconnect 2 blocks; 0d7c1fab0c6ac8e5150a..5729d05204aef49d6c0c
REORGANIZE: Connect 1 blocks; 0d7c1fab0c6ac8e5150a..0001b495e8c947f2aa67
Delete redundant memory transactions that are in the connected branch
REORGANIZE: done
SetBestChain: new best=0001b495e8c947f2aa67 height=357365 trust=769420279357257 date=11/07/19 03:58:09
ProcessBlock: ACCEPTED POW BLOCK
2019-11-07 04:08:04 UTC received: block (335 bytes)
received block 0001b6228706fd79e42d
Flushed 123 addresses to peers.dat 31ms
ComputeNextStakeModifier: prev modifier=0x1673d3f6dc47f14c time=2019-11-07 00:10:33 UTC
'AddToBlockIndex()' - The new block pretends to a height 357349, block chain height 357349
'AddToBlockIndex()' - A fork is formed, the height of the parent block 357348, hash child blocks hash(1)=0001b622 hash(2)=5416c057, creation date block(1)=11/07/19 02:16:20 block(2)=11/07/19 02:19:22,
priority has the first block, BestChainTrust=769144828228136 down
REORGANIZE
REORGANIZE: Disconnect 1 blocks; 741dae93a19fd2a2df2d..5416c057bc5860a31b1c
REORGANIZE: Connect 1 blocks; 741dae93a19fd2a2df2d..0001b6228706fd79e42d
Delete redundant memory transactions that are in the connected branch
REORGANIZE: done
SetBestChain: new best=0001b6228706fd79e42d height=357349 trust=769144828228137 date=11/07/19 02:16:20
ProcessBlock: ACCEPTED POW BLOCK
CBlockIndex* pblockindex = NULL;
int nPossibleHeight = pindexNew->pprev->nHeight + 1;
if (fDebug)
printf(" 'AddToBlockIndex()' - The new block pretends to a height %d, block chain height %d\n", nPossibleHeight,
pindexBest->nHeight);
if (nPossibleHeight < pindexBest->nHeight && fHardForkOne)
{
if (nPossibleHeight <= pindexBest->nHeight - nTriggerDepth)
{
if (fDebug)
printf(" 'AddToBlockIndex()' - The new block pretends to a height %d, maximum allowed block height for a competing chain %d\n", nPossibleHeight,
pindexBest->nHeight - nTriggerDepth);
pindexNew->bnChainTrust = 0;
}
pblockindex = FindBlockByHeight(nPossibleHeight);
if (pindexNew->GetBlockTime() > pblockindex->GetBlockTime())
{
if (fDebug)
printf(" 'AddToBlockIndex()' - Generation time of a new block date=%s later than available in the database date=%s\n",
DateTimeStrFormat("%x %H:%M:%S", pindexNew->GetBlockTime()).c_str(), DateTimeStrFormat("%x %H:%M:%S",
pblockindex->GetBlockTime()).c_str());
pindexNew->bnChainTrust = 0;
}
else if (pindexNew->GetBlockTime() < pblockindex->GetBlockTime())
{
if (nPossibleHeight < pindexBest->nHeight && nPossibleHeight > pindexBest->nHeight - nTriggerDepth)
{
if (fDebug)
printf(" 'AddToBlockIndex()' - The generation time of a new block date=%s earlier than the one in the database date=%s\n",
DateTimeStrFormat("%x %H:%M:%S", pindexNew->GetBlockTime()).c_str(), DateTimeStrFormat("%x %H:%M:%S",
pblockindex->GetBlockTime()).c_str());
bnBestChainTrust = pblockindex->pprev->bnChainTrust;
}
}
}
// New best
if (pindexNew->bnChainTrust > bnBestChainTrust)
{
if (!SetBestChain(state, txdb, pindexNew))
return false;
}
else if (pindexNew->bnChainTrust == bnBestChainTrust && fHardForkOne && pindexPrevPos->GetBlockHash() >=
pindexPrevPrevPos->GetBlockHash())
{
printf(" 'CBlock' - BestChainTrust %s\n", bnBestChainTrust.ToString().c_str());
printf(" 'CBlock' - NewChainTrust %s\n", pindexNew->bnChainTrust.ToString().c_str());
if (((pindexNew->IsProofOfStake() && pindexBest->IsProofOfStake()) ? (pindexNew->GetBlockHash() >
pindexBest->GetBlockHash()) : (hash > pindexBest->GetBlockHash())) ||
(pindexBest->IsProofOfWork() && pindexNew->IsProofOfStake()))
{
printf(" 'CBlock' bnChainTrust = bnBestChainTrust - Block accepted\n");
if (!SetBestChain(state, txdb, pindexNew))
{
return false;
}
}
else
{
printf(" 'CBlock' bnChainTrust = bnBestChainTrust - Block not accepted\n");
return false;
}
}
else if (pindexNew->bnChainTrust == bnBestChainTrust && fHardForkOne && pindexPrevPos->GetBlockHash() <
pindexPrevPrevPos->GetBlockHash())
{
printf(" 'CBlock_' - BestChainTrust %s\n", bnBestChainTrust.ToString().c_str());
printf(" 'CBlock_' - NewChainTrust %s\n", pindexNew->bnChainTrust.ToString().c_str());
if (((pindexNew->IsProofOfStake() && pindexBest->IsProofOfStake()) ? (pindexNew->GetBlockHash() <
pindexBest->GetBlockHash()) : (hash < pindexBest->GetBlockHash())) ||
(pindexBest->IsProofOfWork() && pindexNew->IsProofOfStake()))
{
printf(" 'CBlock' bnChainTrust = bnBestChainTrust - Block accepted\n");
if (!SetBestChain(state, txdb, pindexNew))
{
return false;
}
}
else
{
printf(" 'CBlock' bnChainTrust = bnBestChainTrust - Block not accepted\n");
return false;
}
}
txdb.Close();