This commit is contained in:
12
src/pow.cpp
12
src/pow.cpp
@@ -107,9 +107,9 @@ arith_uint256 RT_CST_RST(int32_t height,uint32_t nTime,arith_uint256 bnTarget,ui
|
|||||||
//bnTarget = ((ct[0]-ct[1])/K) * max(K,(K*(nTime-ts[0])*(ts[0]-ts[W])*denominator/numerator)/T/T);
|
//bnTarget = ((ct[0]-ct[1])/K) * max(K,(K*(nTime-ts[0])*(ts[0]-ts[W])*denominator/numerator)/T/T);
|
||||||
bnTarget = (ct[0] - ct[1]) / arith_uint256(K);
|
bnTarget = (ct[0] - ct[1]) / arith_uint256(K);
|
||||||
altK = (K * (nTime-ts[0]) * (ts[0]-ts[W]) * denominator / numerator) / (T * T);
|
altK = (K * (nTime-ts[0]) * (ts[0]-ts[W]) * denominator / numerator) / (T * T);
|
||||||
fprintf(stderr,"ht.%d initial altK.%d\n",height,altK);
|
|
||||||
if ( altK > K )
|
if ( altK > K )
|
||||||
altK = K;
|
altK = K;
|
||||||
|
else fprintf(stderr,"ht.%d initial altK.%d %d * %d * %d / %d\n",height,altK,(nTime-ts[0]),(ts[0]-ts[W]),denominator,numerator);
|
||||||
bnTarget *= arith_uint256(altK);
|
bnTarget *= arith_uint256(altK);
|
||||||
}
|
}
|
||||||
/* Check past 24 blocks for any sum of 3 STs < T/2 triggers. This is messy
|
/* Check past 24 blocks for any sum of 3 STs < T/2 triggers. This is messy
|
||||||
@@ -183,6 +183,8 @@ arith_uint256 zawy_exponential(arith_uint256 bnTarget,int32_t mult)
|
|||||||
return(bnTarget);
|
return(bnTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 9:53 launch for ZAWY17
|
||||||
|
|
||||||
unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHeader *pblock, const Consensus::Params& params)
|
unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHeader *pblock, const Consensus::Params& params)
|
||||||
{
|
{
|
||||||
if (ASSETCHAINS_ALGO != ASSETCHAINS_EQUIHASH && ASSETCHAINS_STAKED == 0)
|
if (ASSETCHAINS_ALGO != ASSETCHAINS_EQUIHASH && ASSETCHAINS_STAKED == 0)
|
||||||
@@ -221,7 +223,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
|
|||||||
memset(ct0,0,sizeof(ct0));
|
memset(ct0,0,sizeof(ct0));
|
||||||
if ( pindexLast != 0 )
|
if ( pindexLast != 0 )
|
||||||
height = (int32_t)pindexLast->GetHeight() + 1;
|
height = (int32_t)pindexLast->GetHeight() + 1;
|
||||||
if ( ASSETCHAINS_ADAPTIVEPOW > 0 && pindexFirst != 0 && pblock != 0 && height > (int32_t)(sizeof(ct)/sizeof(*ct)) )
|
if ( ASSETCHAINS_ADAPTIVEPOW > 0 && pindexFirst != 0 && pblock != 0 && height >= (int32_t)(sizeof(ct)/sizeof(*ct)) )
|
||||||
{
|
{
|
||||||
tipdiff = (pblock->nTime - pindexFirst->nTime);
|
tipdiff = (pblock->nTime - pindexFirst->nTime);
|
||||||
mult = tipdiff - 7 * ASSETCHAINS_BLOCKTIME;
|
mult = tipdiff - 7 * ASSETCHAINS_BLOCKTIME;
|
||||||
@@ -229,7 +231,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
|
|||||||
for (i=0; pindexFirst != 0 && i<(int32_t)(sizeof(ct)/sizeof(*ct)); i++)
|
for (i=0; pindexFirst != 0 && i<(int32_t)(sizeof(ct)/sizeof(*ct)); i++)
|
||||||
{
|
{
|
||||||
ct[i].SetCompact(pindexFirst->nBits);
|
ct[i].SetCompact(pindexFirst->nBits);
|
||||||
if ( pindexFirst->GetHeight() >= 64 && (pindexFirst->nBits&3) != 0 )
|
if ( (pindexFirst->nBits&3) != 0 )
|
||||||
ct[i] /= arith_uint256((pindexFirst->nBits&3) + 1);
|
ct[i] /= arith_uint256((pindexFirst->nBits&3) + 1);
|
||||||
ts[i] = pindexFirst->nTime;
|
ts[i] = pindexFirst->nTime;
|
||||||
pindexFirst = pindexFirst->pprev;
|
pindexFirst = pindexFirst->pprev;
|
||||||
@@ -253,7 +255,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
|
|||||||
mult = diff;
|
mult = diff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( pindexFirst->GetHeight() >= 64 && (pindexFirst->nBits&3) != 0 )
|
if ( pindexFirst->GetHeight() >= (int32_t)(sizeof(ct)/sizeof(*ct)) && (pindexFirst->nBits&3) != 0 )
|
||||||
{
|
{
|
||||||
bnTmp /= arith_uint256((pindexFirst->nBits&3) + 1); // check against ct[i]
|
bnTmp /= arith_uint256((pindexFirst->nBits&3) + 1); // check against ct[i]
|
||||||
if ( ct[i] != bnTmp )
|
if ( ct[i] != bnTmp )
|
||||||
@@ -270,7 +272,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
|
|||||||
|
|
||||||
bool fNegative,fOverflow; int32_t zawyflag = 0; arith_uint256 easy,origtarget,bnAvg {bnTot / params.nPowAveragingWindow};
|
bool fNegative,fOverflow; int32_t zawyflag = 0; arith_uint256 easy,origtarget,bnAvg {bnTot / params.nPowAveragingWindow};
|
||||||
nbits = CalculateNextWorkRequired(bnAvg, pindexLast->GetMedianTimePast(), pindexFirst->GetMedianTimePast(), params);
|
nbits = CalculateNextWorkRequired(bnAvg, pindexLast->GetMedianTimePast(), pindexFirst->GetMedianTimePast(), params);
|
||||||
if ( ASSETCHAINS_ADAPTIVEPOW > 0 )//&& block12diff != 0 && block7diff != 0 && block4diff != 0 )
|
if ( ASSETCHAINS_ADAPTIVEPOW > 0 && height >= (int32_t)(sizeof(ct)/sizeof(*ct)) )
|
||||||
{
|
{
|
||||||
bnTarget = arith_uint256().SetCompact(nbits);
|
bnTarget = arith_uint256().SetCompact(nbits);
|
||||||
easy.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow);
|
easy.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow);
|
||||||
|
|||||||
Reference in New Issue
Block a user