From 61e4db43325195e0907d45403b2c7305aa71939e Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 1 Aug 2019 10:01:55 -1100 Subject: [PATCH 1/7] Fix null access --- src/pow.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pow.cpp b/src/pow.cpp index a91b48dc1..c98928d3e 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -75,14 +75,14 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead const CBlockIndex* pindexFirst = pindexLast; arith_uint256 bnTarget,bnTot {0}; uint32_t nbits; int64_t diff,mult = 0; - if ( pindexFirst != 0 ) + if ( pindexFirst != 0 && pblock != 0 ) mult = pblock->nTime - pindexFirst->nTime - 7 * ASSETCHAINS_BLOCKTIME; for (int i = 0; pindexFirst && i < params.nPowAveragingWindow; i++) { arith_uint256 bnTmp; bnTmp.SetCompact(pindexFirst->nBits); bnTot += bnTmp; - if ( ASSETCHAINS_ADAPTIVEPOW > 0 && i < 12 ) + if ( ASSETCHAINS_ADAPTIVEPOW > 0 && i < 12 && pblock != 0 ) { diff = pblock->nTime - pindexFirst->nTime - (8+i)*ASSETCHAINS_BLOCKTIME; if ( diff > mult ) From f5e59c37fe41a96389c4dc2a6c85f4d7044ef3e1 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 1 Aug 2019 10:21:55 -1100 Subject: [PATCH 2/7] +print --- src/pow.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pow.cpp b/src/pow.cpp index c98928d3e..e305d347d 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -76,7 +76,10 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead arith_uint256 bnTarget,bnTot {0}; uint32_t nbits; int64_t diff,mult = 0; if ( pindexFirst != 0 && pblock != 0 ) + { mult = pblock->nTime - pindexFirst->nTime - 7 * ASSETCHAINS_BLOCKTIME; + fprintf(stderr,"ht.%d mult.%d = (%u - %u - 7x)\n",pindexLast->GetHeight(),mult,pblock->nTime, pindexFirst->nTime); + } for (int i = 0; pindexFirst && i < params.nPowAveragingWindow; i++) { arith_uint256 bnTmp; @@ -103,7 +106,10 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead bnTarget = bnTarget * arith_uint256(mult * mult); easy.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); if ( bnTarget < origtarget || bnTarget > easy ) + { bnTarget = easy; + fprintf(stderr,"mult.%d ht.%d -> easy target\n",(int32_t)mult,(int32_t)pindexLast->GetHeight()); + } else fprintf(stderr,"mult.%d for ht.%d\n",(int32_t)mult,(int32_t)pindexLast->GetHeight()); nbits = bnTarget.GetCompact(); } return(nbits); From 28c82425212af9a84e9de1b9521861a182192c56 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 1 Aug 2019 10:24:04 -1100 Subject: [PATCH 3/7] Print --- src/pow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pow.cpp b/src/pow.cpp index e305d347d..bff20b446 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -78,7 +78,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead if ( pindexFirst != 0 && pblock != 0 ) { mult = pblock->nTime - pindexFirst->nTime - 7 * ASSETCHAINS_BLOCKTIME; - fprintf(stderr,"ht.%d mult.%d = (%u - %u - 7x)\n",pindexLast->GetHeight(),mult,pblock->nTime, pindexFirst->nTime); + fprintf(stderr,"ht.%d mult.%d = (%u - %u - 7x)\n",pindexLast->GetHeight(),(int32_t)mult,pblock->nTime, pindexFirst->nTime); } for (int i = 0; pindexFirst && i < params.nPowAveragingWindow; i++) { From 45fcb5bcde9364394cfd158154221f234a812f4f Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 1 Aug 2019 10:26:46 -1100 Subject: [PATCH 4/7] +print --- src/pow.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pow.cpp b/src/pow.cpp index bff20b446..e8a9dca10 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -89,7 +89,10 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead { diff = pblock->nTime - pindexFirst->nTime - (8+i)*ASSETCHAINS_BLOCKTIME; if ( diff > mult ) + { + fprintf(stderr,"i.%d diff.%d (%u - %u - %dx)\n",i,(int32_t)diff,pblock->nTime,pindexFirst->nTime,(8+i)); mult = diff; + } } pindexFirst = pindexFirst->pprev; } From cd6b8c738e02c0bb055067397cb3a91f2633c47c Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 1 Aug 2019 10:30:26 -1100 Subject: [PATCH 5/7] +print --- src/pow.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pow.cpp b/src/pow.cpp index e8a9dca10..038f130e8 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -111,8 +111,8 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead if ( bnTarget < origtarget || bnTarget > easy ) { bnTarget = easy; - fprintf(stderr,"mult.%d ht.%d -> easy target\n",(int32_t)mult,(int32_t)pindexLast->GetHeight()); - } else fprintf(stderr,"mult.%d for ht.%d\n",(int32_t)mult,(int32_t)pindexLast->GetHeight()); + fprintf(stderr,"cmp.%d mult.%d ht.%d -> easy target\n",mult>1,(int32_t)mult,(int32_t)pindexLast->GetHeight()); + } else fprintf(stderr,"cmp.%d mult.%d for ht.%d\n",mult>1,(int32_t)mult,(int32_t)pindexLast->GetHeight()); nbits = bnTarget.GetCompact(); } return(nbits); From 58704437ced8622e123667d8158c0ba618d8c845 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 1 Aug 2019 10:32:58 -1100 Subject: [PATCH 6/7] int32_t --- src/pow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pow.cpp b/src/pow.cpp index 038f130e8..0a37dc8fb 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -74,7 +74,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead // Find the first block in the averaging interval const CBlockIndex* pindexFirst = pindexLast; arith_uint256 bnTarget,bnTot {0}; - uint32_t nbits; int64_t diff,mult = 0; + uint32_t nbits; int32_t diff,mult = 0; if ( pindexFirst != 0 && pblock != 0 ) { mult = pblock->nTime - pindexFirst->nTime - 7 * ASSETCHAINS_BLOCKTIME; From 977c6aa1b3d292ea95ffefefa71f5ef08bb25ef8 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 1 Aug 2019 10:56:54 -1100 Subject: [PATCH 7/7] Remove adjustment limits --- src/pow.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/pow.cpp b/src/pow.cpp index 0a37dc8fb..175137f06 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -103,7 +103,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead bool fNegative,fOverflow; arith_uint256 easy,origtarget,bnAvg {bnTot / params.nPowAveragingWindow}; nbits = CalculateNextWorkRequired(bnAvg, pindexLast->GetMedianTimePast(), pindexFirst->GetMedianTimePast(), params); - if ( ASSETCHAINS_ADAPTIVEPOW > 0 && mult > 1 ) + if ( ASSETCHAINS_ADAPTIVEPOW > 0 && mult > 1 ) // jl777: this test of mult > 1 failed when it was int64_t??? { origtarget = bnTarget = arith_uint256().SetCompact(nbits); bnTarget = bnTarget * arith_uint256(mult * mult); @@ -129,11 +129,13 @@ unsigned int CalculateNextWorkRequired(arith_uint256 bnAvg, nActualTimespan = params.AveragingWindowTimespan() + (nActualTimespan - params.AveragingWindowTimespan())/4; LogPrint("pow", " nActualTimespan = %d before bounds\n", nActualTimespan); - if (nActualTimespan < params.MinActualTimespan()) - nActualTimespan = params.MinActualTimespan(); - if (nActualTimespan > params.MaxActualTimespan()) - nActualTimespan = params.MaxActualTimespan(); - + if ( ASSETCHAINS_ADAPTIVEPOW <= 0 ) + { + if (nActualTimespan < params.MinActualTimespan()) + nActualTimespan = params.MinActualTimespan(); + if (nActualTimespan > params.MaxActualTimespan()) + nActualTimespan = params.MaxActualTimespan(); + } // Retarget arith_uint256 bnLimit; if (ASSETCHAINS_ALGO == ASSETCHAINS_EQUIHASH)