From 0c8f9b372921e1aa37a94b40ac35181b5583a831 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 25 Jul 2019 04:29:07 -1100 Subject: [PATCH 01/27] Add version field --- src/komodo_nSPV.h | 1 + src/komodo_nSPV_defs.h | 2 ++ src/komodo_nSPV_fullnode.h | 1 + src/komodo_nSPV_superlite.h | 2 +- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/komodo_nSPV.h b/src/komodo_nSPV.h index 9b23cb018..f88afd6c1 100644 --- a/src/komodo_nSPV.h +++ b/src/komodo_nSPV.h @@ -286,6 +286,7 @@ int32_t NSPV_rwinforesp(int32_t rwflag,uint8_t *serialized,struct NSPV_inforesp len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->height),&ptr->height); len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->hdrheight),&ptr->hdrheight); len += NSPV_rwequihdr(rwflag,&serialized[len],&ptr->H); + len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->version),&ptr->version); //fprintf(stderr,"hdr rwlen.%d\n",len); return(len); } diff --git a/src/komodo_nSPV_defs.h b/src/komodo_nSPV_defs.h index 8eeed8292..a27af170b 100644 --- a/src/komodo_nSPV_defs.h +++ b/src/komodo_nSPV_defs.h @@ -17,6 +17,7 @@ #ifndef KOMODO_NSPV_DEFSH #define KOMODO_NSPV_DEFSH +#define NSPV_PROTOCOL_VERSION 0x0001 #define NSPV_POLLITERS 100 #define NSPV_POLLMICROS 30000 #define NSPV_MAXVINS 64 @@ -124,6 +125,7 @@ struct NSPV_inforesp uint256 blockhash; int32_t height,hdrheight; struct NSPV_equihdr H; + uint32_t version; }; struct NSPV_txproof diff --git a/src/komodo_nSPV_fullnode.h b/src/komodo_nSPV_fullnode.h index 5e4ec0b25..897762c3a 100644 --- a/src/komodo_nSPV_fullnode.h +++ b/src/komodo_nSPV_fullnode.h @@ -133,6 +133,7 @@ int32_t NSPV_getinfo(struct NSPV_inforesp *ptr,int32_t reqheight) if ( reqheight == 0 ) reqheight = ptr->height; ptr->hdrheight = reqheight; + ptr->version = NSPV_PROTOCOL_VERSION; if ( NSPV_setequihdr(&ptr->H,reqheight) < 0 ) return(-1); return(sizeof(*ptr)); diff --git a/src/komodo_nSPV_superlite.h b/src/komodo_nSPV_superlite.h index d7f11c41b..316a51e45 100644 --- a/src/komodo_nSPV_superlite.h +++ b/src/komodo_nSPV_superlite.h @@ -139,7 +139,7 @@ void komodo_nSPVresp(CNode *pfrom,std::vector response) // received a r switch ( response[0] ) { case NSPV_INFORESP: - //fprintf(stderr,"got info response %u size.%d height.%d\n",timestamp,(int32_t)response.size(),NSPV_inforesult.height); // update current height and ntrz status + fprintf(stderr,"got version.%d info response %u size.%d height.%d\n",NSPV_inforesult.version,timestamp,(int32_t)response.size(),NSPV_inforesult.height); // update current height and ntrz status I = NSPV_inforesult; NSPV_inforesp_purge(&NSPV_inforesult); NSPV_rwinforesp(0,&response[1],&NSPV_inforesult); From fdf6f610f9201cef20cff2734b4e14977ed8c868 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 25 Jul 2019 04:34:57 -1100 Subject: [PATCH 02/27] Add version to netinfo --- src/komodo_nSPV_superlite.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/komodo_nSPV_superlite.h b/src/komodo_nSPV_superlite.h index 316a51e45..2babc69a7 100644 --- a/src/komodo_nSPV_superlite.h +++ b/src/komodo_nSPV_superlite.h @@ -370,6 +370,7 @@ UniValue NSPV_getinfo_json(struct NSPV_inforesp *ptr) result.push_back(Pair("chaintip",ptr->blockhash.GetHex())); result.push_back(Pair("notarization",NSPV_ntz_json(&ptr->notarization))); result.push_back(Pair("header",NSPV_header_json(&ptr->H,ptr->hdrheight))); + result.push_back(Pair("protocolversion",ptr->version)); result.push_back(Pair("lastpeer",NSPV_lastpeer)); return(result); } From 71610bb2661b74cab2c4fa022cb9e3db9a23a42a Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 25 Jul 2019 04:47:23 -1100 Subject: [PATCH 03/27] Version --- src/komodo_nSPV_fullnode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_nSPV_fullnode.h b/src/komodo_nSPV_fullnode.h index 897762c3a..424a7ce89 100644 --- a/src/komodo_nSPV_fullnode.h +++ b/src/komodo_nSPV_fullnode.h @@ -538,7 +538,7 @@ void komodo_nSPVreq(CNode *pfrom,std::vector request) // received a req { response.resize(1 + slen); response[0] = NSPV_INFORESP; - //fprintf(stderr,"slen.%d\n",slen); + fprintf(stderr,"version.%d\n",I.version); if ( NSPV_rwinforesp(1,&response[1],&I) == slen ) { //fprintf(stderr,"send info resp to id %d\n",(int32_t)pfrom->id); From fe89e15065de2dc70d8e2be4e76979ed4816f022 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 25 Jul 2019 04:47:51 -1100 Subject: [PATCH 04/27] Test --- src/komodo_nSPV_superlite.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_nSPV_superlite.h b/src/komodo_nSPV_superlite.h index 2babc69a7..24ceeb6b8 100644 --- a/src/komodo_nSPV_superlite.h +++ b/src/komodo_nSPV_superlite.h @@ -370,7 +370,7 @@ UniValue NSPV_getinfo_json(struct NSPV_inforesp *ptr) result.push_back(Pair("chaintip",ptr->blockhash.GetHex())); result.push_back(Pair("notarization",NSPV_ntz_json(&ptr->notarization))); result.push_back(Pair("header",NSPV_header_json(&ptr->H,ptr->hdrheight))); - result.push_back(Pair("protocolversion",ptr->version)); + result.push_back(Pair("protocolversion",(int64_t)ptr->version)); result.push_back(Pair("lastpeer",NSPV_lastpeer)); return(result); } From 8d37c1e4d19f3b41dca04024a9e6ad9963208f37 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 25 Jul 2019 04:48:49 -1100 Subject: [PATCH 05/27] -print --- src/komodo_nSPV_fullnode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_nSPV_fullnode.h b/src/komodo_nSPV_fullnode.h index 424a7ce89..8dbf40d68 100644 --- a/src/komodo_nSPV_fullnode.h +++ b/src/komodo_nSPV_fullnode.h @@ -538,7 +538,7 @@ void komodo_nSPVreq(CNode *pfrom,std::vector request) // received a req { response.resize(1 + slen); response[0] = NSPV_INFORESP; - fprintf(stderr,"version.%d\n",I.version); + //fprintf(stderr,"version.%d\n",I.version); if ( NSPV_rwinforesp(1,&response[1],&I) == slen ) { //fprintf(stderr,"send info resp to id %d\n",(int32_t)pfrom->id); From 40cb65a9370426cac28ee4d34c54a2483ca55063 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 25 Jul 2019 04:52:45 -1100 Subject: [PATCH 06/27] Getoinfo --- src/komodo_nSPV.h | 2 +- src/komodo_nSPV_fullnode.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/komodo_nSPV.h b/src/komodo_nSPV.h index f88afd6c1..8c65dc772 100644 --- a/src/komodo_nSPV.h +++ b/src/komodo_nSPV.h @@ -287,7 +287,7 @@ int32_t NSPV_rwinforesp(int32_t rwflag,uint8_t *serialized,struct NSPV_inforesp len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->hdrheight),&ptr->hdrheight); len += NSPV_rwequihdr(rwflag,&serialized[len],&ptr->H); len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->version),&ptr->version); -//fprintf(stderr,"hdr rwlen.%d\n",len); +fprintf(stderr,"getinfo rwlen.%d\n",len); return(len); } diff --git a/src/komodo_nSPV_fullnode.h b/src/komodo_nSPV_fullnode.h index 8dbf40d68..d5e741ebf 100644 --- a/src/komodo_nSPV_fullnode.h +++ b/src/komodo_nSPV_fullnode.h @@ -538,10 +538,10 @@ void komodo_nSPVreq(CNode *pfrom,std::vector request) // received a req { response.resize(1 + slen); response[0] = NSPV_INFORESP; - //fprintf(stderr,"version.%d\n",I.version); + fprintf(stderr,"slen.%d version.%d\n",slen,I.version); if ( NSPV_rwinforesp(1,&response[1],&I) == slen ) { - //fprintf(stderr,"send info resp to id %d\n",(int32_t)pfrom->id); + fprintf(stderr,"send info resp to id %d\n",(int32_t)pfrom->id); pfrom->PushMessage("nSPV",response); pfrom->prevtimes[ind] = timestamp; } From a62de7f72b4e57b1903938c679af58ed4e86222e Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 25 Jul 2019 04:56:21 -1100 Subject: [PATCH 07/27] -print --- src/komodo_nSPV.h | 2 +- src/komodo_nSPV_fullnode.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/komodo_nSPV.h b/src/komodo_nSPV.h index 8c65dc772..4695133c7 100644 --- a/src/komodo_nSPV.h +++ b/src/komodo_nSPV.h @@ -287,7 +287,7 @@ int32_t NSPV_rwinforesp(int32_t rwflag,uint8_t *serialized,struct NSPV_inforesp len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->hdrheight),&ptr->hdrheight); len += NSPV_rwequihdr(rwflag,&serialized[len],&ptr->H); len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->version),&ptr->version); -fprintf(stderr,"getinfo rwlen.%d\n",len); +//fprintf(stderr,"getinfo rwlen.%d\n",len); return(len); } diff --git a/src/komodo_nSPV_fullnode.h b/src/komodo_nSPV_fullnode.h index d5e741ebf..ff3156f37 100644 --- a/src/komodo_nSPV_fullnode.h +++ b/src/komodo_nSPV_fullnode.h @@ -538,10 +538,10 @@ void komodo_nSPVreq(CNode *pfrom,std::vector request) // received a req { response.resize(1 + slen); response[0] = NSPV_INFORESP; - fprintf(stderr,"slen.%d version.%d\n",slen,I.version); + //fprintf(stderr,"slen.%d version.%d\n",slen,I.version); if ( NSPV_rwinforesp(1,&response[1],&I) == slen ) { - fprintf(stderr,"send info resp to id %d\n",(int32_t)pfrom->id); + //fprintf(stderr,"send info resp to id %d\n",(int32_t)pfrom->id); pfrom->PushMessage("nSPV",response); pfrom->prevtimes[ind] = timestamp; } From 4642c0809447e01b969ccce0dce0b9d7c6161634 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 28 Jul 2019 06:10:57 -1100 Subject: [PATCH 08/27] Update nspv version --- src/komodo_nSPV_defs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_nSPV_defs.h b/src/komodo_nSPV_defs.h index bcefcbc95..282e58cab 100644 --- a/src/komodo_nSPV_defs.h +++ b/src/komodo_nSPV_defs.h @@ -17,7 +17,7 @@ #ifndef KOMODO_NSPV_DEFSH #define KOMODO_NSPV_DEFSH -#define NSPV_PROTOCOL_VERSION 0x0001 +#define NSPV_PROTOCOL_VERSION 0x00000002 #define NSPV_POLLITERS 100 #define NSPV_POLLMICROS 30000 #define NSPV_MAXVINS 64 From 21c8e021475eff8eb3a5bc8478b0c5ffac75c645 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 28 Jul 2019 06:31:53 -1100 Subject: [PATCH 09/27] -print --- src/komodo_nSPV_fullnode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_nSPV_fullnode.h b/src/komodo_nSPV_fullnode.h index 50f0f8c56..30b11ecb5 100644 --- a/src/komodo_nSPV_fullnode.h +++ b/src/komodo_nSPV_fullnode.h @@ -132,7 +132,7 @@ int32_t NSPV_getinfo(struct NSPV_inforesp *ptr,int32_t reqheight) ptr->notarization = pair.prevntz; if ( (pindex2= komodo_chainactive(ptr->notarization.txidheight)) != 0 ) ptr->notarization.timestamp = pindex->nTime; - fprintf(stderr, "timestamp.%i\n", ptr->notarization.timestamp ); + //fprintf(stderr, "timestamp.%i\n", ptr->notarization.timestamp ); if ( reqheight == 0 ) reqheight = ptr->height; ptr->hdrheight = reqheight; From 20f9a16c8015b15febee76ac1d1fd493016526a4 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 07:08:10 -1100 Subject: [PATCH 10/27] -ac_adaptivepow --- src/komodo_defs.h | 2 +- src/komodo_utils.h | 5 ++++- src/pow.cpp | 12 ++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/komodo_defs.h b/src/komodo_defs.h index 52d76c88c..d1ee2fb46 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -261,7 +261,7 @@ static const char *notaries_elected[NUM_KMD_SEASONS][NUM_KMD_NOTARIES][2] = //#define PRICES_DAYWINDOW (7) //#endif -extern uint8_t ASSETCHAINS_TXPOW,ASSETCHAINS_PUBLIC; +extern uint8_t ASSETCHAINS_TXPOW,ASSETCHAINS_PUBLIC,ASSETCHAINS_ADAPTIVEPOW; int32_t MAX_BLOCK_SIZE(int32_t height); extern char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN]; extern uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT; diff --git a/src/komodo_utils.h b/src/komodo_utils.h index 4ab61b4eb..31e87d82b 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1879,6 +1879,7 @@ void komodo_args(char *argv0) ASSETCHAINS_MARMARA = GetArg("-ac_marmara",0); ASSETCHAINS_CBOPRET = GetArg("-ac_cbopret",0); ASSETCHAINS_CBMATURITY = GetArg("-ac_cbmaturity",0); + ASSETCHAINS_ADAPTIVEPOW = GetArg("-ac_adaptivepow",0); //fprintf(stderr,"ASSETCHAINS_CBOPRET.%llx\n",(long long)ASSETCHAINS_CBOPRET); if ( ASSETCHAINS_CBOPRET != 0 ) { @@ -2065,7 +2066,7 @@ void komodo_args(char *argv0) fprintf(stderr,"-ac_script and -ac_marmara are mutually exclusive\n"); StartShutdown(); } - if ( ASSETCHAINS_ENDSUBSIDY[0] != 0 || ASSETCHAINS_REWARD[0] != 0 || ASSETCHAINS_HALVING[0] != 0 || ASSETCHAINS_DECAY[0] != 0 || ASSETCHAINS_COMMISSION != 0 || ASSETCHAINS_PUBLIC != 0 || ASSETCHAINS_PRIVATE != 0 || ASSETCHAINS_TXPOW != 0 || ASSETCHAINS_FOUNDERS != 0 || ASSETCHAINS_SCRIPTPUB.size() > 1 || ASSETCHAINS_SELFIMPORT.size() > 0 || ASSETCHAINS_OVERRIDE_PUBKEY33[0] != 0 || ASSETCHAINS_TIMELOCKGTE != _ASSETCHAINS_TIMELOCKOFF|| ASSETCHAINS_ALGO != ASSETCHAINS_EQUIHASH || ASSETCHAINS_LWMAPOS != 0 || ASSETCHAINS_LASTERA > 0 || ASSETCHAINS_BEAMPORT != 0 || ASSETCHAINS_CODAPORT != 0 || ASSETCHAINS_MARMARA != 0 || nonz > 0 || ASSETCHAINS_CCLIB.size() > 0 || ASSETCHAINS_FOUNDERS_REWARD != 0 || ASSETCHAINS_NOTARY_PAY[0] != 0 || ASSETCHAINS_BLOCKTIME != 60 || ASSETCHAINS_CBOPRET != 0 || Mineropret.size() != 0 || (ASSETCHAINS_NK[0] != 0 && ASSETCHAINS_NK[1] != 0) || KOMODO_SNAPSHOT_INTERVAL != 0 || ASSETCHAINS_EARLYTXIDCONTRACT != 0 || ASSETCHAINS_CBMATURITY != 0) + if ( ASSETCHAINS_ENDSUBSIDY[0] != 0 || ASSETCHAINS_REWARD[0] != 0 || ASSETCHAINS_HALVING[0] != 0 || ASSETCHAINS_DECAY[0] != 0 || ASSETCHAINS_COMMISSION != 0 || ASSETCHAINS_PUBLIC != 0 || ASSETCHAINS_PRIVATE != 0 || ASSETCHAINS_TXPOW != 0 || ASSETCHAINS_FOUNDERS != 0 || ASSETCHAINS_SCRIPTPUB.size() > 1 || ASSETCHAINS_SELFIMPORT.size() > 0 || ASSETCHAINS_OVERRIDE_PUBKEY33[0] != 0 || ASSETCHAINS_TIMELOCKGTE != _ASSETCHAINS_TIMELOCKOFF|| ASSETCHAINS_ALGO != ASSETCHAINS_EQUIHASH || ASSETCHAINS_LWMAPOS != 0 || ASSETCHAINS_LASTERA > 0 || ASSETCHAINS_BEAMPORT != 0 || ASSETCHAINS_CODAPORT != 0 || ASSETCHAINS_MARMARA != 0 || nonz > 0 || ASSETCHAINS_CCLIB.size() > 0 || ASSETCHAINS_FOUNDERS_REWARD != 0 || ASSETCHAINS_NOTARY_PAY[0] != 0 || ASSETCHAINS_BLOCKTIME != 60 || ASSETCHAINS_CBOPRET != 0 || Mineropret.size() != 0 || (ASSETCHAINS_NK[0] != 0 && ASSETCHAINS_NK[1] != 0) || KOMODO_SNAPSHOT_INTERVAL != 0 || ASSETCHAINS_EARLYTXIDCONTRACT != 0 || ASSETCHAINS_CBMATURITY != 0 || ASSETCHAINS_ADAPTIVEPOW != 0 ) { fprintf(stderr,"perc %.4f%% ac_pub=[%02x%02x%02x...] acsize.%d\n",dstr(ASSETCHAINS_COMMISSION)*100,ASSETCHAINS_OVERRIDE_PUBKEY33[0],ASSETCHAINS_OVERRIDE_PUBKEY33[1],ASSETCHAINS_OVERRIDE_PUBKEY33[2],(int32_t)ASSETCHAINS_SCRIPTPUB.size()); extraptr = extrabuf; @@ -2214,6 +2215,8 @@ fprintf(stderr,"extralen.%d before disable bits\n",extralen); { extralen += iguana_rwnum(1,&extraptr[extralen],sizeof(ASSETCHAINS_CBMATURITY),(void *)&ASSETCHAINS_CBMATURITY); } + if ( ASSETCHAINS_ADAPTIVEPOW != 0 ) + extraptr[extralen++] = ASSETCHAINS_ADAPTIVEPOW; } addn = GetArg("-seednode",""); diff --git a/src/pow.cpp b/src/pow.cpp index 6f5476abe..a2d1f7327 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -453,6 +453,18 @@ bool CheckProofOfWork(const CBlockHeader &blkHeader, uint8_t *pubkey33, int32_t arith_uint256 bnMaxPoSdiff; bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); } + else if ( ASSETCHAINS_ADAPTIVEPOW != 0 && ASSETCHAINS_STAKED == 0 ) + { + arith_uint256 origtarget; + uint32_t elapsed = (blkHeader.nTime - komodo_heightstamp(height)); + if ( elapsed > 777 ) + { + elapsed -= 777; + bnTarget = bnTarget / arith_uint256(elapsed * elapsed); + if ( bnTarget > origtarget ) + bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); + } + } // Check proof of work matches claimed amount if ( UintToArith256(hash = blkHeader.GetHash()) > bnTarget && !blkHeader.IsVerusPOSBlock() ) { From 35f7f057ca658574f742f209a30cc8bb64c54974 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 07:13:29 -1100 Subject: [PATCH 11/27] Tweak -ac_adaptivepow --- src/pow.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/pow.cpp b/src/pow.cpp index a2d1f7327..09fdf0c9c 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -456,13 +456,16 @@ bool CheckProofOfWork(const CBlockHeader &blkHeader, uint8_t *pubkey33, int32_t else if ( ASSETCHAINS_ADAPTIVEPOW != 0 && ASSETCHAINS_STAKED == 0 ) { arith_uint256 origtarget; - uint32_t elapsed = (blkHeader.nTime - komodo_heightstamp(height)); + uint32_t elapsed = (blkHeader.nTime - komodo_heightstamp(height-1)); if ( elapsed > 777 ) { elapsed -= 777; - bnTarget = bnTarget / arith_uint256(elapsed * elapsed); - if ( bnTarget > origtarget ) + bnTarget = bnTarget * arith_uint256(elapsed * elapsed); + if ( bnTarget < origtarget ) // deal with underflow + { bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); + fprintf(stderr,"underflowed, set to mindiff\n"); + } else fprintf(stderr,"elapsed %d, adjust by factor of %d\n",elapsed+777,elapsed*elapsed); } } // Check proof of work matches claimed amount From 70d31f3dd796155ac717edf8c5c15aba3792d3dc Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 08:17:03 -1100 Subject: [PATCH 12/27] Mine to the adjusted target --- src/miner.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/miner.cpp b/src/miner.cpp index 6f90127cf..ddb1a4bb7 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -1447,6 +1447,21 @@ void static BitcoinMiner_noeq() HASHTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); LogPrintf("Block %d : PoS %d%% vs target %d%%\n", Mining_height, percPoS, (int32_t)ASSETCHAINS_STAKED); } + else if ( ASSETCHAINS_ADAPTIVEPOW != 0 && ASSETCHAINS_STAKED == 0 ) + { + arith_uint256 origtarget; + uint32_t elapsed = (pblock->nTime - komodo_heightstamp(Mining_height-1)); + if ( elapsed > 777 ) + { + elapsed -= 777; + HASHTarget_POW = HASHTarget * arith_uint256(elapsed * elapsed); + if ( bnTarget < origtarget ) // deal with underflow + { + bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); + fprintf(stderr,"miner underflowed, set to mindiff\n"); + } else fprintf(stderr,"miner elapsed %d, adjust by factor of %d\n",elapsed+777,elapsed*elapsed); + } + } while (true) { @@ -1480,7 +1495,9 @@ void static BitcoinMiner_noeq() } else if ( ASSETCHAINS_STAKED == 100 && Mining_height > 100 ) hashTarget = HASHTarget; - + else if ( ASSETCHAINS_ADAPTIVEPOW != 0 && ASSETCHAINS_STAKED == 0 ) + hashTarget = HASHTarget_POW; + // for speed check NONCEMASK at a time for (i = 0; i < count; i++) { From 439fee9bc7a0d1111aba7971c58e68996d18da21 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 08:18:24 -1100 Subject: [PATCH 13/27] ASSETCHAINS_ADAPTIVEPOW --- src/komodo_globals.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_globals.h b/src/komodo_globals.h index 22f991edd..de42f12b1 100644 --- a/src/komodo_globals.h +++ b/src/komodo_globals.h @@ -50,7 +50,7 @@ uint256 KOMODO_EARLYTXID; int32_t KOMODO_MININGTHREADS = -1,IS_KOMODO_NOTARY,IS_STAKED_NOTARY,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAINS_SEED,KOMODO_ON_DEMAND,KOMODO_EXTERNAL_NOTARIES,KOMODO_PASSPORT_INITDONE,KOMODO_PAX,KOMODO_EXCHANGEWALLET,KOMODO_REWIND,STAKED_ERA,KOMODO_CONNECTING = -1,KOMODO_DEALERNODE,KOMODO_EXTRASATOSHI,ASSETCHAINS_FOUNDERS,ASSETCHAINS_CBMATURITY,KOMODO_NSPV; int32_t KOMODO_INSYNC,KOMODO_LASTMINED,prevKOMODO_LASTMINED,KOMODO_CCACTIVATE,JUMBLR_PAUSE = 1; std::string NOTARY_PUBKEY,ASSETCHAINS_NOTARIES,ASSETCHAINS_OVERRIDE_PUBKEY,DONATION_PUBKEY,ASSETCHAINS_SCRIPTPUB,NOTARY_ADDRESS,ASSETCHAINS_SELFIMPORT,ASSETCHAINS_CCLIB; -uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEYHASH[20],ASSETCHAINS_PUBLIC,ASSETCHAINS_PRIVATE,ASSETCHAINS_TXPOW,ASSETCHAINS_MARMARA; +uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEYHASH[20],ASSETCHAINS_PUBLIC,ASSETCHAINS_PRIVATE,ASSETCHAINS_TXPOW,ASSETCHAINS_MARMARA,ASSETCHAINS_ADAPTIVEPOW; bool VERUS_MINTBLOCKS; std::vector Mineropret; std::vector vWhiteListAddress; From 5d19239884adf5ebbabdee5cacda5ada89121a95 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 08:21:00 -1100 Subject: [PATCH 14/27] Set origtargert --- src/miner.cpp | 5 +++-- src/pow.cpp | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/miner.cpp b/src/miner.cpp index ddb1a4bb7..791b8ba18 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -1449,13 +1449,14 @@ void static BitcoinMiner_noeq() } else if ( ASSETCHAINS_ADAPTIVEPOW != 0 && ASSETCHAINS_STAKED == 0 ) { - arith_uint256 origtarget; + arith_uint256 origtarget; bool fNegative,fOverflow; uint32_t elapsed = (pblock->nTime - komodo_heightstamp(Mining_height-1)); if ( elapsed > 777 ) { elapsed -= 777; + origtarget = HASHTarget; HASHTarget_POW = HASHTarget * arith_uint256(elapsed * elapsed); - if ( bnTarget < origtarget ) // deal with underflow + if ( HASHTarget < origtarget ) // deal with underflow { bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); fprintf(stderr,"miner underflowed, set to mindiff\n"); diff --git a/src/pow.cpp b/src/pow.cpp index 09fdf0c9c..47d538031 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -460,6 +460,7 @@ bool CheckProofOfWork(const CBlockHeader &blkHeader, uint8_t *pubkey33, int32_t if ( elapsed > 777 ) { elapsed -= 777; + origtarget = bnTarget; bnTarget = bnTarget * arith_uint256(elapsed * elapsed); if ( bnTarget < origtarget ) // deal with underflow { From b55da040258852a5b81f4232b9ec948ee25e1a13 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 08:22:32 -1100 Subject: [PATCH 15/27] HASHTarget_POW --- src/miner.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/miner.cpp b/src/miner.cpp index 791b8ba18..16500b60d 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -1456,9 +1456,9 @@ void static BitcoinMiner_noeq() elapsed -= 777; origtarget = HASHTarget; HASHTarget_POW = HASHTarget * arith_uint256(elapsed * elapsed); - if ( HASHTarget < origtarget ) // deal with underflow + if ( HASHTarget_POW < origtarget ) // deal with underflow { - bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); + HASHTarget_POW.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); fprintf(stderr,"miner underflowed, set to mindiff\n"); } else fprintf(stderr,"miner elapsed %d, adjust by factor of %d\n",elapsed+777,elapsed*elapsed); } From 02e68518706699bf266a986eab4cd6886733e1a4 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 21:25:49 -1100 Subject: [PATCH 16/27] Update adaptivepow to handle variable block times --- src/komodo_bitcoind.h | 23 +++++++++++++++++++++++ src/komodo_defs.h | 1 + src/miner.cpp | 18 ++---------------- src/pow.cpp | 16 +--------------- 4 files changed, 27 insertions(+), 31 deletions(-) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index d34b626c6..0533192a8 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -1416,6 +1416,29 @@ uint32_t komodo_stakehash(uint256 *hashp,char *address,uint8_t *hashbuf,uint256 return(addrhash.uints[0]); } +arith_uint256 komodo_adaptivepow_target(int32_t height,arith_uint256 bnTarget,uint32_t nTime) +{ + arith_uint256 origtarget,easy; int32_t diff,mult; bool fNegative,fOverflow; CBlockIndex *tipindex; + if ( height > 10 && (tipindex= komodo_chainactive(height - 1)) != 0 ) + { + diff = (nTime - tipindex->GetMedianTimePast()); + if ( diff > 20 * ASSETCHAINS_BLOCKTIME ) + { + mult = diff - 19 * ASSETCHAINS_BLOCKTIME; + mult = (mult / ASSETCHAINS_BLOCKTIME) * ASSETCHAINS_BLOCKTIME + ASSETCHAINS_BLOCKTIME / 3; + origtarget = bnTarget; + bnTarget = bnTarget * arith_uint256(mult * mult); + easy.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); + if ( bnTarget < origtarget || bnTarget > easy ) // deal with overflow + { + bnTarget = easy; + fprintf(stderr,"miner overflowed, set to mindiff\n"); + } else fprintf(stderr,"miner elapsed %d, adjust by factor of %d\n",diff,mult); + } + } + return(bnTarget); +} + arith_uint256 komodo_PoWtarget(int32_t *percPoSp,arith_uint256 target,int32_t height,int32_t goalperc) { int32_t oldflag = 0,dispflag = 0; diff --git a/src/komodo_defs.h b/src/komodo_defs.h index d1ee2fb46..9d891eeda 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -337,6 +337,7 @@ int32_t komodo_priceget(int64_t *buf64,int32_t ind,int32_t height,int32_t numblo uint64_t komodo_accrued_interest(int32_t *txheightp,uint32_t *locktimep,uint256 hash,int32_t n,int32_t checkheight,uint64_t checkvalue,int32_t tipheight); int32_t komodo_currentheight(); int32_t komodo_notarized_bracket(struct notarized_checkpoint *nps[2],int32_t height); +arith_uint256 komodo_adaptivepow_target(int32_t height,arith_uint256 bnTarget,uint32_t nTime); uint256 Parseuint256(const char *hexstr); diff --git a/src/miner.cpp b/src/miner.cpp index 16500b60d..04d93fd9c 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -1448,22 +1448,8 @@ void static BitcoinMiner_noeq() LogPrintf("Block %d : PoS %d%% vs target %d%%\n", Mining_height, percPoS, (int32_t)ASSETCHAINS_STAKED); } else if ( ASSETCHAINS_ADAPTIVEPOW != 0 && ASSETCHAINS_STAKED == 0 ) - { - arith_uint256 origtarget; bool fNegative,fOverflow; - uint32_t elapsed = (pblock->nTime - komodo_heightstamp(Mining_height-1)); - if ( elapsed > 777 ) - { - elapsed -= 777; - origtarget = HASHTarget; - HASHTarget_POW = HASHTarget * arith_uint256(elapsed * elapsed); - if ( HASHTarget_POW < origtarget ) // deal with underflow - { - HASHTarget_POW.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); - fprintf(stderr,"miner underflowed, set to mindiff\n"); - } else fprintf(stderr,"miner elapsed %d, adjust by factor of %d\n",elapsed+777,elapsed*elapsed); - } - } - + HASHTarget_POW = komodo_adaptivepow_target(height,HASHTarget,pblock->nTime); + while (true) { arith_uint256 arNonce = UintToArith256(pblock->nNonce); diff --git a/src/pow.cpp b/src/pow.cpp index 47d538031..bc862b835 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -454,21 +454,7 @@ bool CheckProofOfWork(const CBlockHeader &blkHeader, uint8_t *pubkey33, int32_t bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); } else if ( ASSETCHAINS_ADAPTIVEPOW != 0 && ASSETCHAINS_STAKED == 0 ) - { - arith_uint256 origtarget; - uint32_t elapsed = (blkHeader.nTime - komodo_heightstamp(height-1)); - if ( elapsed > 777 ) - { - elapsed -= 777; - origtarget = bnTarget; - bnTarget = bnTarget * arith_uint256(elapsed * elapsed); - if ( bnTarget < origtarget ) // deal with underflow - { - bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); - fprintf(stderr,"underflowed, set to mindiff\n"); - } else fprintf(stderr,"elapsed %d, adjust by factor of %d\n",elapsed+777,elapsed*elapsed); - } - } + bnTarget = komodo_adaptivepow_target(height,bnTarget,blkHeader.nTime); // Check proof of work matches claimed amount if ( UintToArith256(hash = blkHeader.GetHash()) > bnTarget && !blkHeader.IsVerusPOSBlock() ) { From fc47ea72e715f2b9b3e302ec4945f83b030c40f3 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 21:42:10 -1100 Subject: [PATCH 17/27] Modify bitcoinminer --- src/miner.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/miner.cpp b/src/miner.cpp index 04d93fd9c..14c666a07 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -1448,7 +1448,7 @@ void static BitcoinMiner_noeq() LogPrintf("Block %d : PoS %d%% vs target %d%%\n", Mining_height, percPoS, (int32_t)ASSETCHAINS_STAKED); } else if ( ASSETCHAINS_ADAPTIVEPOW != 0 && ASSETCHAINS_STAKED == 0 ) - HASHTarget_POW = komodo_adaptivepow_target(height,HASHTarget,pblock->nTime); + HASHTarget_POW = komodo_adaptivepow_target(Mining_height,HASHTarget,pblock->nTime); while (true) { @@ -1820,6 +1820,8 @@ void static BitcoinMiner() if ( ASSETCHAINS_STAKED < 100 ) LogPrintf("Block %d : PoS %d%% vs target %d%% \n",Mining_height,percPoS,(int32_t)ASSETCHAINS_STAKED); } + else if ( ASSETCHAINS_ADAPTIVEPOW != 0 ) + HASHTarget_POW = komodo_adaptivepow_target(Mining_height,HASHTarget,pblock->nTime); gotinvalid = 0; while (true) { @@ -1847,6 +1849,8 @@ void static BitcoinMiner() arith_uint256 hashTarget; if ( KOMODO_MININGTHREADS > 0 && ASSETCHAINS_STAKED > 0 && ASSETCHAINS_STAKED < 100 && Mining_height > 10 ) hashTarget = HASHTarget_POW; + else if ( ASSETCHAINS_ADAPTIVEPOW != 0 ) + hashTarget = HASHTarget_POW; else hashTarget = HASHTarget; std::function)> validBlock = #ifdef ENABLE_WALLET @@ -2036,6 +2040,8 @@ void static BitcoinMiner() // Update nNonce and nTime pblock->nNonce = ArithToUint256(UintToArith256(pblock->nNonce) + 1); pblock->nBits = savebits; + if ( ASSETCHAINS_ADAPTIVEPOW != 0 ) + UpdateTime(pblock, consensusParams, pindexPrev); /*if ( NOTARY_PUBKEY33[0] == 0 ) { int32_t percPoS; From cb90a6d2769b67f88148ea05aa88ac9d80596e9f Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 21:51:28 -1100 Subject: [PATCH 18/27] chainparams.GetConsensus() --- src/miner.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/miner.cpp b/src/miner.cpp index 14c666a07..19e853479 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -2041,7 +2041,7 @@ void static BitcoinMiner() pblock->nNonce = ArithToUint256(UintToArith256(pblock->nNonce) + 1); pblock->nBits = savebits; if ( ASSETCHAINS_ADAPTIVEPOW != 0 ) - UpdateTime(pblock, consensusParams, pindexPrev); + UpdateTime(pblock, chainparams.GetConsensus(), pindexPrev); /*if ( NOTARY_PUBKEY33[0] == 0 ) { int32_t percPoS; From b12e3b07dd2f1dbac1d0b7933dacfbcc10cd6b93 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 22:27:35 -1100 Subject: [PATCH 19/27] #include "arith_uint256.h" --- src/komodo_defs.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/komodo_defs.h b/src/komodo_defs.h index 9d891eeda..10d71ea96 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -15,6 +15,8 @@ #ifndef KOMODO_DEFS_H #define KOMODO_DEFS_H +#include "arith_uint256.h" + #include "komodo_nk.h" #define KOMODO_EARLYTXID_HEIGHT 100 From 8d8db33d1532b3be2103073ef21909843e52574b Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 23:25:05 -1100 Subject: [PATCH 20/27] Check Pow in komodo_checkpow --- src/komodo_bitcoind.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index 0533192a8..84b8eaaf1 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -1418,7 +1418,7 @@ uint32_t komodo_stakehash(uint256 *hashp,char *address,uint8_t *hashbuf,uint256 arith_uint256 komodo_adaptivepow_target(int32_t height,arith_uint256 bnTarget,uint32_t nTime) { - arith_uint256 origtarget,easy; int32_t diff,mult; bool fNegative,fOverflow; CBlockIndex *tipindex; + arith_uint256 origtarget,easy; int32_t diff; int64_t mult; bool fNegative,fOverflow; CBlockIndex *tipindex; if ( height > 10 && (tipindex= komodo_chainactive(height - 1)) != 0 ) { diff = (nTime - tipindex->GetMedianTimePast()); @@ -1432,8 +1432,8 @@ arith_uint256 komodo_adaptivepow_target(int32_t height,arith_uint256 bnTarget,ui if ( bnTarget < origtarget || bnTarget > easy ) // deal with overflow { bnTarget = easy; - fprintf(stderr,"miner overflowed, set to mindiff\n"); - } else fprintf(stderr,"miner elapsed %d, adjust by factor of %d\n",diff,mult); + fprintf(stderr,"miner overflowed mult.%lld, set to mindiff\n",(long long)mult); + } else fprintf(stderr,"miner elapsed %d, adjust by factor of %d\n",diff,(long long)mult); } } return(bnTarget); @@ -2268,6 +2268,8 @@ int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height) } hash = pblock->GetHash(); bnTarget.SetCompact(pblock->nBits,&fNegative,&fOverflow); + if ( ASSETCHAINS_ADAPTIVEPOW != 0 ) + bnTarget = komodo_adaptivepow_target(height,bnTarget,pblock->nTime); bhash = UintToArith256(hash); possible = komodo_block2pubkey33(pubkey33,pblock); if ( height == 0 ) From b38bc73ebdfcb7dc86a597d591bd1248c7f46a4f Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 29 Jul 2019 23:26:54 -1100 Subject: [PATCH 21/27] Print --- src/komodo_bitcoind.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index 84b8eaaf1..f146d0d03 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -1433,7 +1433,7 @@ arith_uint256 komodo_adaptivepow_target(int32_t height,arith_uint256 bnTarget,ui { bnTarget = easy; fprintf(stderr,"miner overflowed mult.%lld, set to mindiff\n",(long long)mult); - } else fprintf(stderr,"miner elapsed %d, adjust by factor of %d\n",diff,(long long)mult); + } else fprintf(stderr,"miner elapsed %d, adjust by factor of %lld\n",diff,(long long)mult); } } return(bnTarget); From 41f4f5daee759484c044efb9036200489b95f189 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 30 Jul 2019 00:58:12 -1100 Subject: [PATCH 22/27] +prints --- src/komodo_bitcoind.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index f146d0d03..0e8c700a8 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -1435,7 +1435,7 @@ arith_uint256 komodo_adaptivepow_target(int32_t height,arith_uint256 bnTarget,ui fprintf(stderr,"miner overflowed mult.%lld, set to mindiff\n",(long long)mult); } else fprintf(stderr,"miner elapsed %d, adjust by factor of %lld\n",diff,(long long)mult); } - } + } else fprintf(stderr,"cant find height.%d\n",height); return(bnTarget); } @@ -2268,8 +2268,6 @@ int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height) } hash = pblock->GetHash(); bnTarget.SetCompact(pblock->nBits,&fNegative,&fOverflow); - if ( ASSETCHAINS_ADAPTIVEPOW != 0 ) - bnTarget = komodo_adaptivepow_target(height,bnTarget,pblock->nTime); bhash = UintToArith256(hash); possible = komodo_block2pubkey33(pubkey33,pblock); if ( height == 0 ) @@ -2285,6 +2283,8 @@ int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height) if ( height == 0 ) return(0); } + if ( ASSETCHAINS_ADAPTIVEPOW != 0 ) + bnTarget = komodo_adaptivepow_target(height,bnTarget,pblock->nTime); if ( ASSETCHAINS_LWMAPOS != 0 && bhash > bnTarget ) { // if proof of stake is active, check if this is a valid PoS block before we fail From dd17d299b11292739cf3e446146e3797fe137872 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 30 Jul 2019 01:40:17 -1100 Subject: [PATCH 23/27] -print --- src/komodo_bitcoind.h | 2 +- src/komodo_nSPV_superlite.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index 0e8c700a8..0df145eee 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -1435,7 +1435,7 @@ arith_uint256 komodo_adaptivepow_target(int32_t height,arith_uint256 bnTarget,ui fprintf(stderr,"miner overflowed mult.%lld, set to mindiff\n",(long long)mult); } else fprintf(stderr,"miner elapsed %d, adjust by factor of %lld\n",diff,(long long)mult); } - } else fprintf(stderr,"cant find height.%d\n",height); + } //else fprintf(stderr,"cant find height.%d\n",height); return(bnTarget); } diff --git a/src/komodo_nSPV_superlite.h b/src/komodo_nSPV_superlite.h index 24ceeb6b8..51fc373df 100644 --- a/src/komodo_nSPV_superlite.h +++ b/src/komodo_nSPV_superlite.h @@ -587,7 +587,7 @@ UniValue NSPV_addressutxos(char *coinaddr,int32_t CCflag,int32_t skipcount,int32 { UniValue result(UniValue::VOBJ); uint8_t msg[512]; int32_t i,iter,slen,len = 0; //fprintf(stderr,"utxos %s NSPV addr %s\n",coinaddr,NSPV_address.c_str()); - if ( NSPV_utxosresult.nodeheight >= NSPV_inforesult.height && strcmp(coinaddr,NSPV_utxosresult.coinaddr) == 0 && CCflag == NSPV_utxosresult.CCflag && skipcount == NSPV_utxosresult.skipcount ) + if ( NSPV_utxosresult.nodeheight >= NSPV_inforesult.height && strcmp(coinaddr,NSPV_utxosresult.coinaddr) == 0 && CCflag == NSPV_utxosresult.CCflag && skipcount == NSPV_utxosresult.skipcount && filter == NSPV_utxosresult.filter ) return(NSPV_utxosresp_json(&NSPV_utxosresult)); if ( skipcount < 0 ) skipcount = 0; From b065c7ed26807ec8080ef07c65044992afb9591b Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 30 Jul 2019 01:45:07 -1100 Subject: [PATCH 24/27] Remove utxo caching --- src/komodo_nSPV_superlite.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/komodo_nSPV_superlite.h b/src/komodo_nSPV_superlite.h index 51fc373df..29e60aa75 100644 --- a/src/komodo_nSPV_superlite.h +++ b/src/komodo_nSPV_superlite.h @@ -587,8 +587,8 @@ UniValue NSPV_addressutxos(char *coinaddr,int32_t CCflag,int32_t skipcount,int32 { UniValue result(UniValue::VOBJ); uint8_t msg[512]; int32_t i,iter,slen,len = 0; //fprintf(stderr,"utxos %s NSPV addr %s\n",coinaddr,NSPV_address.c_str()); - if ( NSPV_utxosresult.nodeheight >= NSPV_inforesult.height && strcmp(coinaddr,NSPV_utxosresult.coinaddr) == 0 && CCflag == NSPV_utxosresult.CCflag && skipcount == NSPV_utxosresult.skipcount && filter == NSPV_utxosresult.filter ) - return(NSPV_utxosresp_json(&NSPV_utxosresult)); + //if ( NSPV_utxosresult.nodeheight >= NSPV_inforesult.height && strcmp(coinaddr,NSPV_utxosresult.coinaddr) == 0 && CCflag == NSPV_utxosresult.CCflag && skipcount == NSPV_utxosresult.skipcount && filter == NSPV_utxosresult.filter ) + // return(NSPV_utxosresp_json(&NSPV_utxosresult)); if ( skipcount < 0 ) skipcount = 0; NSPV_utxosresp_purge(&NSPV_utxosresult); From fbd69abd802e33a15434eac3fdd609d1adff9679 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 30 Jul 2019 03:37:46 -1100 Subject: [PATCH 25/27] +print --- src/komodo_bitcoind.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index 0df145eee..f1caf47c0 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -1434,8 +1434,8 @@ arith_uint256 komodo_adaptivepow_target(int32_t height,arith_uint256 bnTarget,ui bnTarget = easy; fprintf(stderr,"miner overflowed mult.%lld, set to mindiff\n",(long long)mult); } else fprintf(stderr,"miner elapsed %d, adjust by factor of %lld\n",diff,(long long)mult); - } - } //else fprintf(stderr,"cant find height.%d\n",height); + } else fprintf(stderr,"diff %d, vs 120\n",diff); + } else fprintf(stderr,"cant find height.%d\n",height); return(bnTarget); } From ab9169210ba36e6ff434cd09d413f2504fc022c7 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 30 Jul 2019 04:06:18 -1100 Subject: [PATCH 26/27] Test changing of default --- src/komodo_utils.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/komodo_utils.h b/src/komodo_utils.h index 31e87d82b..d2a9e12a1 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -2431,6 +2431,14 @@ fprintf(stderr,"extralen.%d before disable bits\n",extralen); CCENABLE(EVAL_DICE); CCENABLE(EVAL_ORACLES); } + if ( (pindex= komodo_activechain(1)) != 0 ) + { + if ( pindex->nTime > 1564499104 ) + { + ASSETCHAINS_ADAPTIVEPOW = 1; + fprintf(stderr,"default activate adaptivepow\n"); + } + } else fprintf(stderr,"cant find height 1\n"); } else BITCOIND_RPCPORT = GetArg("-rpcport", BaseParams().RPCPort()); KOMODO_DPOWCONFS = GetArg("-dpowconfs",dpowconfs); if ( ASSETCHAINS_SYMBOL[0] == 0 || strcmp(ASSETCHAINS_SYMBOL,"SUPERNET") == 0 || strcmp(ASSETCHAINS_SYMBOL,"DEX") == 0 || strcmp(ASSETCHAINS_SYMBOL,"COQUI") == 0 || strcmp(ASSETCHAINS_SYMBOL,"PIRATE") == 0 || strcmp(ASSETCHAINS_SYMBOL,"KMDICE") == 0 ) From 96d9bcb45ebc788fb17b2f4e527fd47154024364 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 30 Jul 2019 04:07:34 -1100 Subject: [PATCH 27/27] Test timestamp --- src/komodo_utils.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_utils.h b/src/komodo_utils.h index d2a9e12a1..8f9ece3a0 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -2433,7 +2433,7 @@ fprintf(stderr,"extralen.%d before disable bits\n",extralen); } if ( (pindex= komodo_activechain(1)) != 0 ) { - if ( pindex->nTime > 1564499104 ) + if ( pindex->nTime > 1564499104-365*2*1440 ) { ASSETCHAINS_ADAPTIVEPOW = 1; fprintf(stderr,"default activate adaptivepow\n");