From 0a92b261a87782c955d8d76a7e86116835e77125 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 24 Aug 2017 17:10:59 +0200 Subject: [PATCH 01/16] Remove printout --- src/komodo_jumblr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_jumblr.h b/src/komodo_jumblr.h index 7f31e18e4..96d225c46 100755 --- a/src/komodo_jumblr.h +++ b/src/komodo_jumblr.h @@ -642,7 +642,7 @@ void jumblr_iteration() biggest = SATOSHIDEN * ((JUMBLR_INCR + 3*fee)*777 + 3*JUMBLR_TXFEE); OS_randombytes((uint8_t *)&r,sizeof(r)); s = (r % 3); - printf("jumblr_iteration r.%u s.%u\n",r,s); + //printf("jumblr_iteration r.%u s.%u\n",r,s); switch ( s ) { case 0: // t -> z From ee0c53e50cebc1594ea0e49497125036b144fb3e Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 24 Aug 2017 17:46:36 +0200 Subject: [PATCH 02/16] Test --- src/komodo_pax.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index ed5b48436..f695e0d53 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -617,7 +617,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin if ( ASSETCHAINS_SYMBOL[0] == 0 && chainActive.Tip() != 0 && height > chainActive.Tip()->nHeight ) { if ( height < 100000000 ) - printf("height.%d vs tip.%d\n",height,chainActive.Tip()->nHeight); + printf("komodo_paxprice height.%d vs tip.%d\n",height,chainActive.Tip()->nHeight); return(0); } *seedp = komodo_seed(height); From a3aeae368fc90aacd9a9de10cfa9ccd14809a338 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 26 Aug 2017 09:47:13 +0200 Subject: [PATCH 03/16] Test --- src/komodo_pax.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index f695e0d53..7c32b583a 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -570,8 +570,8 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin // fprintf(stderr,"[%llu] ",(long long)votes[numvotes-1-i]); } } - //fprintf(stderr,"kmdbtc %llu btcusd %llu ",(long long)kmdbtc,(long long)btcusd); - //fprintf(stderr,"komodo_paxprice nonz.%d of numvotes.%d seed.%llu %.8f\n",nonz,numvotes,(long long)seed,nonz!=0?dstr(1000. * (double)sum/nonz):0); + fprintf(stderr,"kmdbtc %llu btcusd %llu ",(long long)kmdbtc,(long long)btcusd); + fprintf(stderr,"komodo_paxprice nonz.%d of numvotes.%d seed.%llu %.8f\n",nonz,numvotes,(long long)seed,nonz!=0?dstr(1000. * (double)sum/nonz):0); if ( nonz <= (numvotes >> 1) ) { return(0); @@ -585,12 +585,12 @@ uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint if ( height >= 236000 && strcmp(rel,"kmd") == 0 ) { usdkmd = _komodo_paxpriceB(seed,height,(char *)"USD",(char *)"KMD",SATOSHIDEN); + printf("komodo_paxpriceB USDKMD %llu\n",(long long)usdkmd); if ( strcmp("usd",base) == 0 ) return(komodo_paxvol(basevolume,usdkmd) * 10); baseusd = _komodo_paxpriceB(seed,height,base,(char *)"USD",SATOSHIDEN); basekmd = (komodo_paxvol(basevolume,baseusd) * usdkmd) / 10000000; - //if ( strcmp("KMD",base) == 0 ) - // printf("baseusd.%llu usdkmd.%llu %llu\n",(long long)baseusd,(long long)usdkmd,(long long)basekmd); + printf("komodo_paxpriceB baseusd.%llu usdkmd.%llu %llu\n",(long long)baseusd,(long long)usdkmd,(long long)basekmd); return(basekmd); } else return(_komodo_paxpriceB(seed,height,base,rel,basevolume)); } From 3f0bb97653eee6e41ee31a86a694ddc89cb737ae Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 26 Aug 2017 10:05:01 +0200 Subject: [PATCH 04/16] Test --- src/komodo_pax.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 7c32b583a..0a2c77012 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -240,7 +240,7 @@ int32_t komodo_pax_opreturn(uint8_t *opret,int32_t maxsize) double KMDBTC,BTCUSD,CNYUSD; uint32_t pvals[128]; if ( dpow_readprices(&data[len],×tamp,&KMDBTC,&BTCUSD,&CNYUSD,pvals) > 0 ) { - if ( 0 && lastcrc != crc32 ) + if ( 1 && lastcrc != crc32 ) { for (i=0; i<32; i++) printf("%u ",pvals[i]); @@ -570,8 +570,8 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin // fprintf(stderr,"[%llu] ",(long long)votes[numvotes-1-i]); } } - fprintf(stderr,"kmdbtc %llu btcusd %llu ",(long long)kmdbtc,(long long)btcusd); - fprintf(stderr,"komodo_paxprice nonz.%d of numvotes.%d seed.%llu %.8f\n",nonz,numvotes,(long long)seed,nonz!=0?dstr(1000. * (double)sum/nonz):0); + //fprintf(stderr,"kmdbtc %llu btcusd %llu ",(long long)kmdbtc,(long long)btcusd); + //fprintf(stderr,"komodo_paxprice nonz.%d of numvotes.%d seed.%llu %.8f\n",nonz,numvotes,(long long)seed,nonz!=0?dstr(1000. * (double)sum/nonz):0); if ( nonz <= (numvotes >> 1) ) { return(0); @@ -585,12 +585,12 @@ uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint if ( height >= 236000 && strcmp(rel,"kmd") == 0 ) { usdkmd = _komodo_paxpriceB(seed,height,(char *)"USD",(char *)"KMD",SATOSHIDEN); - printf("komodo_paxpriceB USDKMD %llu\n",(long long)usdkmd); if ( strcmp("usd",base) == 0 ) return(komodo_paxvol(basevolume,usdkmd) * 10); baseusd = _komodo_paxpriceB(seed,height,base,(char *)"USD",SATOSHIDEN); basekmd = (komodo_paxvol(basevolume,baseusd) * usdkmd) / 10000000; - printf("komodo_paxpriceB baseusd.%llu usdkmd.%llu %llu\n",(long long)baseusd,(long long)usdkmd,(long long)basekmd); + //if ( strcmp("KMD",base) == 0 ) + // printf("baseusd.%llu usdkmd.%llu %llu\n",(long long)baseusd,(long long)usdkmd,(long long)basekmd); return(basekmd); } else return(_komodo_paxpriceB(seed,height,base,rel,basevolume)); } From 3764439ef37eb1efcd46213e0309f07e61242b15 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 26 Aug 2017 10:50:40 +0200 Subject: [PATCH 05/16] Test --- src/komodo_pax.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 0a2c77012..1bffd20e5 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -240,7 +240,7 @@ int32_t komodo_pax_opreturn(uint8_t *opret,int32_t maxsize) double KMDBTC,BTCUSD,CNYUSD; uint32_t pvals[128]; if ( dpow_readprices(&data[len],×tamp,&KMDBTC,&BTCUSD,&CNYUSD,pvals) > 0 ) { - if ( 1 && lastcrc != crc32 ) + if ( 0 && lastcrc != crc32 ) { for (i=0; i<32; i++) printf("%u ",pvals[i]); @@ -683,7 +683,12 @@ void komodo_paxpricefeed(int32_t height,uint8_t *pricefeed,int32_t opretlen) numpvals = dpow_readprices(pricefeed,×tamp,&KMDBTC,&BTCUSD,&CNYUSD,pvals); memset(&zero,0,sizeof(zero)); komodo_stateupdate(height,0,0,0,zero,0,0,pvals,numpvals,0,0,0,0,0,0); - //printf("komodo_paxpricefeed vout OP_RETURN.%d prices numpvals.%d opretlen.%d\n",height,numpvals,opretlen); + { + int32_t i; + for (i=0; i Date: Sat, 26 Aug 2017 10:56:13 +0200 Subject: [PATCH 06/16] Test --- src/komodo_pax.h | 2 +- src/miner.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 1bffd20e5..93f319b7c 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -262,7 +262,7 @@ int32_t komodo_pax_opreturn(uint8_t *opret,int32_t maxsize) } else printf("fread.%d error != fsize.%d\n",retval,fsize); } else printf("fsize.%d > maxsize.%d or data[%d]\n",fsize,maxsize,(int32_t)sizeof(data)); fclose(fp); - } + } else printf("couldnt open %s\n",fname); return(n); } diff --git a/src/miner.cpp b/src/miner.cpp index 1b5722316..2bea410bb 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -411,7 +411,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn) ptr[i] = opret[i]; txNew.vout[1].nValue = 0; //fprintf(stderr,"opretlen.%d\n",opretlen); - } + } else printf("null opretlen for prices\n"); } } else if ( komodo_is_issuer() != 0 ) From 768dccac67c529928b479ab3a456d283610fab17 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 26 Aug 2017 11:04:47 +0200 Subject: [PATCH 07/16] Test --- src/komodo_pax.h | 5 +++-- src/miner.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 93f319b7c..6e94fdc64 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -262,7 +262,7 @@ int32_t komodo_pax_opreturn(uint8_t *opret,int32_t maxsize) } else printf("fread.%d error != fsize.%d\n",retval,fsize); } else printf("fsize.%d > maxsize.%d or data[%d]\n",fsize,maxsize,(int32_t)sizeof(data)); fclose(fp); - } else printf("couldnt open %s\n",fname); + } //else printf("couldnt open %s\n",fname); return(n); } @@ -683,11 +683,12 @@ void komodo_paxpricefeed(int32_t height,uint8_t *pricefeed,int32_t opretlen) numpvals = dpow_readprices(pricefeed,×tamp,&KMDBTC,&BTCUSD,&CNYUSD,pvals); memset(&zero,0,sizeof(zero)); komodo_stateupdate(height,0,0,0,zero,0,0,pvals,numpvals,0,0,0,0,0,0); + if ( 1 ) { int32_t i; for (i=0; i Date: Sat, 26 Aug 2017 12:31:40 +0200 Subject: [PATCH 08/16] Fix btc overflow --- src/komodo_pax.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 6e94fdc64..60bdb16fe 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -328,7 +328,11 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) btcusd = pvals[i++]; cnyusd = pvals[i++]; KMDBTC = ((double)kmdbtc / (1000000000. * 1000.)); - BTCUSD = ((double)btcusd / (1000000000. / 1000.)); + double btcfactor; + if ( height > 464538 ) + btcfactor = 100000.; + else btcfactor = 1000.; + BTCUSD = ((double)btcusd / (1000000000. / btcfactor)); CNYUSD = ((double)cnyusd / 1000000000.); portable_mutex_lock(&komodo_mutex); PVALS = (uint32_t *)realloc(PVALS,(NUM_PRICES+1) * sizeof(*PVALS) * 36); @@ -336,7 +340,7 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) memcpy(&PVALS[36 * NUM_PRICES + 1],pvals,sizeof(*pvals) * 35); NUM_PRICES++; portable_mutex_unlock(&komodo_mutex); - if ( 0 ) + if ( 1 ) printf("OP_RETURN.%d KMD %.8f BTC %.6f CNY %.6f NUM_PRICES.%d (%llu %llu %llu)\n",height,KMDBTC,BTCUSD,CNYUSD,NUM_PRICES,(long long)kmdbtc,(long long)btcusd,(long long)cnyusd); } } From 507b1a951108b86e3cea3b2294746c6dab8732e0 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 26 Aug 2017 12:43:08 +0200 Subject: [PATCH 09/16] Revert --- src/komodo_pax.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 60bdb16fe..6e94fdc64 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -328,11 +328,7 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) btcusd = pvals[i++]; cnyusd = pvals[i++]; KMDBTC = ((double)kmdbtc / (1000000000. * 1000.)); - double btcfactor; - if ( height > 464538 ) - btcfactor = 100000.; - else btcfactor = 1000.; - BTCUSD = ((double)btcusd / (1000000000. / btcfactor)); + BTCUSD = ((double)btcusd / (1000000000. / 1000.)); CNYUSD = ((double)cnyusd / 1000000000.); portable_mutex_lock(&komodo_mutex); PVALS = (uint32_t *)realloc(PVALS,(NUM_PRICES+1) * sizeof(*PVALS) * 36); @@ -340,7 +336,7 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) memcpy(&PVALS[36 * NUM_PRICES + 1],pvals,sizeof(*pvals) * 35); NUM_PRICES++; portable_mutex_unlock(&komodo_mutex); - if ( 1 ) + if ( 0 ) printf("OP_RETURN.%d KMD %.8f BTC %.6f CNY %.6f NUM_PRICES.%d (%llu %llu %llu)\n",height,KMDBTC,BTCUSD,CNYUSD,NUM_PRICES,(long long)kmdbtc,(long long)btcusd,(long long)cnyusd); } } From a76936f95b101c3d79b4e39fbedf5752fc57a928 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 26 Aug 2017 12:51:32 +0200 Subject: [PATCH 10/16] Test --- src/komodo_pax.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 6e94fdc64..24faaf99a 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -336,8 +336,8 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) memcpy(&PVALS[36 * NUM_PRICES + 1],pvals,sizeof(*pvals) * 35); NUM_PRICES++; portable_mutex_unlock(&komodo_mutex); - if ( 0 ) - printf("OP_RETURN.%d KMD %.8f BTC %.6f CNY %.6f NUM_PRICES.%d (%llu %llu %llu)\n",height,KMDBTC,BTCUSD,CNYUSD,NUM_PRICES,(long long)kmdbtc,(long long)btcusd,(long long)cnyusd); + if ( 1 ) + printf("OP_RETURN.%d KMD %.8f BTC %.6f CNY %.6f NUM_PRICES.%d (%llu %llu %llu) btcpval.%u\n",height,KMDBTC,BTCUSD,CNYUSD,NUM_PRICES,(long long)kmdbtc,(long long)btcusd,(long long)cnyusd,pvals[33]); } } } From 298ca9e5ded1f418cfd818f0e90a960700ffc2cc Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 26 Aug 2017 13:25:02 +0200 Subject: [PATCH 11/16] Test --- src/komodo_pax.h | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 24faaf99a..29e115812 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -192,7 +192,11 @@ int32_t dpow_readprices(uint8_t *data,uint32_t *timestampp,double *KMDBTCp,doubl len += iguana_rwnum(0,&data[len],sizeof(uint32_t),(void *)&btcusd); // *= 1000 len += iguana_rwnum(0,&data[len],sizeof(uint32_t),(void *)&cnyusd); *KMDBTCp = ((double)kmdbtc / (1000000000. * 1000.)); - *BTCUSDp = ((double)btcusd / (1000000000. / 1000.)); + double btcfactor; + if ( *timestamp > 1503746319 ) + btcfactor = 100000.; + else btcfactor = 1000.; + *BTCUSDp = ((double)btcusd / (1000000000. / btcfactor)); *CNYUSDp = ((double)cnyusd / 1000000000.); for (i=nonz=0; i= 466266 ) + btcfactor = 100000.; + else btcfactor = 1000.; + BTCUSD = ((double)btcusd / (1000000000. / btcfactor)); CNYUSD = ((double)cnyusd / 1000000000.); portable_mutex_lock(&komodo_mutex); PVALS = (uint32_t *)realloc(PVALS,(NUM_PRICES+1) * sizeof(*PVALS) * 36); @@ -336,8 +344,8 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) memcpy(&PVALS[36 * NUM_PRICES + 1],pvals,sizeof(*pvals) * 35); NUM_PRICES++; portable_mutex_unlock(&komodo_mutex); - if ( 1 ) - printf("OP_RETURN.%d KMD %.8f BTC %.6f CNY %.6f NUM_PRICES.%d (%llu %llu %llu) btcpval.%u\n",height,KMDBTC,BTCUSD,CNYUSD,NUM_PRICES,(long long)kmdbtc,(long long)btcusd,(long long)cnyusd,pvals[33]); + if ( 0 ) + printf("OP_RETURN.%d KMD %.8f BTC %.6f CNY %.6f NUM_PRICES.%d (%llu %llu %llu)\n",height,KMDBTC,BTCUSD,CNYUSD,NUM_PRICES,(long long)kmdbtc,(long long)btcusd,(long long)cnyusd); } } } @@ -439,7 +447,8 @@ uint64_t komodo_paxcalc(int32_t height,uint32_t *pvals,int32_t baseid,int32_t re usdkmd = ((uint64_t)kmdbtc * 1000000000) / btcusd; if ( height >= 236000-10 ) { - usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000; + if ( height > 466266 ) + usdkmd = ((uint64_t)kmdbtc * btcusd) / ((height > 466266) ? 10000000 : 1000000000); price = ((uint64_t)10000000000 * MINDENOMS[USD] / MINDENOMS[baseid]) / komodo_paxvol(usdvol,usdkmd); //fprintf(stderr,"ht.%d kmdbtc.%llu btcusd.%llu base -> USD %llu, usdkmd %llu usdvol %llu -> %llu\n",height,(long long)kmdbtc,(long long)btcusd,(long long)baseusd,(long long)usdkmd,(long long)usdvol,(long long)(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100))); //fprintf(stderr,"usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%llu -> %llu %llu\n",(long long)usdkmd,(long long)basevolume,(long long)baseusd,(long long)komodo_paxvol(basevolume,baseusd),(long long)usdvol,(long long)(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100)),(long long)price); @@ -474,7 +483,7 @@ uint64_t komodo_paxcalc(int32_t height,uint32_t *pvals,int32_t baseid,int32_t re uint64_t _komodo_paxprice(uint64_t *kmdbtcp,uint64_t *btcusdp,int32_t height,char *base,char *rel,uint64_t basevolume,uint64_t kmdbtc,uint64_t btcusd) { - int32_t baseid=-1,relid=-1,i; uint32_t *ptr; + int32_t baseid=-1,relid=-1,i; uint32_t *ptr,*pvals; if ( height > 10 ) height -= 10; if ( (baseid= komodo_baseid(base)) >= 0 && (relid= komodo_baseid(rel)) >= 0 ) @@ -485,14 +494,15 @@ uint64_t _komodo_paxprice(uint64_t *kmdbtcp,uint64_t *btcusdp,int32_t height,cha ptr = &PVALS[36 * i]; if ( *ptr < height ) { + pvals = &ptr[1]; if ( kmdbtcp != 0 && btcusdp != 0 ) { - *kmdbtcp = ptr[MAX_CURRENCIES + 1] / 539; - *btcusdp = ptr[MAX_CURRENCIES + 2] / 539; + *kmdbtcp = pvals[MAX_CURRENCIES] / 539; + *btcusdp = pvals[MAX_CURRENCIES + 1] / 539; } //portable_mutex_unlock(&komodo_mutex); if ( kmdbtc != 0 && btcusd != 0 ) - return(komodo_paxcalc(height,&ptr[1],baseid,relid,basevolume,kmdbtc,btcusd)); + return(komodo_paxcalc(height,pvals,baseid,relid,basevolume,kmdbtc,btcusd)); else return(0); } } From 520819e7f2f6affe53ef6548d7fa73e621210d48 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 26 Aug 2017 13:28:15 +0200 Subject: [PATCH 12/16] Test --- src/komodo_pax.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 29e115812..9ffba8af5 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -176,6 +176,9 @@ void pax_rank(uint64_t *ranked,uint32_t *pvals) //printf("sum %llu\n",(long long)sum); }; +#define BTCFACTOR_TIMESTAMP 1503746319 +#define BTCFACTOR_HEIGHT 466266 + int32_t dpow_readprices(uint8_t *data,uint32_t *timestampp,double *KMDBTCp,double *BTCUSDp,double *CNYUSDp,uint32_t *pvals) { uint32_t kmdbtc,btcusd,cnyusd; int32_t i,n,nonz,len = 0; @@ -193,7 +196,7 @@ int32_t dpow_readprices(uint8_t *data,uint32_t *timestampp,double *KMDBTCp,doubl len += iguana_rwnum(0,&data[len],sizeof(uint32_t),(void *)&cnyusd); *KMDBTCp = ((double)kmdbtc / (1000000000. * 1000.)); double btcfactor; - if ( *timestamp > 1503746319 ) + if ( *timestamp > BTCFACTOR_TIMESTAMP ) btcfactor = 100000.; else btcfactor = 1000.; *BTCUSDp = ((double)btcusd / (1000000000. / btcfactor)); @@ -333,7 +336,7 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) cnyusd = pvals[i++]; KMDBTC = ((double)kmdbtc / (1000000000. * 1000.)); double btcfactor; - if ( height >= 466266 ) + if ( height >= BTCFACTOR_HEIGHT ) btcfactor = 100000.; else btcfactor = 1000.; BTCUSD = ((double)btcusd / (1000000000. / btcfactor)); @@ -447,8 +450,7 @@ uint64_t komodo_paxcalc(int32_t height,uint32_t *pvals,int32_t baseid,int32_t re usdkmd = ((uint64_t)kmdbtc * 1000000000) / btcusd; if ( height >= 236000-10 ) { - if ( height > 466266 ) - usdkmd = ((uint64_t)kmdbtc * btcusd) / ((height > 466266) ? 10000000 : 1000000000); + usdkmd = ((uint64_t)kmdbtc * btcusd) / ((height >= BTCFACTOR_HEIGHT) ? 10000000 : 1000000000); price = ((uint64_t)10000000000 * MINDENOMS[USD] / MINDENOMS[baseid]) / komodo_paxvol(usdvol,usdkmd); //fprintf(stderr,"ht.%d kmdbtc.%llu btcusd.%llu base -> USD %llu, usdkmd %llu usdvol %llu -> %llu\n",height,(long long)kmdbtc,(long long)btcusd,(long long)baseusd,(long long)usdkmd,(long long)usdvol,(long long)(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100))); //fprintf(stderr,"usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%llu -> %llu %llu\n",(long long)usdkmd,(long long)basevolume,(long long)baseusd,(long long)komodo_paxvol(basevolume,baseusd),(long long)usdvol,(long long)(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100)),(long long)price); From b4810651afe53e9dd5235bac12919298bd3b1180 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 26 Aug 2017 13:56:11 +0200 Subject: [PATCH 13/16] Test --- src/komodo_pax.h | 42 ++++++++++++++++++++++++------------------ src/miner.cpp | 4 ++-- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 9ffba8af5..5d113b1da 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -176,10 +176,21 @@ void pax_rank(uint64_t *ranked,uint32_t *pvals) //printf("sum %llu\n",(long long)sum); }; -#define BTCFACTOR_TIMESTAMP 1503746319 #define BTCFACTOR_HEIGHT 466266 -int32_t dpow_readprices(uint8_t *data,uint32_t *timestampp,double *KMDBTCp,double *BTCUSDp,double *CNYUSDp,uint32_t *pvals) +double PAX_BTCUSD(int32_t height,uint32_t btcusd) +{ + double btcfactor,BTCUSD; + if ( height >= BTCFACTOR_HEIGHT ) + btcfactor = 100000.; + else btcfactor = 1000.; + BTCUSD = ((double)btcusd / (1000000000. / btcfactor)); + if ( BTCUSD < 43 ) + BTCUSD *= 100; + return(BTCUSD); +} + +int32_t dpow_readprices(int32_t height,uint8_t *data,uint32_t *timestampp,double *KMDBTCp,double *BTCUSDp,double *CNYUSDp,uint32_t *pvals) { uint32_t kmdbtc,btcusd,cnyusd; int32_t i,n,nonz,len = 0; if ( data[0] == 'P' && data[5] == 35 ) @@ -195,11 +206,7 @@ int32_t dpow_readprices(uint8_t *data,uint32_t *timestampp,double *KMDBTCp,doubl len += iguana_rwnum(0,&data[len],sizeof(uint32_t),(void *)&btcusd); // *= 1000 len += iguana_rwnum(0,&data[len],sizeof(uint32_t),(void *)&cnyusd); *KMDBTCp = ((double)kmdbtc / (1000000000. * 1000.)); - double btcfactor; - if ( *timestamp > BTCFACTOR_TIMESTAMP ) - btcfactor = 100000.; - else btcfactor = 1000.; - *BTCUSDp = ((double)btcusd / (1000000000. / btcfactor)); + *BTCUSDp = PAX_BTCUSD(height,btcusd); *CNYUSDp = ((double)cnyusd / 1000000000.); for (i=nonz=0; i 0 ) + if ( dpow_readprices(height,&data[len],×tamp,&KMDBTC,&BTCUSD,&CNYUSD,pvals) > 0 ) { if ( 0 && lastcrc != crc32 ) { @@ -335,11 +342,7 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) btcusd = pvals[i++]; cnyusd = pvals[i++]; KMDBTC = ((double)kmdbtc / (1000000000. * 1000.)); - double btcfactor; - if ( height >= BTCFACTOR_HEIGHT ) - btcfactor = 100000.; - else btcfactor = 1000.; - BTCUSD = ((double)btcusd / (1000000000. / btcfactor)); + BTCUSD = PAX_BTCUSD(height,btcusd); CNYUSD = ((double)cnyusd / 1000000000.); portable_mutex_lock(&komodo_mutex); PVALS = (uint32_t *)realloc(PVALS,(NUM_PRICES+1) * sizeof(*PVALS) * 36); @@ -347,7 +350,7 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) memcpy(&PVALS[36 * NUM_PRICES + 1],pvals,sizeof(*pvals) * 35); NUM_PRICES++; portable_mutex_unlock(&komodo_mutex); - if ( 0 ) + if ( 1 ) printf("OP_RETURN.%d KMD %.8f BTC %.6f CNY %.6f NUM_PRICES.%d (%llu %llu %llu)\n",height,KMDBTC,BTCUSD,CNYUSD,NUM_PRICES,(long long)kmdbtc,(long long)btcusd,(long long)cnyusd); } } @@ -417,7 +420,7 @@ uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed) uint64_t komodo_paxcalc(int32_t height,uint32_t *pvals,int32_t baseid,int32_t relid,uint64_t basevolume,uint64_t refkmdbtc,uint64_t refbtcusd) { - uint32_t pvalb,pvalr; uint64_t price,kmdbtc,btcusd,usdvol,baseusd,usdkmd,baserel,ranked[32]; + uint32_t pvalb,pvalr; double BTCUSD; uint64_t price,kmdbtc,btcusd,usdvol,baseusd,usdkmd,baserel,ranked[32]; if ( basevolume > KOMODO_PAXMAX ) { printf("paxcalc overflow %.8f\n",dstr(basevolume)); @@ -450,7 +453,10 @@ uint64_t komodo_paxcalc(int32_t height,uint32_t *pvals,int32_t baseid,int32_t re usdkmd = ((uint64_t)kmdbtc * 1000000000) / btcusd; if ( height >= 236000-10 ) { - usdkmd = ((uint64_t)kmdbtc * btcusd) / ((height >= BTCFACTOR_HEIGHT) ? 10000000 : 1000000000); + BTCUSD = PAX_BTCUSD(height,btcusd); + if ( height >= BTCFACTOR_HEIGHT && BTCUSD >= 43 ) + usdkmd = ((uint64_t)kmdbtc * btcusd) / 10000000; + else usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000; price = ((uint64_t)10000000000 * MINDENOMS[USD] / MINDENOMS[baseid]) / komodo_paxvol(usdvol,usdkmd); //fprintf(stderr,"ht.%d kmdbtc.%llu btcusd.%llu base -> USD %llu, usdkmd %llu usdvol %llu -> %llu\n",height,(long long)kmdbtc,(long long)btcusd,(long long)baseusd,(long long)usdkmd,(long long)usdvol,(long long)(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100))); //fprintf(stderr,"usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%llu -> %llu %llu\n",(long long)usdkmd,(long long)basevolume,(long long)baseusd,(long long)komodo_paxvol(basevolume,baseusd),(long long)usdvol,(long long)(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100)),(long long)price); @@ -692,7 +698,7 @@ int32_t komodo_paxprices(int32_t *heights,uint64_t *prices,int32_t max,char *bas void komodo_paxpricefeed(int32_t height,uint8_t *pricefeed,int32_t opretlen) { double KMDBTC,BTCUSD,CNYUSD; uint32_t numpvals,timestamp,pvals[128]; uint256 zero; - numpvals = dpow_readprices(pricefeed,×tamp,&KMDBTC,&BTCUSD,&CNYUSD,pvals); + numpvals = dpow_readprices(height,pricefeed,×tamp,&KMDBTC,&BTCUSD,&CNYUSD,pvals); memset(&zero,0,sizeof(zero)); komodo_stateupdate(height,0,0,0,zero,0,0,pvals,numpvals,0,0,0,0,0,0); if ( 1 ) diff --git a/src/miner.cpp b/src/miner.cpp index 41eae1741..721b19cef 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -116,7 +116,7 @@ extern uint8_t NOTARY_PUBKEY33[33]; uint32_t Mining_start,Mining_height; int32_t komodo_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33); int32_t komodo_is_special(int32_t height,uint8_t pubkey33[33]); -int32_t komodo_pax_opreturn(uint8_t *opret,int32_t maxsize); +int32_t komodo_pax_opreturn(int32_t height,uint8_t *opret,int32_t maxsize); uint64_t komodo_paxtotal(); int32_t komodo_baseid(char *origbase); int32_t komodo_is_issuer(); @@ -402,7 +402,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn) int32_t i,opretlen; uint8_t opret[256],*ptr; if ( (nHeight % 60) == 0 || komodo_gateway_deposits(&txNew,(char *)"KMD",1) == 0 ) { - if ( (opretlen= komodo_pax_opreturn(opret,sizeof(opret))) > 0 ) // have pricefeed + if ( (opretlen= komodo_pax_opreturn((int32_t)nHeight,opret,sizeof(opret))) > 0 ) // have pricefeed { txNew.vout.resize(2); txNew.vout[1].scriptPubKey.resize(opretlen); From dc462b9cbbd391ca11ebb54695a858b27b9c6dd9 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 26 Aug 2017 14:08:47 +0200 Subject: [PATCH 14/16] Test --- src/komodo_pax.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 5d113b1da..989ccf09b 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -701,7 +701,7 @@ void komodo_paxpricefeed(int32_t height,uint8_t *pricefeed,int32_t opretlen) numpvals = dpow_readprices(height,pricefeed,×tamp,&KMDBTC,&BTCUSD,&CNYUSD,pvals); memset(&zero,0,sizeof(zero)); komodo_stateupdate(height,0,0,0,zero,0,0,pvals,numpvals,0,0,0,0,0,0); - if ( 1 ) + if ( 0 ) { int32_t i; for (i=0; i Date: Sat, 26 Aug 2017 14:43:30 +0200 Subject: [PATCH 15/16] Test --- src/komodo_pax.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 989ccf09b..cd54578c6 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -350,7 +350,7 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) memcpy(&PVALS[36 * NUM_PRICES + 1],pvals,sizeof(*pvals) * 35); NUM_PRICES++; portable_mutex_unlock(&komodo_mutex); - if ( 1 ) + if ( 0 ) printf("OP_RETURN.%d KMD %.8f BTC %.6f CNY %.6f NUM_PRICES.%d (%llu %llu %llu)\n",height,KMDBTC,BTCUSD,CNYUSD,NUM_PRICES,(long long)kmdbtc,(long long)btcusd,(long long)cnyusd); } } @@ -701,7 +701,7 @@ void komodo_paxpricefeed(int32_t height,uint8_t *pricefeed,int32_t opretlen) numpvals = dpow_readprices(height,pricefeed,×tamp,&KMDBTC,&BTCUSD,&CNYUSD,pvals); memset(&zero,0,sizeof(zero)); komodo_stateupdate(height,0,0,0,zero,0,0,pvals,numpvals,0,0,0,0,0,0); - if ( 0 ) + if ( 1 ) { int32_t i; for (i=0; i Date: Sat, 26 Aug 2017 14:56:57 +0200 Subject: [PATCH 16/16] Test --- src/komodo_pax.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index cd54578c6..0bdd75ef8 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -185,8 +185,8 @@ double PAX_BTCUSD(int32_t height,uint32_t btcusd) btcfactor = 100000.; else btcfactor = 1000.; BTCUSD = ((double)btcusd / (1000000000. / btcfactor)); - if ( BTCUSD < 43 ) - BTCUSD *= 100; + if ( height < 500000 && BTCUSD > 20000 ) + BTCUSD /= 100; return(BTCUSD); }