diff --git a/iguana/iguana777.c b/iguana/iguana777.c index ed12085ff..40062e079 100755 --- a/iguana/iguana777.c +++ b/iguana/iguana777.c @@ -665,7 +665,6 @@ void iguana_callcoinstart(struct supernet_info *myinfo,struct iguana_info *coin) memset(zero.bytes,0,sizeof(zero)); if ( (bp= iguana_bundlecreate(coin,&bundlei,0,*(bits256 *)coin->chain->genesis_hashdata,zero,1)) != 0 ) bp->bundleheight = 0; - iguana_datachain_scan(myinfo,coin,CRYPTO777_RMD160); } void iguana_coinloop(void *arg) diff --git a/iguana/iguana_init.c b/iguana/iguana_init.c index b4e034b97..e5a769102 100755 --- a/iguana/iguana_init.c +++ b/iguana/iguana_init.c @@ -227,7 +227,7 @@ int32_t iguana_bundleinitmap(struct iguana_info *coin,struct iguana_bundle *bp,i if ( coin->current != 0 && coin->current->hdrsi+1 == bp->hdrsi ) coin->current = bp; bp->emitfinish = (uint32_t)time(NULL) + 1; - //printf("[%d %u] ",bp->hdrsi,bp->emitfinish); + printf("[%d].%p ",bp->hdrsi,bp->ramchain.H.data); return(0); } else @@ -243,7 +243,7 @@ int32_t iguana_bundleinitmap(struct iguana_info *coin,struct iguana_bundle *bp,i } } -void iguana_parseline(struct iguana_info *coin,int32_t iter,FILE *fp) +void iguana_parseline(struct supernet_info *myinfo,struct iguana_info *coin,int32_t iter,FILE *fp) { int32_t j,k,m,c,flag,bundlei,lastheight,height = -1; char checkstr[1024],line[1024]; struct iguana_peer *addr; struct iguana_bundle *bp; bits256 allhash,hash2,hash1,zero,lastbundle; @@ -367,7 +367,7 @@ void iguana_parseline(struct iguana_info *coin,int32_t iter,FILE *fp) if ( iter == 1 && bits256_nonz(lastbundle) != 0 ) { printf("%s parseline ht.%d\n",coin->symbol,lastheight); - iguana_initfinal(coin,lastbundle); + iguana_initfinal(myinfo,coin,lastbundle); } } @@ -377,7 +377,7 @@ long iguana_bundlesload(struct supernet_info *myinfo,struct iguana_info *coin) sprintf(fname,"%s/%s_%s.txt",GLOBAL_CONFSDIR,coin->symbol,(iter == 0) ? "peers" : "hdrs"), OS_compatible_path(fname); if ( (fp= fopen(fname,"r")) != 0 ) { - iguana_parseline(coin,iter,fp); + iguana_parseline(myinfo,coin,iter,fp); printf("done parsefile.%d (%s) size.%ld\n",iter,fname,fpos); fpos = ftell(fp); fclose(fp); @@ -616,7 +616,7 @@ struct iguana_info *iguana_coinstart(struct iguana_info *coin,int32_t initialhei if ( coin->virtualchain == 0 || iter > 0 ) { printf("parsefile.%d %s\n",iter,fname); - iguana_parseline(coin,iter,fp); + iguana_parseline(myinfo,coin,iter,fp); printf("done parsefile.%d (%s) size.%ld\n",iter,fname,fpos); } fpos = ftell(fp); diff --git a/iguana/iguana_realtime.c b/iguana/iguana_realtime.c index 35c66e600..5cd83c761 100755 --- a/iguana/iguana_realtime.c +++ b/iguana/iguana_realtime.c @@ -426,7 +426,7 @@ int32_t iguana_realtime_update(struct supernet_info *myinfo,struct iguana_info * if ( coin->RTdatabad < 0 ) { memset(lastbundle.bytes,0,sizeof(lastbundle)); - iguana_initfinal(coin,lastbundle); + iguana_initfinal(myinfo,coin,lastbundle); } coin->RTdatabad = 0; //memset(bp->hashes,0,sizeof(bp->hashes)); diff --git a/iguana/iguana_recv.c b/iguana/iguana_recv.c index d80d8087c..434c3cdc6 100755 --- a/iguana/iguana_recv.c +++ b/iguana/iguana_recv.c @@ -1421,6 +1421,12 @@ int32_t iguana_reqhdrs(struct iguana_info *coin) coin->numpendings++; init_hexbytes_noT(hashstr,bp->hashes[0].bytes,sizeof(bits256)); queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(hashstr),1); + if ( bp == coin->current ) + { + printf("issue HWM HDRS %d\n",coin->blocks.hwmchain.height); + init_hexbytes_noT(hashstr,coin->blocks.hwmchain.RO.hash2.bytes,sizeof(bits256)); + queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(hashstr),1); + } //printf("hdrsi.%d reqHDR.(%s) numhashes.%d\n",bp->hdrsi,hashstr,bp->numhashes); if ( 1 ) { diff --git a/iguana/iguana_spendvectors.c b/iguana/iguana_spendvectors.c index baac2ee57..1ad1e7430 100755 --- a/iguana/iguana_spendvectors.c +++ b/iguana/iguana_spendvectors.c @@ -607,7 +607,7 @@ void iguana_truncatebalances(struct iguana_info *coin) coin->balanceswritten = 0; } -int32_t iguana_volatilesinit(struct iguana_info *coin) +int32_t iguana_volatilesinit(struct supernet_info *myinfo,struct iguana_info *coin) { bits256 balancehash,allbundles; struct iguana_utxo *Uptr; struct iguana_account *Aptr; struct sha256_vstate vstate,bstate; int32_t i,from_ro,numpkinds,numunspents; struct iguana_bundle *bp; struct iguana_block *block; @@ -721,10 +721,19 @@ int32_t iguana_volatilesinit(struct iguana_info *coin) //printf("end volatilesinit\n"); if ( iguana_fastfindinit(coin) == 0 )//&& coin->PREFETCHLAG >= 0 ) iguana_fastfindcreate(coin); + /*for (j=0; jbundlescount; j++) + if ( (bp= coin->bundles[j]) != 0 ) + { + iguana_volatilesalloc(coin,&bp->ramchain,1); + iguana_volatilesmap(coin,&bp->ramchain); + } + iguana_update_balances(coin);*/ + iguana_datachain_scan(myinfo,coin,CRYPTO777_RMD160); + //iguana_utxoaddr_gen(myinfo,coin,(coin->bundlescount - 1) * coin->chain->bundlesize);*/ return(coin->bundlescount); } -void iguana_initfinal(struct iguana_info *coin,bits256 lastbundle) +void iguana_initfinal(struct supernet_info *myinfo,struct iguana_info *coin,bits256 lastbundle) { int32_t i,hdrsi,bundlei,height; struct iguana_bundle *bp; bits256 hash2; struct iguana_block *block; char hashstr[65]; if ( bits256_nonz(lastbundle) > 0 ) @@ -762,7 +771,7 @@ void iguana_initfinal(struct iguana_info *coin,bits256 lastbundle) } printf("i.%d bundlescount.%d\n",i,coin->bundlescount); if ( coin->balanceswritten > 1 ) - coin->balanceswritten = iguana_volatilesinit(coin); + coin->balanceswritten = iguana_volatilesinit(myinfo,coin); if ( coin->balanceswritten > 1 ) { //for (i=0; ibalanceswritten; i++) @@ -786,7 +795,7 @@ void iguana_initfinal(struct iguana_info *coin,bits256 lastbundle) printf("iguana_bundlesQ %d to %d\n",coin->balanceswritten,coin->bundlescount); } if ( (coin->origbalanceswritten= coin->balanceswritten) > 0 ) - iguana_volatilesinit(coin); + iguana_volatilesinit(myinfo,coin); iguana_savehdrs(coin); iguana_fastlink(coin,coin->balanceswritten * coin->chain->bundlesize - 1); iguana_walkchain(coin,0); @@ -946,7 +955,7 @@ int32_t iguana_balanceflush(struct supernet_info *myinfo,struct iguana_info *coi } exit(-1); } - coin->balanceswritten = iguana_volatilesinit(coin); + coin->balanceswritten = iguana_volatilesinit(myinfo,coin); //printf("flush free\n"); iguana_RTramchainfree(coin,bp); return(coin->balanceswritten); diff --git a/iguana/iguana_unspents.c b/iguana/iguana_unspents.c index 32fd840ed..2c31d3e74 100755 --- a/iguana/iguana_unspents.c +++ b/iguana/iguana_unspents.c @@ -353,6 +353,8 @@ int32_t iguana_datachain_scan(struct supernet_info *myinfo,struct iguana_info *c { if ( (bp= coin->bundles[i]) != 0 ) { + //iguana_volatilesalloc(coin,&bp->ramchain,1); + //iguana_volatilesmap(coin,&bp->ramchain); ramchain = 0; if ( iguana_pkhashfind(coin,&ramchain,&deposits,&lastunspentind,&p,rmd160,i,i) != 0 ) { @@ -379,6 +381,7 @@ int32_t iguana_datachain_scan(struct supernet_info *myinfo,struct iguana_info *c } } } + //iguana_utxoaddr_gen(myinfo,coin,(coin->bundlescount - 1) * coin->chain->bundlesize); return(num); } diff --git a/iguana/m_LP b/iguana/m_LP index 222dccae4..21864bd27 100755 --- a/iguana/m_LP +++ b/iguana/m_LP @@ -2,6 +2,6 @@ rm ../agents/iguana *.o git pull cd secp256k1; ./m_unix; cd .. -gcc -g -Wno-deprecated -c -O2 -DLIQUIDITY_PROVIDER=1 *.c ../basilisk/basilisk.c ../gecko/gecko.c ../datachain/datachain.c -gcc -g -Wno-deprecated -c -DLIQUIDITY_PROVIDER=1 main.c iguana777.c iguana_bundles.c ../basilisk/basilisk.c +gcc -g -Wnoaggressive-loop-optimizations -Wno-deprecated -c -O2 -DLIQUIDITY_PROVIDER=1 *.c ../basilisk/basilisk.c ../gecko/gecko.c ../datachain/datachain.c +gcc -g -Wnoaggressive-loop-optimizations -Wno-deprecated -c -DLIQUIDITY_PROVIDER=1 main.c iguana777.c iguana_bundles.c ../basilisk/basilisk.c gcc -g -o ../agents/iguana *.o ../agents/libcrypto777.a -lcurl -lssl -lcrypto -lpthread -lz -lm diff --git a/iguana/m_unix b/iguana/m_unix index 28d7bc69a..dae4c0bc0 100755 --- a/iguana/m_unix +++ b/iguana/m_unix @@ -3,6 +3,6 @@ rm ../agents/iguana *.o git pull cd secp256k1; ./m_unix; cd .. cd ../crypto777; ./m_unix; cd ../iguana -gcc -g -Wno-deprecated -c *.c ../basilisk/basilisk.c ../gecko/gecko.c ../datachain/datachain.c -gcc -g -Wno-deprecated -c main.c iguana777.c iguana_bundles.c ../basilisk/basilisk.c +gcc -g -Wnoaggressive-loop-optimizations -Wno-deprecated -c *.c ../basilisk/basilisk.c ../gecko/gecko.c ../datachain/datachain.c +gcc -g -Wnoaggressive-loop-optimizations -Wno-deprecated -c main.c iguana777.c iguana_bundles.c ../basilisk/basilisk.c gcc -g -o ../agents/iguana *.o ../agents/libcrypto777.a -lpthread -lm diff --git a/includes/iguana_funcs.h b/includes/iguana_funcs.h index 4904ffa44..c4b37e7c4 100755 --- a/includes/iguana_funcs.h +++ b/includes/iguana_funcs.h @@ -112,7 +112,7 @@ int32_t iguana_savehdrs(struct iguana_info *coin); // hdrs struct iguana_bundle *iguana_bundlecreate(struct iguana_info *coin,int32_t *bundleip,int32_t bundleheight,bits256 bundlehash2,bits256 allhash,int32_t issueflag); struct iguana_block *iguana_updatehdrs(struct iguana_info *coin,int32_t *newhwmp,struct iguana_block *block,bits256 prevhash2,bits256 hash2); -void iguana_parseline(struct iguana_info *coin,int32_t iter,FILE *fp); +void iguana_parseline(struct supernet_info *myinfo,struct iguana_info *coin,int32_t iter,FILE *fp); void iguana_gotheadersM(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_zblock *zblocks,int32_t n); void iguana_emittxdata(struct iguana_info *coin,struct iguana_bundle *bp); int32_t iguana_pollQsPT(struct iguana_info *coin,struct iguana_peer *addr); @@ -345,8 +345,8 @@ int32_t iguana_ramchain_prefetch(struct iguana_info *coin,struct iguana_ramchain int32_t iguana_realtime_update(struct supernet_info *myinfo,struct iguana_info *coin); int32_t iguana_volatilesmap(struct iguana_info *coin,struct iguana_ramchain *ramchain); void iguana_volatilespurge(struct iguana_info *coin,struct iguana_ramchain *ramchain); -int32_t iguana_volatilesinit(struct iguana_info *coin); -void iguana_initfinal(struct iguana_info *coin,bits256 lastbundle); +int32_t iguana_volatilesinit(struct supernet_info *myinfo,struct iguana_info *coin); +void iguana_initfinal(struct supernet_info *myinfo,struct iguana_info *coin,bits256 lastbundle); int64_t iguana_ramchainopen(char *fname,struct iguana_info *coin,struct iguana_ramchain *ramchain,struct OS_memspace *mem,struct OS_memspace *hashmem,int32_t bundleheight,bits256 hash2); int32_t iguana_ramchain_free(struct iguana_info *coin,struct iguana_ramchain *ramchain,int32_t deleteflag); void iguana_blocksetcounters(struct iguana_info *coin,struct iguana_block *block,struct iguana_ramchain * ramchain);