From cdc09f194c773660fad94b899b8a6a47cb6871f1 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 13:27:31 +0300 Subject: [PATCH 01/22] 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 ed5b48436..7d696d4c7 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -552,7 +552,7 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin for (i=0; i> 1) ) { return(0); @@ -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); @@ -655,7 +655,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin portable_mutex_unlock(&komodo_mutex); if ( nonz != 0 ) sum /= nonz; - //printf("-> %lld %s/%s i.%d ht.%d\n",(long long)sum,base,rel,i,height); +printf("-> %lld %s/%s i.%d ht.%d\n",(long long)sum,base,rel,i,height); return(sum); } From d1373b57010a893feaca035d24a6cc209da1cf97 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 13:47:34 +0300 Subject: [PATCH 02/22] Test --- src/komodo_pax.h | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 7d696d4c7..4910179c8 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -352,7 +352,10 @@ uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed) else sum += votes[i], nonz++; } if ( nonz < (numvotes >> 2) ) + { + printf("komodo_paxcorrelation not enough votes: nonz.%d numvotes.%d\n",nonz,numvotes); return(0); + } sum /= nonz; lastprice = sum; for (i=0; i (numvotes >> 1) ) - break; - } + if ( delta <= tolerance ) + { + wt++; + if ( wt > (numvotes >> 1) ) + break; + } } } } @@ -397,9 +400,9 @@ uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed) if ( densum != 0 ) sum /= densum; //sum = (sum * basevolume); - //printf("paxprice seed.%llx sum %.8f densum %.8f\n",(long long)seed,dstr(sum),dstr(densum)); +printf("paxprice seed.%llx sum %.8f densum %.8f\n",(long long)seed,dstr(sum),dstr(densum)); break; - } + } else printf("correlation k.%d not enough wt: wt.%d vs numvotes.%d\n",k,wt,numvotes); } return(sum); } @@ -552,7 +555,7 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin for (i=0; i Date: Tue, 27 Jun 2017 13:53:31 +0300 Subject: [PATCH 03/22] Test --- src/komodo_pax.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 4910179c8..48dd658ca 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -402,8 +402,10 @@ uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed) //sum = (sum * basevolume); printf("paxprice seed.%llx sum %.8f densum %.8f\n",(long long)seed,dstr(sum),dstr(densum)); break; - } else printf("correlation k.%d not enough wt: wt.%d vs numvotes.%d\n",k,wt,numvotes); + } else fprintf(stderr,"%d ",wt); } + if ( k == numvotes ) + printf("not enough correlation wt tolerance %lld\n",(long long)tolerance); return(sum); } From 06e6de363c228ffb2be94831a91c109a4b6a1d41 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 14:12:59 +0300 Subject: [PATCH 04/22] Test --- src/komodo_pax.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 48dd658ca..f0acef4de 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -364,7 +364,9 @@ uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed) votes[i] = lastprice; else lastprice = votes[i]; } - tolerance = sum / 50; + // jl777 consensus change: tolerance = sum / 50; + tolerance = sum / 10; + printf("lastprice %.8f ",dstr(lastprice)); for (k=0; k Date: Tue, 27 Jun 2017 14:28:46 +0300 Subject: [PATCH 05/22] 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 f0acef4de..c083aad01 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -364,8 +364,7 @@ uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed) votes[i] = lastprice; else lastprice = votes[i]; } - // jl777 consensus change: tolerance = sum / 50; - tolerance = sum / 10; + tolerance = sum / 50; printf("lastprice %.8f ",dstr(lastprice)); for (k=0; k 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,"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); //fprintf(stderr,"usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%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))); } else price = (MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100)); @@ -563,6 +562,7 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin } kmdbtc = komodo_paxcorrelation(kmdbtcs,numvotes,seed) * 539; btcusd = komodo_paxcorrelation(btcusds,numvotes,seed) * 539; + printf("paxpriceB: %s/%sht.%d kmdbtc %.8f btcusd %.8f\n",base,rel,height,dstr(kmdbtc),dstr(btcusd)); //komodo_kmdbtcusd(1,&kmdbtc,&btcusd,height); } for (i=nonz=0; i Date: Tue, 27 Jun 2017 14:48:13 +0300 Subject: [PATCH 06/22] Test --- src/komodo_pax.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index c083aad01..04b19e991 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -447,7 +447,9 @@ uint64_t komodo_paxcalc(int32_t height,uint32_t *pvals,int32_t baseid,int32_t re { 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))); + if ( height > 380000 ) + printf("%.8f ",dstr(price)); + //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); //fprintf(stderr,"usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%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))); } else price = (MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100)); @@ -562,7 +564,7 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin } kmdbtc = komodo_paxcorrelation(kmdbtcs,numvotes,seed) * 539; btcusd = komodo_paxcorrelation(btcusds,numvotes,seed) * 539; - printf("paxpriceB: %s/%sht.%d kmdbtc %.8f btcusd %.8f\n",base,rel,height,dstr(kmdbtc),dstr(btcusd)); + printf("paxpriceB: %s/%s ht.%d kmdbtc %.8f btcusd %.8f\n",base,rel,height,dstr(kmdbtc),dstr(btcusd)); //komodo_kmdbtcusd(1,&kmdbtc,&btcusd,height); } for (i=nonz=0; i Date: Tue, 27 Jun 2017 14:56:14 +0300 Subject: [PATCH 07/22] Test --- src/komodo_pax.h | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 04b19e991..a1cde4402 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -575,12 +575,12 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin { nonz++; sum += votes[numvotes-1-i]; - if ( (i % 10) == 0 ) + //if ( (i % 10) == 0 ) 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,"komodo_paxprice nonz.%d of numvotes.%d seed.%llu %.8f sum.%llu\n",nonz,numvotes,(long long)seed,nonz!=0?dstr(1000. * (double)sum/nonz):0,(long long)sum); if ( nonz <= (numvotes >> 1) ) { return(0); @@ -604,22 +604,6 @@ uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint } else return(_komodo_paxpriceB(seed,height,base,rel,basevolume)); } -/*uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint64_t basevolume) -{ - uint64_t baseusd,basekmd,usdkmd; int32_t baseid = komodo_baseid(base); - //if ( strcmp(rel,"KMD") != 0 || baseid < 0 || MINDENOMS[baseid] == MINDENOMS[USD] ) - // return(_komodo_paxpriceB(seed,height,base,rel,basevolume)); - //else - { - baseusd = _komodo_paxpriceB(seed,height,base,(char *)"USD",SATOSHIDEN); - usdkmd = _komodo_paxpriceB(seed,height,(char *)"USD",(char *)"KMD",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); - return(basekmd); - } -}*/ - uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uint64_t basevolume) { int32_t i,nonz=0; int64_t diff; uint64_t price,seed,sum = 0; @@ -637,7 +621,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin { sum += price; nonz++; - if ( 0 && i == 1 && nonz == 2 ) + /*if ( 0 && i == 1 && nonz == 2 ) { diff = (((int64_t)price - (sum >> 1)) * 10000); if ( diff < 0 ) @@ -656,7 +640,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin printf("(%llu %llu %lld).%lld ",(long long)price,(long long)(sum>>2),(long long) (((int64_t)price - (sum >> 2)) * 10000),(long long)diff); if ( diff < 20 ) break; - } + }*/ } if ( height < 165000 || height > 236000 ) break; @@ -664,7 +648,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin portable_mutex_unlock(&komodo_mutex); if ( nonz != 0 ) sum /= nonz; -printf("-> %lld %s/%s i.%d ht.%d\n",(long long)sum,base,rel,i,height); +printf("-> %lld %s/%s i.%d ht.%d nonz.%d\n",(long long)sum,base,rel,i,height,nonz); return(sum); } From 7b9c29355c3133edb256078cadcd1b17bbf961b1 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 15:07:22 +0300 Subject: [PATCH 08/22] Test --- src/komodo_pax.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index a1cde4402..aeb04f089 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -443,12 +443,18 @@ uint64_t komodo_paxcalc(int32_t height,uint32_t *pvals,int32_t baseid,int32_t re baseusd = (((uint64_t)pvalb * 1000000000) / pvals[USD]); usdvol = komodo_paxvol(basevolume,baseusd); usdkmd = ((uint64_t)kmdbtc * 1000000000) / btcusd; - if ( height >= 236000-10 ) + if ( height > 380000 ) + { + usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000; + if ( baseid == USD ) + price = usdkmd; + else price = 1000 * ((uint64_t)10000000 * MINDENOMS[USD] / MINDENOMS[baseid]) / komodo_paxvol(usdvol,usdkmd); + fprintf(stderr,"%.8f ht.%d kmdbtc.%llu btcusd.%llu base -> USD %llu, usdkmd %llu usdvol %llu -> %llu\n",dstr(price),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))); + } + else if ( height >= 236000-10 ) { usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000; price = ((uint64_t)10000000000 * MINDENOMS[USD] / MINDENOMS[baseid]) / komodo_paxvol(usdvol,usdkmd); - if ( height > 380000 ) - printf("%.8f ",dstr(price)); //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); //fprintf(stderr,"usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%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))); From 5ee6fd299b924651eb62962033f0662de83d782c Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 15:55:29 +0300 Subject: [PATCH 09/22] Test --- src/komodo_pax.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index aeb04f089..8c24e8378 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -448,8 +448,8 @@ uint64_t komodo_paxcalc(int32_t height,uint32_t *pvals,int32_t baseid,int32_t re usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000; if ( baseid == USD ) price = usdkmd; - else price = 1000 * ((uint64_t)10000000 * MINDENOMS[USD] / MINDENOMS[baseid]) / komodo_paxvol(usdvol,usdkmd); - fprintf(stderr,"%.8f ht.%d kmdbtc.%llu btcusd.%llu base -> USD %llu, usdkmd %llu usdvol %llu -> %llu\n",dstr(price),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))); + else price = ((uint64_t)1000000000 * MINDENOMS[USD] / MINDENOMS[baseid]) / komodo_paxvol(usdvol,usdkmd); + //fprintf(stderr,"%.8f ht.%d kmdbtc.%llu btcusd.%llu base -> USD %llu, usdkmd %llu usdvol %llu -> %llu\n",dstr(price/10),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))); } else if ( height >= 236000-10 ) { @@ -582,7 +582,7 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin nonz++; sum += votes[numvotes-1-i]; //if ( (i % 10) == 0 ) - fprintf(stderr,"[%llu] ",(long long)votes[numvotes-1-i]); + fprintf(stderr,"[%llu %.8f] ",(long long)votes[numvotes-1-i],dstr(sum/nonz)/10.); } } fprintf(stderr,"kmdbtc %llu btcusd %llu ",(long long)kmdbtc,(long long)btcusd); From 4c917febb74f0ce6bb8cb36e33ffcaf312bf1402 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 16:13:49 +0300 Subject: [PATCH 10/22] Test --- src/komodo_pax.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 8c24e8378..bbc543741 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -365,7 +365,7 @@ uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed) else lastprice = votes[i]; } tolerance = sum / 50; - printf("lastprice %.8f ",dstr(lastprice)); + printf("lastprice %.8f tolerance %.8f ",dstr(lastprice),dstr(tolerance)); for (k=0; k> 1) ) { return(0); From e2ca75ae281e332b8951f9ba15578082f228b15e Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 16:27:03 +0300 Subject: [PATCH 11/22] Test --- src/komodo_pax.h | 68 +++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index bbc543741..d97a82349 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -352,10 +352,7 @@ uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed) else sum += votes[i], nonz++; } if ( nonz < (numvotes >> 2) ) - { - printf("komodo_paxcorrelation not enough votes: nonz.%d numvotes.%d\n",nonz,numvotes); return(0); - } sum /= nonz; lastprice = sum; for (i=0; i (numvotes >> 1) ) - break; - } + if ( delta <= tolerance ) + { + wt++; + if ( wt > (numvotes >> 1) ) + break; + } } } } @@ -400,12 +396,11 @@ uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed) } if ( densum != 0 ) sum /= densum; -printf("paxprice seed.%llx sum %.8f densum %.8f\n",(long long)seed,dstr(sum),dstr(densum)); + //sum = (sum * basevolume); + //printf("paxprice seed.%llx sum %.8f densum %.8f\n",(long long)seed,dstr(sum),dstr(densum)); break; - } //else fprintf(stderr,"%d ",wt); + } } - if ( k == numvotes ) - printf("not enough correlation wt tolerance %lld\n",(long long)tolerance); return(sum); } @@ -442,18 +437,12 @@ uint64_t komodo_paxcalc(int32_t height,uint32_t *pvals,int32_t baseid,int32_t re baseusd = (((uint64_t)pvalb * 1000000000) / pvals[USD]); usdvol = komodo_paxvol(basevolume,baseusd); usdkmd = ((uint64_t)kmdbtc * 1000000000) / btcusd; - if ( height > 380000 ) + if ( height >= 236000-10 ) { usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000; - if ( baseid == USD ) + if ( height > 380000 && baseid == USD ) price = usdkmd; - else price = ((uint64_t)1000000000 * MINDENOMS[USD] / MINDENOMS[baseid]) / komodo_paxvol(usdvol,usdkmd); - //fprintf(stderr,"%.8f ht.%d kmdbtc.%llu btcusd.%llu base -> USD %llu, usdkmd %llu usdvol %llu -> %llu\n",dstr(price/10),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))); - } - else if ( height >= 236000-10 ) - { - usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000; - price = ((uint64_t)10000000000 * MINDENOMS[USD] / MINDENOMS[baseid]) / komodo_paxvol(usdvol,usdkmd); + else 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); //fprintf(stderr,"usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%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))); @@ -565,11 +554,10 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin for (i=0; i> 1) ) { return(0); @@ -609,13 +597,29 @@ uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint } else return(_komodo_paxpriceB(seed,height,base,rel,basevolume)); } +/*uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint64_t basevolume) +{ + uint64_t baseusd,basekmd,usdkmd; int32_t baseid = komodo_baseid(base); + //if ( strcmp(rel,"KMD") != 0 || baseid < 0 || MINDENOMS[baseid] == MINDENOMS[USD] ) + // return(_komodo_paxpriceB(seed,height,base,rel,basevolume)); + //else + { + baseusd = _komodo_paxpriceB(seed,height,base,(char *)"USD",SATOSHIDEN); + usdkmd = _komodo_paxpriceB(seed,height,(char *)"USD",(char *)"KMD",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); + return(basekmd); + } +}*/ + uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uint64_t basevolume) { int32_t i,nonz=0; int64_t diff; uint64_t price,seed,sum = 0; if ( ASSETCHAINS_SYMBOL[0] == 0 && chainActive.Tip() != 0 && height > chainActive.Tip()->nHeight ) { if ( height < 100000000 ) - printf("komodo_paxprice height.%d vs tip.%d\n",height,chainActive.Tip()->nHeight); + printf("height.%d vs tip.%d\n",height,chainActive.Tip()->nHeight); return(0); } *seedp = komodo_seed(height); @@ -626,7 +630,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin { sum += price; nonz++; - /*if ( 0 && i == 1 && nonz == 2 ) + if ( 0 && i == 1 && nonz == 2 ) { diff = (((int64_t)price - (sum >> 1)) * 10000); if ( diff < 0 ) @@ -645,7 +649,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin printf("(%llu %llu %lld).%lld ",(long long)price,(long long)(sum>>2),(long long) (((int64_t)price - (sum >> 2)) * 10000),(long long)diff); if ( diff < 20 ) break; - }*/ + } } if ( height < 165000 || height > 236000 ) break; @@ -653,7 +657,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin portable_mutex_unlock(&komodo_mutex); if ( nonz != 0 ) sum /= nonz; -printf("-> %lld %s/%s i.%d ht.%d nonz.%d\n",(long long)sum,base,rel,i,height,nonz); + //printf("-> %lld %s/%s i.%d ht.%d\n",(long long)sum,base,rel,i,height); return(sum); } From b5da879e2f0e9c5cc08dcfd09921e77311918d93 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 16:34:14 +0300 Subject: [PATCH 12/22] Test --- src/komodo_pax.h | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index d97a82349..ae3b3243c 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -440,9 +440,10 @@ uint64_t komodo_paxcalc(int32_t height,uint32_t *pvals,int32_t baseid,int32_t re if ( height >= 236000-10 ) { usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000; - if ( height > 380000 && baseid == USD ) - price = usdkmd; - else price = ((uint64_t)10000000000 * MINDENOMS[USD] / MINDENOMS[baseid]) / komodo_paxvol(usdvol,usdkmd); + //if ( height > 380000 && baseid == USD ) + // price = usdkmd; + //else + 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); //fprintf(stderr,"usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%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))); @@ -568,12 +569,15 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin { nonz++; sum += votes[numvotes-1-i]; - //if ( (i % 10) == 0 ) - // fprintf(stderr,"[%llu] ",(long long)votes[numvotes-1-i]); + if ( height > 380000 ) + 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); + if ( height > 380000 ) + { + 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); From 201269b62d7208a2399e2511ad372aa8ced7a4d2 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 16:41:50 +0300 Subject: [PATCH 13/22] Test --- src/komodo_pax.h | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index ae3b3243c..c463a7492 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -342,7 +342,7 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) } } -uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed) +uint64_t komodo_paxcorrelation(int32_t dispflag,uint64_t *votes,int32_t numvotes,uint64_t seed) { int32_t i,j,k,ind,zeroes,wt,nonz; int64_t delta; uint64_t lastprice,tolerance,den,densum,sum=0; for (sum=i=zeroes=nonz=0; i= 236000-10 ) { usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000; - //if ( height > 380000 && baseid == USD ) - // price = usdkmd; - //else 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); @@ -557,8 +564,8 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin _komodo_paxprice(&kmdbtcs[numvotes-1-i],&btcusds[numvotes-1-i],height-i,base,rel,100000,0,0); //printf("(%llu %llu) ",(long long)kmdbtcs[numvotes-1-i],(long long)btcusds[numvotes-1-i]); } - kmdbtc = komodo_paxcorrelation(kmdbtcs,numvotes,seed) * 539; - btcusd = komodo_paxcorrelation(btcusds,numvotes,seed) * 539; + kmdbtc = komodo_paxcorrelation(0,kmdbtcs,numvotes,seed) * 539; + btcusd = komodo_paxcorrelation(0,btcusds,numvotes,seed) * 539; //komodo_kmdbtcusd(1,&kmdbtc,&btcusd,height); } for (i=nonz=0; i 380000,votes,numvotes,seed) * basevolume / 100000); } uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint64_t basevolume) From b42e4395126b048e33fd3ad60aeebf6689833215 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 16:51:12 +0300 Subject: [PATCH 14/22] Test --- src/komodo_pax.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index c463a7492..9f0cec3f8 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -399,18 +399,19 @@ uint64_t komodo_paxcorrelation(int32_t dispflag,uint64_t *votes,int32_t numvotes den = peggy_smooth_coeffs[j]; densum += den; sum += (den * votes[(ind + j) % numvotes]); - //printf("(%llu/%llu %.8f) ",(long long)sum,(long long)densum,(double)sum/densum); + if ( dispflag != 0 ) + printf("(%llu/%llu %.8f) ",(long long)sum,(long long)densum,(double)sum/densum); } if ( densum != 0 ) sum /= densum; - //sum = (sum * basevolume); - //printf("paxprice seed.%llx sum %.8f densum %.8f\n",(long long)seed,dstr(sum),dstr(densum)); + if ( dispflag != 0 ) + printf("paxprice seed.%llx sum %.8f densum %.8f ind.%d\n",(long long)seed,dstr(sum),dstr(densum),ind); break; } else if ( dispflag != 0 ) printf("%d ",wt); } - if ( dispflag != 0 && k == numvotes ) - printf("not enough correlation\n"); + if ( dispflag != 0 ) + printf("k.%d numvotes.%d\n",k,numvotes); return(sum); } From c1f88b1deb76a003553c2ba52665c5209d926e34 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 16:59:15 +0300 Subject: [PATCH 15/22] Test --- src/komodo_pax.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 9f0cec3f8..8d566ca75 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -543,7 +543,7 @@ int32_t komodo_kmdbtcusd(int32_t rwflag,uint64_t *kmdbtcp,uint64_t *btcusdp,int3 uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint64_t basevolume) { - int32_t i,j,k,ind,zeroes,numvotes,wt,nonz; int64_t delta; uint64_t lastprice,tolerance,den,densum,sum=0,votes[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],btcusds[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],kmdbtcs[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],kmdbtc,btcusd; + int32_t i,j,k,ind,zeroes,numvotes,wt,nonz; int64_t delta; uint64_t corr,lastprice,tolerance,den,densum,sum=0,votes[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],btcusds[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],kmdbtcs[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],kmdbtc,btcusd; if ( basevolume > KOMODO_PAXMAX ) { printf("komodo_paxprice overflow %.8f\n",dstr(basevolume)); @@ -590,7 +590,10 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin { return(0); } - return(komodo_paxcorrelation(height > 380000,votes,numvotes,seed) * basevolume / 100000); + corr = komodo_paxcorrelation(height > 380000,votes,numvotes,seed); + if ( height > 380000 ) + printf("corr %.8f basevolume %llu / 100000\n",dstr(corr),basevolume); + return(corr * basevolume / 100000); } uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint64_t basevolume) @@ -642,7 +645,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin { sum += price; nonz++; - if ( 0 && i == 1 && nonz == 2 ) + /*if ( 0 && i == 1 && nonz == 2 ) { diff = (((int64_t)price - (sum >> 1)) * 10000); if ( diff < 0 ) @@ -661,7 +664,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin printf("(%llu %llu %lld).%lld ",(long long)price,(long long)(sum>>2),(long long) (((int64_t)price - (sum >> 2)) * 10000),(long long)diff); if ( diff < 20 ) break; - } + }*/ } if ( height < 165000 || height > 236000 ) break; From 842948120401dcdc61406771b364fbcebd1da617 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 17:01:35 +0300 Subject: [PATCH 16/22] Test --- src/komodo_pax.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 8d566ca75..4c8d5a601 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -603,7 +603,10 @@ uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint { usdkmd = _komodo_paxpriceB(seed,height,(char *)"USD",(char *)"KMD",SATOSHIDEN); if ( strcmp("usd",base) == 0 ) + { + printf("usdkmd %.8f basevol %llu paxvol %.8f\n",dstr(usdkmd),(long long)basevolume,dstr(komodo_paxvol(basevolume,usdkmd))); 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 ) From e44df8d7e201fcaae2afb2bfdf4459656fbb8b6d Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 17:01:59 +0300 Subject: [PATCH 17/22] 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 4c8d5a601..bb94f1c8d 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -592,7 +592,7 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin } corr = komodo_paxcorrelation(height > 380000,votes,numvotes,seed); if ( height > 380000 ) - printf("corr %.8f basevolume %llu / 100000\n",dstr(corr),basevolume); + printf("corr %.8f basevolume %llu / 100000\n",dstr(corr),(long long)basevolume); return(corr * basevolume / 100000); } From 196b41a5acbd2204231e32c97787a8a108e93b3b Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 17:08:41 +0300 Subject: [PATCH 18/22] Test --- src/komodo_pax.h | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index bb94f1c8d..78b1c8fa0 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -361,8 +361,8 @@ uint64_t komodo_paxcorrelation(int32_t dispflag,uint64_t *votes,int32_t numvotes votes[i] = lastprice; else { - if ( dispflag != 0 ) - printf("%.8f ",dstr(votes[i])); + //if ( dispflag != 0 ) + // printf("%.8f ",dstr(votes[i])); lastprice = votes[i]; } } @@ -399,19 +399,18 @@ uint64_t komodo_paxcorrelation(int32_t dispflag,uint64_t *votes,int32_t numvotes den = peggy_smooth_coeffs[j]; densum += den; sum += (den * votes[(ind + j) % numvotes]); - if ( dispflag != 0 ) - printf("(%llu/%llu %.8f) ",(long long)sum,(long long)densum,(double)sum/densum); + //if ( dispflag != 0 ) + // printf("(%llu/%llu %.8f) ",(long long)sum,(long long)densum,(double)sum/densum); } if ( densum != 0 ) sum /= densum; - if ( dispflag != 0 ) - printf("paxprice seed.%llx sum %.8f densum %.8f ind.%d\n",(long long)seed,dstr(sum),dstr(densum),ind); + //if ( dispflag != 0 ) + // printf("paxprice seed.%llx sum %.8f densum %.8f ind.%d\n",(long long)seed,dstr(sum),dstr(densum),ind); break; - } else if ( dispflag != 0 ) - printf("%d ",wt); + } } if ( dispflag != 0 ) - printf("k.%d numvotes.%d\n",k,numvotes); + printf("k.%d numvotes.%d -> corr %.8f\n",k,numvotes,dstr(corr)); return(sum); } @@ -577,19 +576,17 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin { nonz++; sum += votes[numvotes-1-i]; - if ( height > 380000 ) - fprintf(stderr,"[%llu] ",(long long)votes[numvotes-1-i]); + //if ( height > 380000 ) + // fprintf(stderr,"[%llu] ",(long long)votes[numvotes-1-i]); } } + if ( nonz <= (numvotes >> 1) ) + return(0); if ( height > 380000 ) { - fprintf(stderr,"kmdbtc %llu btcusd %llu ",(long long)kmdbtc,(long long)btcusd); + fprintf(stderr,"ht.%d kmdbtc %llu btcusd %llu ",height,(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); - } corr = komodo_paxcorrelation(height > 380000,votes,numvotes,seed); if ( height > 380000 ) printf("corr %.8f basevolume %llu / 100000\n",dstr(corr),(long long)basevolume); From 5f171bf91344383fc1c7b54a13b2c3b21e82c808 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 17:10:10 +0300 Subject: [PATCH 19/22] 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 78b1c8fa0..0bc9644ea 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -587,7 +587,7 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin fprintf(stderr,"ht.%d kmdbtc %llu btcusd %llu ",height,(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); } - corr = komodo_paxcorrelation(height > 380000,votes,numvotes,seed); + uint64_t corr = komodo_paxcorrelation(height > 380000,votes,numvotes,seed); if ( height > 380000 ) printf("corr %.8f basevolume %llu / 100000\n",dstr(corr),(long long)basevolume); return(corr * basevolume / 100000); From 571f648d4104d771221b1c0092599d7547d7fd7d Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 17:25:59 +0300 Subject: [PATCH 20/22] 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 0bc9644ea..6c4ea6b3a 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -410,7 +410,7 @@ uint64_t komodo_paxcorrelation(int32_t dispflag,uint64_t *votes,int32_t numvotes } } if ( dispflag != 0 ) - printf("k.%d numvotes.%d -> corr %.8f\n",k,numvotes,dstr(corr)); + printf("k.%d numvotes.%d -> corr %.8f\n",k,numvotes,dstr(sum)); return(sum); } @@ -542,7 +542,7 @@ int32_t komodo_kmdbtcusd(int32_t rwflag,uint64_t *kmdbtcp,uint64_t *btcusdp,int3 uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint64_t basevolume) { - int32_t i,j,k,ind,zeroes,numvotes,wt,nonz; int64_t delta; uint64_t corr,lastprice,tolerance,den,densum,sum=0,votes[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],btcusds[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],kmdbtcs[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],kmdbtc,btcusd; + int32_t i,j,k,ind,zeroes,numvotes,wt,nonz; int64_t delta; uint64_t lastprice,tolerance,den,densum,sum=0,votes[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],btcusds[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],kmdbtcs[sizeof(Peggy_inds)/sizeof(*Peggy_inds)],kmdbtc,btcusd; if ( basevolume > KOMODO_PAXMAX ) { printf("komodo_paxprice overflow %.8f\n",dstr(basevolume)); From 31dd13ad40d1f179835294c094bba385ea923da1 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 17:36:24 +0300 Subject: [PATCH 21/22] Test --- src/rpcblockchain.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rpcblockchain.cpp b/src/rpcblockchain.cpp index 037479ca4..a2e73a929 100644 --- a/src/rpcblockchain.cpp +++ b/src/rpcblockchain.cpp @@ -708,7 +708,7 @@ UniValue paxprice(const UniValue& params, bool fHelp) height = chainActive.Tip()->nHeight; else height = atoi(params[2].get_str().c_str()); //if ( params.size() == 3 || (basevolume= COIN * atof(params[3].get_str().c_str())) == 0 ) - basevolume = 1; + basevolume = 100000; relvolume = komodo_paxprice(&seed,height,(char *)base.c_str(),(char *)rel.c_str(),basevolume); ret.push_back(Pair("base", base)); ret.push_back(Pair("rel", rel)); From 8ff56739c844d1ca57b8cd96890aa897cf85e4d5 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 17:46:41 +0300 Subject: [PATCH 22/22] Test --- src/komodo_pax.h | 45 ++++++++++++++------------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/src/komodo_pax.h b/src/komodo_pax.h index 6c4ea6b3a..ed5b48436 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -342,7 +342,7 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals) } } -uint64_t komodo_paxcorrelation(int32_t dispflag,uint64_t *votes,int32_t numvotes,uint64_t seed) +uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed) { int32_t i,j,k,ind,zeroes,wt,nonz; int64_t delta; uint64_t lastprice,tolerance,den,densum,sum=0; for (sum=i=zeroes=nonz=0; i corr %.8f\n",k,numvotes,dstr(sum)); return(sum); } @@ -564,8 +554,8 @@ uint64_t _komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uin _komodo_paxprice(&kmdbtcs[numvotes-1-i],&btcusds[numvotes-1-i],height-i,base,rel,100000,0,0); //printf("(%llu %llu) ",(long long)kmdbtcs[numvotes-1-i],(long long)btcusds[numvotes-1-i]); } - kmdbtc = komodo_paxcorrelation(0,kmdbtcs,numvotes,seed) * 539; - btcusd = komodo_paxcorrelation(0,btcusds,numvotes,seed) * 539; + kmdbtc = komodo_paxcorrelation(kmdbtcs,numvotes,seed) * 539; + btcusd = komodo_paxcorrelation(btcusds,numvotes,seed) * 539; //komodo_kmdbtcusd(1,&kmdbtc,&btcusd,height); } for (i=nonz=0; i 380000 ) + //if ( (i % 10) == 0 ) // 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); if ( nonz <= (numvotes >> 1) ) - return(0); - if ( height > 380000 ) { - fprintf(stderr,"ht.%d kmdbtc %llu btcusd %llu ",height,(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); + return(0); } - uint64_t corr = komodo_paxcorrelation(height > 380000,votes,numvotes,seed); - if ( height > 380000 ) - printf("corr %.8f basevolume %llu / 100000\n",dstr(corr),(long long)basevolume); - return(corr * basevolume / 100000); + return(komodo_paxcorrelation(votes,numvotes,seed) * basevolume / 100000); } uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint64_t basevolume) @@ -600,10 +586,7 @@ uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint { usdkmd = _komodo_paxpriceB(seed,height,(char *)"USD",(char *)"KMD",SATOSHIDEN); if ( strcmp("usd",base) == 0 ) - { - printf("usdkmd %.8f basevol %llu paxvol %.8f\n",dstr(usdkmd),(long long)basevolume,dstr(komodo_paxvol(basevolume,usdkmd))); 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 ) @@ -645,7 +628,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin { sum += price; nonz++; - /*if ( 0 && i == 1 && nonz == 2 ) + if ( 0 && i == 1 && nonz == 2 ) { diff = (((int64_t)price - (sum >> 1)) * 10000); if ( diff < 0 ) @@ -664,7 +647,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin printf("(%llu %llu %lld).%lld ",(long long)price,(long long)(sum>>2),(long long) (((int64_t)price - (sum >> 2)) * 10000),(long long)diff); if ( diff < 20 ) break; - }*/ + } } if ( height < 165000 || height > 236000 ) break;