The block explorer looks like its still on the old one.
Matt and Steve works on it ^^.
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.
unsigned int static DUAL_KGW3(const CBlockIndex* pindexLast, const Consensus::Params& params, const CBlockHeader *pblock) {
// current difficulty formula, ERC3 - DUAL_KGW3, written by Christian Knoepke - [email protected]
// BitSend and Eropecoin Developer
const CBlockIndex *BlockLastSolved = pindexLast;
const CBlockIndex *BlockReading = pindexLast;
bool kgwdebug=false;
uint64_t PastBlocksMass = 0;
int64_t PastRateActualSeconds = 0;
int64_t PastRateTargetSeconds = 0;
double PastRateAdjustmentRatio = double(1);
arith_uint256 PastDifficultyAverage;
arith_uint256 PastDifficultyAveragePrev;
double EventHorizonDeviation;
double EventHorizonDeviationFast;
double EventHorizonDeviationSlow;
//DUAL_KGW3 SETUP
static const uint64_t Blocktime = 5 * 60;
static const unsigned int timeDaySeconds = 60 * 60 * 24;
uint64_t pastSecondsMin = timeDaySeconds * 0.025;
uint64_t pastSecondsMax = timeDaySeconds * 7;
uint64_t PastBlocksMin = pastSecondsMin / Blocktime;
uint64_t PastBlocksMax = pastSecondsMax / Blocktime;
const arith_uint256 bnPowLimit = UintToArith256(params.powLimit);
if (BlockLastSolved == NULL || BlockLastSolved->nHeight == 0 || (uint64_t)BlockLastSolved->nHeight < PastBlocksMin) { return bnPowLimit.GetCompact(); }
for (unsigned int i = 1; BlockReading && BlockReading->nHeight > 0; i++) {
if (PastBlocksMax > 0 && i > PastBlocksMax) { break; }
PastBlocksMass++;
PastDifficultyAverage.SetCompact(BlockReading->nBits);
if (i > 1) {
if(PastDifficultyAverage >= PastDifficultyAveragePrev)
PastDifficultyAverage = ((PastDifficultyAverage - PastDifficultyAveragePrev) / i) + PastDifficultyAveragePrev;
else
PastDifficultyAverage = PastDifficultyAveragePrev - ((PastDifficultyAveragePrev - PastDifficultyAverage) / i);
}
PastDifficultyAveragePrev = PastDifficultyAverage;
PastRateActualSeconds = BlockLastSolved->GetBlockTime() - BlockReading->GetBlockTime();
PastRateTargetSeconds = Blocktime * PastBlocksMass;
PastRateAdjustmentRatio = double(1);
if (PastRateActualSeconds < 0) { PastRateActualSeconds = 0; }
if (PastRateActualSeconds != 0 && PastRateTargetSeconds != 0) {
PastRateAdjustmentRatio = double(PastRateTargetSeconds) / double(PastRateActualSeconds);
}
EventHorizonDeviation = 1 + (0.7084 * pow((double(PastBlocksMass)/double(72)), -1.228)); //28.2 and 144 possible
EventHorizonDeviationFast = EventHorizonDeviation;
EventHorizonDeviationSlow = 1 / EventHorizonDeviation;
if (PastBlocksMass >= PastBlocksMin) {
if ((PastRateAdjustmentRatio <= EventHorizonDeviationSlow) || (PastRateAdjustmentRatio >= EventHorizonDeviationFast))
{ assert(BlockReading); break; }
}
if (BlockReading->pprev == NULL) { assert(BlockReading); break; }
BlockReading = BlockReading->pprev;
}
//KGW Original
arith_uint256 kgw_dual1(PastDifficultyAverage);
arith_uint256 kgw_dual2;
kgw_dual2.SetCompact(pindexLast->nBits);
if (PastRateActualSeconds != 0 && PastRateTargetSeconds != 0) {
kgw_dual1 *= PastRateActualSeconds;
kgw_dual1 /= PastRateTargetSeconds;
}
int64_t nActualTime1 = pindexLast->GetBlockTime() - pindexLast->pprev->GetBlockTime();
int64_t nActualTimespanshort = nActualTime1;
// Retarget BTC Original ...not exactly
if (nActualTime1 < Blocktime / 3)
nActualTime1 = Blocktime / 3;
if (nActualTime1 > Blocktime * 3)
nActualTime1 = Blocktime * 3;
kgw_dual2 *= nActualTime1;
kgw_dual2 /= Blocktime;
//Fusion from Retarget and Classic KGW3 (BitSend=)
arith_uint256 bnNew;
bnNew = ((kgw_dual2 + kgw_dual1)/2);
// DUAL KGW3 increased rapidly the Diff if Blocktime to last block under Blocktime/6 sec.
if(kgwdebug)LogPrintf("nActualTimespanshort = %d \n", nActualTimespanshort );
if( nActualTimespanshort < Blocktime/6 )
{
if(kgwdebug)LogPrintf("Vordiff:%08x %s bnNew first \n", bnNew.GetCompact(), bnNew.ToString().c_str());
const int nLongShortNew1 = 85; const int nLongShortNew2 = 100;
bnNew = bnNew * nLongShortNew1; bnNew = bnNew / nLongShortNew2;
if(kgwdebug)LogPrintf("Erhöhte Diff:\n %08x %s bnNew second \n", bnNew.GetCompact(), bnNew.ToString().c_str() );
}
//BitBreak BitSend
// Reduce difficulty if current block generation time has already exceeded maximum time limit.
const int nLongTimeLimit = 6 * 60 * 60;
if(kgwdebug)
{
LogPrintf("Prediff %08x %s\n", bnNew.GetCompact(), bnNew.ToString().c_str());
LogPrintf("Vordiff %d \n", nLongTimeLimit);
LogPrintf(" %d Block", BlockReading->nHeight );
}
if ((pblock-> nTime - pindexLast->GetBlockTime()) > nLongTimeLimit) //block.nTime
{
bnNew = bnPowLimit*30;
if(kgwdebug)LogPrintf("Maximum block time hit - cute diff %08x %s\n", bnNew.GetCompact(), bnNew.ToString().c_str());
}
if (bnNew > bnPowLimit) {
bnNew = bnPowLimit;
}
return bnNew.GetCompact();
}