diff --git a/iguana/iguana_realtime.c b/iguana/iguana_realtime.c index dc9bc8fba..5f63a315d 100755 --- a/iguana/iguana_realtime.c +++ b/iguana/iguana_realtime.c @@ -464,6 +464,31 @@ int32_t iguana_realtime_update(struct supernet_info *myinfo,struct iguana_info * return(flag); } +void iguana_RTtxid(struct iguana_info *coin,struct iguana_block *block,int64_t polarity,int32_t txi,int32_t txn_count,bits256 txid,int32_t numvouts,int32_t numvins,uint32_t locktime,uint32_t version,uint32_t timestamp) +{ + char str[65]; + if ( strcmp("BTC",coin->symbol) != 0 ) + printf("%s txid.(%s) vouts.%d vins.%d version.%d lock.%u t.%u %lld\n",coin->symbol,bits256_str(str,txid),numvouts,numvins,version,locktime,timestamp,(long long)polarity); +} + +void iguana_RTspend(struct iguana_info *coin,struct iguana_block *block,int64_t polarity,bits256 txid,int32_t vini,bits256 prev_hash,int32_t prev_vout) +{ + char str[65],str2[65]; + if ( strcmp("BTC",coin->symbol) != 0 ) + printf("%s vini.%d spend.(%s/v%d) %lld\n",bits256_str(str,txid),vini,bits256_str(str2,prev_hash),prev_vout,(long long)polarity); +} + +void iguana_RTunspent(struct iguana_info *coin,struct iguana_block *block,int64_t polarity,char *coinaddr,uint8_t *rmd160,bits256 txid,int32_t vout,int64_t value) +{ + int32_t i; + if ( strcmp("BTC",coin->symbol) != 0 ) + { + for (i=0; i<20; i++) + printf("%02x",rmd160[i]); + printf(" %s vout.%d %.8f %lld\n",coinaddr,vout,dstr(value),(long long)polarity); + } +} + void iguana_RTreset(struct iguana_info *coin) { iguana_utxoaddrs_purge(coin); @@ -527,31 +552,6 @@ void iguana_RTpurge(struct iguana_info *coin,int32_t lastheight) printf("end RTpurge.%d\n",lastheight); } -void iguana_RTtxid(struct iguana_info *coin,struct iguana_block *block,int64_t polarity,int32_t txi,int32_t txn_count,bits256 txid,int32_t numvouts,int32_t numvins,uint32_t locktime,uint32_t version,uint32_t timestamp) -{ - char str[65]; - if ( strcmp("BTC",coin->symbol) != 0 ) - printf("%s txid.(%s) vouts.%d vins.%d version.%d lock.%u t.%u %lld\n",coin->symbol,bits256_str(str,txid),numvouts,numvins,version,locktime,timestamp,(long long)polarity); -} - -void iguana_RTspend(struct iguana_info *coin,struct iguana_block *block,int64_t polarity,bits256 txid,int32_t vini,bits256 prev_hash,int32_t prev_vout) -{ - char str[65],str2[65]; - if ( strcmp("BTC",coin->symbol) != 0 ) - printf("%s vini.%d spend.(%s/v%d) %lld\n",bits256_str(str,txid),vini,bits256_str(str2,prev_hash),prev_vout,(long long)polarity); -} - -void iguana_RTunspent(struct iguana_info *coin,struct iguana_block *block,int64_t polarity,char *coinaddr,uint8_t *rmd160,bits256 txid,int32_t vout,int64_t value) -{ - int32_t i; - if ( strcmp("BTC",coin->symbol) != 0 ) - { - for (i=0; i<20; i++) - printf("%02x",rmd160[i]); - printf(" %s vout.%d %.8f %lld\n",coinaddr,vout,dstr(value),(long long)polarity); - } -} - void iguana_RTiterate(struct iguana_info *coin,int32_t offset,struct iguana_block *block,int64_t polarity) { struct iguana_txblock txdata; uint8_t *serialized; int32_t n,len; uint32_t recvlen = 0; diff --git a/iguana/iguana_recv.c b/iguana/iguana_recv.c index d741f1a70..0fea12557 100755 --- a/iguana/iguana_recv.c +++ b/iguana/iguana_recv.c @@ -1213,6 +1213,19 @@ int32_t iguana_blockreq(struct iguana_info *coin,int32_t height,int32_t priority int32_t iguana_reqblocks(struct iguana_info *coin) { int32_t hdrsi,lflag,bundlei,iters=0,flag = 0; bits256 hash2; struct iguana_block *next,*block; struct iguana_bundle *bp; + if ( (block= iguana_blockfind("hwmcheck",coin,coin->blocks.hwmchain.RO.hash2)) == 0 || block->mainchain == 0 || block->height != coin->blocks.hwmchain.height ) + { + printf("HWM mismatch ht.%d vs %d\n",block->height,coin->blocks.hwmchain.height); + if ( coin->blocks.hwmchain.height > 0 ) + { + if ( (block= iguana_blockfind("hwmcheckb",coin,coin->blocks.hwmchain.RO.prev_block)) != 0 ) + { + printf("decrement HWM\n"); + iguana_blockzcopy(coin->chain->zcash,(struct iguana_block *)&coin->blocks.hwmchain,block); + return(0); + } + } + } if ( time(NULL) < coin->lastreqtime+2 ) return(0); coin->lastreqtime = (uint32_t)time(NULL); @@ -1220,12 +1233,12 @@ int32_t iguana_reqblocks(struct iguana_info *coin) hdrsi = (coin->blocks.hwmchain.height + 1) / coin->chain->bundlesize; if ( (bp= coin->bundles[hdrsi]) != 0 ) { - for (bundlei=0; bundleichain->bundlesize; bundlei++) + /*for (bundlei=0; bundleichain->bundlesize; bundlei++) if ( (block= bp->blocks[bundlei]) != 0 && bits256_cmp(block->RO.hash2,bp->hashes[bundlei]) != 0 && bits256_nonz(bp->hashes[bundlei]) != 0 ) { char str[65]; printf("%s [%d] bundlei.%d ht.%d vs expected %d\n",bits256_str(str,bp->hashes[bundlei]),hdrsi,bundlei,block->height,bp->bundleheight+bundlei); bp->blocks[bundlei] = iguana_blockfind("fixit",coin,bp->hashes[bundlei]); - } + }*/ bundlei = (coin->blocks.hwmchain.height+1) % coin->chain->bundlesize; if ( (next= bp->blocks[bundlei]) != 0 || (next= iguana_blockfind("reqblocks",coin,bp->hashes[bundlei])) != 0 ) {