diff --git a/iguana/iguana777.c b/iguana/iguana777.c index 626914330..8794e0ad2 100755 --- a/iguana/iguana777.c +++ b/iguana/iguana777.c @@ -415,7 +415,7 @@ int32_t iguana_helperB(struct iguana_info *coin,int32_t helperid,struct iguana_b void iguana_update_balances(struct iguana_info *coin) { - int32_t i,hdrsi,max; struct iguana_bundle *bp; + int32_t i,hdrsi,max; struct iguana_bundle *bp; char fname[1024]; max = coin->bundlescount; if ( coin->bundles[max-1] != 0 && coin->bundles[max-1]->emitfinish <= 1 && coin->RTheight == 0 ) max--; @@ -428,9 +428,13 @@ void iguana_update_balances(struct iguana_info *coin) if ( (bp= coin->bundles[i]) != 0 && bp != coin->current ) { iguana_volatilespurge(coin,&bp->ramchain); - iguana_volatilesalloc(coin,&bp->ramchain,1);//i < hdrsi); + sprintf(fname,"%s/%s/accounts/debits.%d",GLOBAL_DBDIR,coin->symbol,bp->bundleheight); + OS_removefile(fname,0); + sprintf(fname,"%s/%s/accounts/lastspends.%d",GLOBAL_DBDIR,coin->symbol,bp->bundleheight); + OS_removefile(fname,0); + iguana_volatilesalloc(coin,&bp->ramchain,0);//i < hdrsi); } - for (; hdrsibundles[hdrsi]) != 0 ) { diff --git a/iguana/iguana_realtime.c b/iguana/iguana_realtime.c index 93f0fddd7..596b955bc 100755 --- a/iguana/iguana_realtime.c +++ b/iguana/iguana_realtime.c @@ -226,7 +226,13 @@ int32_t iguana_realtime_update(struct supernet_info *myinfo,struct iguana_info * { printf("RT edge case couldnt link\n"); } - else printf("RT edge case.%d\n",block->height); + else + { + printf("RT edge case.%d\n",block->height); + if ( (bp= coin->bundles[coin->RTheight / coin->chain->bundlesize]) != 0 ) + iguana_spendvectors(myinfo,coin,bp,&bp->ramchain,0,bp->n,0,0); + iguana_update_balances(coin); + } } if ( coin->spendvectorsaved <= 1 ) { diff --git a/iguana/iguana_unspents.c b/iguana/iguana_unspents.c index ff1295b31..7e75cc926 100755 --- a/iguana/iguana_unspents.c +++ b/iguana/iguana_unspents.c @@ -1079,6 +1079,7 @@ int32_t iguana_utxoaddr_map(struct iguana_info *coin,char *fname) int32_t iguana_utxoaddr_check(struct supernet_info *myinfo,struct iguana_info *coin,int32_t lastheight,int64_t *unspents,int32_t max,struct iguana_utxoaddr *utxoaddr) { + static int32_t good,bad; char coinaddr[64]; int64_t sum,checkbalance; int32_t iter,i,numunspents = 0; sum = 0; for (iter=0; iter<2; iter++) @@ -1093,8 +1094,9 @@ int32_t iguana_utxoaddr_check(struct supernet_info *myinfo,struct iguana_info *c break; } } - if ( sum != utxoaddr->histbalance ) + if ( sum != utxoaddr->histbalance || checkbalance != sum ) { + bad++; for (i=0; i>32)&0xffffffff,(long long)unspents[i<<1]&0xffffffff,dstr(unspents[(i<<1)+1])); for (i=0; i<20; i++) @@ -1102,7 +1104,11 @@ int32_t iguana_utxoaddr_check(struct supernet_info *myinfo,struct iguana_info *c bitcoin_address(coinaddr,coin->chain->pubtype,utxoaddr->rmd160,sizeof(utxoaddr->rmd160)); printf(" %s: sum %.8f != %.8f numunspents.%d diff %.8f\n",coinaddr,dstr(sum),dstr(utxoaddr->histbalance),numunspents,dstr(utxoaddr->histbalance)-dstr(sum)); return(-1); - } else return(0); + } + good++; + if ( ((good + bad) % 1000) == 0 ) + printf("utxoaddr validate good.%d bad.%d\n",good,bad); + return(0); } int32_t iguana_utxoaddr_validate(struct supernet_info *myinfo,struct iguana_info *coin,int32_t lastheight)