Skip to content

Commit

Permalink
Merge pull request #258 from jl777/beta
Browse files Browse the repository at this point in the history
Beta
  • Loading branch information
jl777 authored Mar 14, 2017
2 parents 4fb0377 + 3e74b93 commit 1c8af45
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 19 deletions.
5 changes: 3 additions & 2 deletions src/komodo_gateway.h
Original file line number Diff line number Diff line change
Expand Up @@ -495,9 +495,10 @@ int32_t komodo_gateway_deposits(CMutableTransaction *txNew,char *base,int32_t to
continue;
{
#ifdef KOMODO_ASSETCHAINS_WAITNOTARIZE
if ( kmdsp != 0 && (kmdsp->NOTARIZED_HEIGHT >= pax->height || kmdsp->CURRENT_HEIGHT > pax->height+30) ) // assumes same chain as notarize
if ( kmdsp != 0 && kmdsp->NOTARIZED_HEIGHT >= pax->height )//|| kmdsp->CURRENT_HEIGHT > pax->height+30) ) // assumes same chain as notarize
pax->validated = pax->komodoshis; //kmdsp->NOTARIZED_HEIGHT;
else pax->validated = pax->ready = 0;
else if ( kmdsp->CURRENT_HEIGHT > pax->height+30 )
pax->validated = pax->ready = 0;
#else
pax->validated = pax->komodoshis;
#endif
Expand Down
53 changes: 38 additions & 15 deletions src/komodo_pax.h
Original file line number Diff line number Diff line change
Expand Up @@ -370,9 +370,9 @@ uint64_t komodo_paxcorrelation(uint64_t *votes,int32_t numvotes,uint64_t seed)
return(sum);
}

uint64_t komodo_paxcalc(uint32_t *pvals,int32_t baseid,int32_t relid,uint64_t basevolume,uint64_t kmdbtc,uint64_t btcusd)
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 usdvol,baseusd,usdkmd,baserel,ranked[32];
uint32_t pvalb,pvalr; uint64_t price,kmdbtc,btcusd,usdvol,baseusd,usdkmd,baserel,ranked[32];
if ( basevolume > KOMODO_PAXMAX )
{
printf("paxcalc overflow %.8f\n",dstr(basevolume));
Expand All @@ -382,20 +382,37 @@ uint64_t komodo_paxcalc(uint32_t *pvals,int32_t baseid,int32_t relid,uint64_t ba
{
if ( relid == MAX_CURRENCIES )
{
if ( kmdbtc == 0 )
kmdbtc = pvals[MAX_CURRENCIES];
if ( btcusd == 0 )
btcusd = pvals[MAX_CURRENCIES + 1];
if ( height < 236000 )
{
if ( kmdbtc == 0 )
kmdbtc = pvals[MAX_CURRENCIES];
if ( btcusd == 0 )
btcusd = pvals[MAX_CURRENCIES + 1];
}
else
{
if ( (kmdbtc= pvals[MAX_CURRENCIES]) == 0 )
kmdbtc = refkmdbtc;
if ( (btcusd= pvals[MAX_CURRENCIES + 1]) == 0 )
btcusd = refbtcusd;
}
if ( kmdbtc < 25000000 )
kmdbtc = 25000000;
if ( pvals[USD] != 0 && kmdbtc != 0 && btcusd != 0 )
{
baseusd = (((uint64_t)pvalb * 1000000000) / pvals[USD]);
usdvol = komodo_paxvol(basevolume,baseusd);
usdkmd = ((uint64_t)kmdbtc * 1000000000) / btcusd;
//printf("kmdbtc.%llu btcusd.%llu base -> USD %llu, usdkmd %llu usdvol %llu -> %llu\n",(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)));
//printf("usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%llu -> %.8f\n",(long long)usdkmd,(long long)basevolume,(long long)baseusd,(long long)komodo_paxvol(basevolume,baseusd),(long long)usdvol,dstr(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd)));
return(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100));
if ( height >= 236000-10 )
{
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);
//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)));
//price = (uint64_t)((long long)MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]));
} else price = (MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100));
return(price);
} //else printf("zero val in KMD conv %llu %llu %llu\n",(long long)pvals[USD],(long long)kmdbtc,(long long)btcusd);
}
else if ( baseid == relid )
Expand Down Expand Up @@ -442,7 +459,7 @@ uint64_t _komodo_paxprice(uint64_t *kmdbtcp,uint64_t *btcusdp,int32_t height,cha
}
//portable_mutex_unlock(&komodo_mutex);
if ( kmdbtc != 0 && btcusd != 0 )
return(komodo_paxcalc(&ptr[1],baseid,relid,basevolume,kmdbtc,btcusd));
return(komodo_paxcalc(height,&ptr[1],baseid,relid,basevolume,kmdbtc,btcusd));
else return(0);
}
}
Expand Down Expand Up @@ -512,12 +529,18 @@ uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint
{
if ( (votes[numvotes-1-i]= _komodo_paxprice(0,0,height-i,base,rel,100000,kmdbtc,btcusd)) == 0 )
zeroes++;
else nonz++;
else
{
nonz++;
sum += votes[numvotes-1-i];
//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) )
{
//printf("kmdbtc %llu btcusd %llu ",(long long)kmdbtc,(long long)btcusd);
//printf("komodo_paxprice nonz.%d of numvotes.%d seed.%llu\n",nonz,numvotes,(long long)seed);
return(0);
}
return(komodo_paxcorrelation(votes,numvotes,seed) * basevolume / 100000);
Expand Down Expand Up @@ -561,7 +584,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin
break;
}
}
if ( height < 165000 )
if ( height < 165000 || height > 236000 )
break;
}
portable_mutex_unlock(&komodo_mutex);
Expand All @@ -580,7 +603,7 @@ int32_t komodo_paxprices(int32_t *heights,uint64_t *prices,int32_t max,char *bas
{
ptr = &PVALS[36 * i];
heights[num] = *ptr;
prices[num] = komodo_paxcalc(&ptr[1],baseid,relid,COIN,0,0);
prices[num] = komodo_paxcalc(*ptr,&ptr[1],baseid,relid,COIN,0,0);
num++;
if ( num >= max )
return(num);
Expand Down
4 changes: 3 additions & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -873,7 +873,9 @@ bool CheckTransaction(const CTransaction& tx, CValidationState &state,
{
if ( tx.vin[j].prevout.hash == array[k] && tx.vin[j].prevout.n == 1 )
{
printf("MEMPOOL: banned tx.%d being used at ht.%d vini.%d\n",k,(int32_t)chainActive.Tip()->nHeight,j);
static uint32_t counter;
if ( counter++ < 100 )
printf("MEMPOOL: banned tx.%d being used at ht.%d vini.%d\n",k,(int32_t)chainActive.Tip()->nHeight,j);
return(false);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/miner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -636,7 +636,7 @@ void static BitcoinMiner(CWallet *pwallet)
//
uint8_t pubkeys[66][33]; int mids[66],gpucount,nonzpkeys,i,j,externalflag; uint32_t savebits; int64_t nStart = GetTime();
savebits = pblock->nBits;
ari`th_uint256 hashTarget = arith_uint256().SetCompact(pblock->nBits);
arith_uint256 hashTarget = arith_uint256().SetCompact(pblock->nBits);
if ( ASSETCHAINS_SYMBOL[0] == 0 && notaryid >= 0 )//komodo_is_special(pindexPrev->nHeight+1,NOTARY_PUBKEY33) > 0 )
{
j = 65;
Expand Down

0 comments on commit 1c8af45

Please sign in to comment.