From e2ca75ae281e332b8951f9ba15578082f228b15e Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 27 Jun 2017 16:27:03 +0300 Subject: [PATCH] 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); }