diff --git a/iguana/iguana_unspents.c b/iguana/iguana_unspents.c index f9f767873..1a23bb297 100755 --- a/iguana/iguana_unspents.c +++ b/iguana/iguana_unspents.c @@ -734,12 +734,12 @@ struct iguana_bundle *iguana_externalspent(struct iguana_info *coin,bits256 *pre int32_t iguana_txidfastfind(struct iguana_info *coin,int32_t *heightp,bits256 txid,int32_t lasthdrsi) { - uint8_t *sorted,*item; int32_t i,j,val,num,tablesize,*hashtable; uint16_t firstvout; + uint8_t *sorted,*item; int32_t i,j,val,num,tablesize,*hashtable; uint32_t firstvout; if ( (sorted= coin->fast[txid.bytes[31]]) != 0 ) { memcpy(&num,sorted,sizeof(num)); memcpy(&tablesize,&sorted[sizeof(num)],sizeof(tablesize)); - hashtable = (int32_t *)((long)sorted + (1 + num)*14); + hashtable = (int32_t *)((long)sorted + (1 + num)*16); val = (txid.uints[4] % tablesize); for (j=0; j"); + for (k=16; k<32; k++) + printf("%02x ",item[k]); + printf("\n"); + printf("txid.%llx vs item.%llx ht.%d 1st.%d\n",(long long)txid.txid,*(long long *)item,*(int32_t *)&item[sizeof(uint64_t)],*(int32_t *)&item[sizeof(uint64_t)+sizeof(uint32_t)]); } } } @@ -778,13 +785,13 @@ int32_t iguana_txidfastfind(struct iguana_info *coin,int32_t *heightp,bits256 tx return(-1); } -int32_t iguana_fastfindadd(struct iguana_info *coin,bits256 txid,int32_t height,uint16_t firstvout) +int32_t iguana_fastfindadd(struct iguana_info *coin,bits256 txid,int32_t height,uint32_t firstvout) { FILE *fp; if ( (fp= coin->fastfps[txid.bytes[31]]) != 0 ) { txid.uints[7] = height; - txid.ushorts[13] = firstvout; + txid.uints[6] = firstvout; if ( fwrite(&txid,1,sizeof(txid),fp) == sizeof(txid) ) return(1); } @@ -833,7 +840,7 @@ int32_t iguana_fastfindinit(struct iguana_info *coin) int64_t iguana_fastfindcreate(struct iguana_info *coin) { - int32_t i,j,val,iter,errs,num,ind,tablesize,*hashtable; bits256 *sortbuf,hash2; long allocsize; struct iguana_bundle *bp; char fname[512]; uint8_t buf[14]; int64_t total = 0; + int32_t i,j,val,iter,errs,num,ind,tablesize,*hashtable; bits256 *sortbuf,hash2; long allocsize; struct iguana_bundle *bp; char fname[512]; uint8_t buf[16]; int64_t total = 0; if ( coin->current != 0 && coin->bundlescount == coin->current->hdrsi+1 ) { sprintf(fname,"DB/%s/fastfind",coin->symbol), OS_ensure_directory(fname); @@ -889,8 +896,8 @@ int64_t iguana_fastfindcreate(struct iguana_info *coin) { //char str[65]; printf("%d %s\n",j,bits256_str(str,hash2)); memcpy(buf,&hash2.txid,sizeof(hash2.txid)); - memcpy(&buf[sizeof(hash2.txid)],&hash2.ushorts[13],sizeof(hash2.ushorts[13])); - memcpy(&buf[sizeof(hash2.txid) + sizeof(hash2.ushorts[13])],&hash2.uints[7],sizeof(hash2.uints[7])); + memcpy(&buf[sizeof(hash2.txid)],&hash2.uints[6],sizeof(hash2.uints[6])); + memcpy(&buf[sizeof(hash2.txid) + sizeof(hash2.uints[6])],&hash2.uints[7],sizeof(hash2.uints[7])); fwrite(buf,1,sizeof(buf),coin->fastfps[i]); if ( j < num ) hash2 = sortbuf[j];