From 64656f1887a3defbde4161b610f316541d139a30 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 20 Mar 2016 16:32:21 -0300 Subject: [PATCH] test --- iguana/iguana777.c | 11 ++++++----- iguana/iguana777.h | 2 +- iguana/iguana_bundles.c | 8 ++++++-- iguana/iguana_recv.c | 4 ++-- iguana/main.c | 2 +- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/iguana/iguana777.c b/iguana/iguana777.c index 63e14e332..d3057f241 100755 --- a/iguana/iguana777.c +++ b/iguana/iguana777.c @@ -573,7 +573,7 @@ void iguana_coinargs(char *symbol,int64_t *maxrecvcachep,int32_t *minconfirmsp,i struct iguana_info *iguana_setcoin(char *symbol,void *launched,int32_t maxpeers,int64_t maxrecvcache,uint64_t services,int32_t initialheight,int32_t maphash,int32_t minconfirms,int32_t maxpending,int32_t maxbundles,cJSON *json) { struct iguana_chain *iguana_createchain(cJSON *json); - struct iguana_info *coin; int32_t j,m,mapflags; char dirname[512]; cJSON *peers; + struct iguana_info *coin; int32_t j,m,mult,mapflags; char dirname[512]; cJSON *peers; mapflags = IGUANA_MAPRECVDATA | maphash*IGUANA_MAPTXIDITEMS | maphash*IGUANA_MAPPKITEMS | maphash*IGUANA_MAPBLOCKITEMS | maphash*IGUANA_MAPPEERITEMS; coin = iguana_coinadd(symbol,json); coin->launched = launched; @@ -594,16 +594,17 @@ struct iguana_info *iguana_setcoin(char *symbol,void *launched,int32_t maxpeers, sprintf(dirname,"%s/%s",GLOBALTMPDIR,symbol), OS_ensure_directory(dirname); coin->initialheight = initialheight; coin->mapflags = mapflags; + mult = (strcmp("BTC",coin->symbol) != 0) ? 64 : 1; if ( (coin->startPEND= juint(json,"startpend")) == 0 ) - coin->startPEND = IGUANA_MAXPENDBUNDLES; - else if ( coin->startPEND > 1024 ) + coin->startPEND = IGUANA_MAXPENDBUNDLES * mult; + if ( coin->startPEND > 1024 ) coin->startPEND = 1024; else if ( coin->startPEND < 2 ) coin->startPEND = 2; coin->MAXBUNDLES = coin->startPEND; if ( (coin->endPEND= juint(json,"endpend")) == 0 ) - coin->endPEND = IGUANA_MINPENDBUNDLES; - else if ( coin->endPEND > 1024 ) + coin->endPEND = IGUANA_MINPENDBUNDLES * mult; + if ( coin->endPEND > 1024 ) coin->endPEND = 1024; else if ( coin->endPEND < 2 ) coin->endPEND = 2; diff --git a/iguana/iguana777.h b/iguana/iguana777.h index 729c2758f..a6eb0ae17 100755 --- a/iguana/iguana777.h +++ b/iguana/iguana777.h @@ -37,7 +37,7 @@ typedef int32_t (*blockhashfunc)(uint8_t *blockhashp,uint8_t *serialized,int32_t #define IGUANA_HEADPERCENTAGE 0. #define IGUANA_TAILPERCENTAGE 1.0 #define IGUANA_MAXPENDHDRS 1 -#define _IGUANA_MAXPENDING 64 +#define _IGUANA_MAXPENDING 3 #define IGUANA_MINPENDBUNDLES 2 #define IGUANA_MAXPENDBUNDLES 2 #define IGUANA_BUNDLELOOP 77 diff --git a/iguana/iguana_bundles.c b/iguana/iguana_bundles.c index 98b8587e9..d6f8210f0 100755 --- a/iguana/iguana_bundles.c +++ b/iguana/iguana_bundles.c @@ -576,7 +576,7 @@ int32_t iguana_bundlehdr(struct iguana_info *coin,struct iguana_bundle *bp,int32 int32_t counter=0; //if ( bp->speculative != 0 ) // printf("hdr ITERATE bundle.%d vs %d: h.%d n.%d r.%d s.%d finished.%d speculative.%p\n",bp->bundleheight,coin->longestchain-coin->chain->bundlesize,bp->numhashes,bp->n,bp->numrecv,bp->numsaved,bp->emitfinish,bp->speculative); - int32_t i; struct iguana_block *block; + int32_t i; struct iguana_block *block; uint32_t now; if ( coin->enableCACHE != 0 && bp->speculative == 0 && bp->numhashes < bp->n ) { char str[64]; @@ -584,9 +584,13 @@ int32_t iguana_bundlehdr(struct iguana_info *coin,struct iguana_bundle *bp,int32 } else if ( bp->speculative != 0 ) { + now = (uint32_t)time(NULL); for (i=0; inumspec; i++) - if ( bits256_nonz(bp->speculative[i]) != 0 && ((block= iguana_blockfind(coin,bp->speculative[i])) == 0 || block->req == 0) ) + if ( bits256_nonz(bp->speculative[i]) != 0 && bp->issued[i] > now+10 && ((block= iguana_blockfind(coin,bp->speculative[i])) == 0 || block->req == 0) ) + { + bp->issued[i] = now; iguana_blockQ("speculative",coin,0,-1,bp->speculative[i],0); + } } return(counter); } diff --git a/iguana/iguana_recv.c b/iguana/iguana_recv.c index aa4c124db..f83589fdf 100755 --- a/iguana/iguana_recv.c +++ b/iguana/iguana_recv.c @@ -891,7 +891,7 @@ int32_t iguana_reqblocks(struct iguana_info *coin) else threshold = coin->avetime; threshold *= 100. * sqrt(threshold) * .000777;*/ double threshold,lag = OS_milliseconds() - coin->backstopmillis; - threshold = 1000; + threshold = 300; if ( coin->blocks.hwmchain.height < coin->longestchain && (coin->backstop != coin->blocks.hwmchain.height+1 || lag > threshold) ) { coin->backstop = coin->blocks.hwmchain.height+1; @@ -909,7 +909,7 @@ int32_t iguana_reqblocks(struct iguana_info *coin) if ( bp != 0 && bits256_nonz(hash2) > 0 ) { coin->backstopmillis = OS_milliseconds(); - iguana_blockQ("mainchain",coin,bp,bundlei,hash2,0); + iguana_blockQ("mainchain",coin,0,-1,hash2,lag > 100 * threshold); flag++; char str[65]; if ( 1 && (rand() % 1000) == 0 || bp->bundleheight > coin->longestchain-coin->chain->bundlesize ) diff --git a/iguana/main.c b/iguana/main.c index 96536b784..a0feff418 100755 --- a/iguana/main.c +++ b/iguana/main.c @@ -44,7 +44,7 @@ static int32_t initflag; int32_t HDRnet,netBLOCKS; cJSON *API_json; #ifdef __linux__ -int32_t IGUANA_NUMHELPERS = 8; +int32_t IGUANA_NUMHELPERS = 16; #else int32_t IGUANA_NUMHELPERS = 4; #endif