From ab55b08f5b1c64a9c9bcf1ce3c3aa53583684967 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 22 Aug 2017 23:53:06 +0200 Subject: [PATCH] Test --- iguana/iguana_msg.c | 4 ++-- iguana/iguana_ramchain.c | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/iguana/iguana_msg.c b/iguana/iguana_msg.c index 8ad05f5d9..bbdd7a6d6 100755 --- a/iguana/iguana_msg.c +++ b/iguana/iguana_msg.c @@ -640,7 +640,7 @@ int32_t iguana_rwtx(struct supernet_info *myinfo,uint8_t zcash,int32_t rwflag,st len += iguana_rwnum(rwflag,&serialized[len],sizeof(msg->timestamp),&msg->timestamp); } len += iguana_rwvarint32(rwflag,&serialized[len],&msg->tx_in); - if ( rwflag == 0 ) + if ( rwflag == 0 && msg->tx_in > 0 ) msg->vins = iguana_memalloc(mem,msg->tx_in * sizeof(*msg->vins),1); if ( maxsize-len <= 0 ) return(-1); @@ -671,7 +671,7 @@ int32_t iguana_rwtx(struct supernet_info *myinfo,uint8_t zcash,int32_t rwflag,st return(-1); } //printf("numvouts.%d ",msg->tx_out); - if ( rwflag == 0 ) + if ( rwflag == 0 && msg->tx_out > 0 ) msg->vouts = iguana_memalloc(mem,msg->tx_out * sizeof(*msg->vouts),1); for (i=0; itx_out; i++) { diff --git a/iguana/iguana_ramchain.c b/iguana/iguana_ramchain.c index 03a31edb6..88119da75 100755 --- a/iguana/iguana_ramchain.c +++ b/iguana/iguana_ramchain.c @@ -184,7 +184,7 @@ uint32_t iguana_ramchain_addtxid(struct iguana_info *coin,RAMCHAIN_FUNC,bits256 { if ( t->txidind != txidind || memcmp(t->txid.bytes,txid.bytes,sizeof(bits256)) != 0 || t->numvouts != numvouts || t->numvins != numvins || t->firstvout != ramchain->H.unspentind || t->firstvin != ramchain->H.spendind || t->locktime != locktime || t->version != version || t->timestamp != timestamp ) { - printf("iguana_ramchain_addtxid.RO: addtxid mismatch (%u %d %d %u %u) vs. (%d %d %d %d %d)\n",(uint32_t)t->txidind,t->numvouts,t->numvins,(uint32_t)t->firstvout,(uint32_t)t->firstvin,txidind,numvouts,numvins,ramchain->H.unspentind,ramchain->H.spendind); + printf("iguana_ramchain_addtxid.RO: addtxid mismatch b.%d (%u %d %d %u %u) vs. (%d %d %d %d %d)\n",bundlei,(uint32_t)t->txidind,t->numvouts,t->numvins,(uint32_t)t->firstvout,(uint32_t)t->firstvin,txidind,numvouts,numvins,ramchain->H.unspentind,ramchain->H.spendind); //getchar(); return(0); } @@ -1095,7 +1095,7 @@ int32_t iguana_ramchain_verify(struct iguana_info *coin,struct iguana_ramchain * //exit(-1); return(-4); } - if ( coin->chain->zcash == 0 && t->firstvin != ramchain->H.spendind ) + if ( t->firstvin != ramchain->H.spendind ) { printf("t[%u] firstvin.%u vs spendind.%d\n",(uint32_t)t->txidind,(uint32_t)t->firstvin,ramchain->H.spendind); return(-5); @@ -1126,7 +1126,7 @@ int32_t iguana_ramchain_verify(struct iguana_info *coin,struct iguana_ramchain * return(-3); } } - for (k=0; knumvouts; k++,ramchain->H.unspentind++) + for (k=0; knumvouts; k++) { u = &Ux[ramchain->H.unspentind]; if ( u->txidind != ramchain->H.txidind ) @@ -1148,17 +1148,19 @@ int32_t iguana_ramchain_verify(struct iguana_info *coin,struct iguana_ramchain * printf("%p itemind.%d pkind.%d %d unspentind?\n",p,ptr->hh.itemind,pkind,ramchain->H.unspentind); return(-9); } + ramchain->H.unspentind++; } } else { - for (k=0; knumvouts; k++,ramchain->H.unspentind++) + for (k=0; knumvouts; k++) { if ( U[ramchain->H.unspentind].txidind != ramchain->H.txidind ) { printf(" k.%d U.%d u->txidind.%x != txidind.%d\n",k,ramchain->H.unspentind,U[ramchain->H.unspentind].txidind,ramchain->H.txidind); return(-6); } + ramchain->H.unspentind++; } } ramchain->H.spendind += t->numvins; @@ -1167,7 +1169,7 @@ int32_t iguana_ramchain_verify(struct iguana_info *coin,struct iguana_ramchain * for (ramchain->H.txidind=rdata->firsti; ramchain->H.txidindnumtxids; ramchain->H.txidind++) { t = &T[ramchain->H.txidind]; - for (k=0; knumvins; k++,ramchain->H.spendind++) + for (k=0; knumvins; k++) { if ( ramchain->expanded != 0 ) { @@ -1190,6 +1192,7 @@ int32_t iguana_ramchain_verify(struct iguana_info *coin,struct iguana_ramchain * } } } + ramchain->H.spendind++; } } if ( ramchain->expanded != 0 && ramchain->A != ramchain->creditsA ) @@ -1899,7 +1902,7 @@ long iguana_ramchain_data(struct supernet_info *myinfo,struct iguana_info *coin, } if ( block != 0 ) block->fpipbits = 1; - for (i=0; iH.txidind++) + for (i=0; itxid,tx->tx_out,tx->tx_in,tx->lock_time,tx->version,tx->timestamp,bundlei); @@ -1916,16 +1919,18 @@ long iguana_ramchain_data(struct supernet_info *myinfo,struct iguana_info *coin, iguana_ramchain_addunspent20(coin,addr,RAMCHAIN_ARG,tx->vouts[j].value,tx->vouts[j].pk_script,tx->vouts[j].pk_scriptlen,tx->txid,j,-1,bp,rmd160); } ramchain->H.spendind += tx->tx_in; + ramchain->H.txidind++; } //printf("scriptoffset.%d after %d txids\n",ramchain->H.scriptoffset,txn_count); ramchain->H.txidind = ramchain->H.spendind = rdata->firsti; - for (i=0; iH.txidind++) + for (i=0; itx_in; j++) { iguana_ramchain_addspend256(coin,addr,RAMCHAIN_ARG,tx->vins[j].prev_hash,tx->vins[j].prev_vout,tx->vins[j].vinscript,tx->vins[j].scriptlen,tx->vins[j].sequence,bp);//,bp->hdrsi,bundlei); } + ramchain->H.txidind++; } rdata->prevhash2 = origtxdata->zblock.RO.prev_block; rdata->scriptspace = scriptspace = ramchain->H.scriptoffset;