Browse Source

Test

etomic
jl777 8 years ago
parent
commit
ab55b08f5b
  1. 4
      iguana/iguana_msg.c
  2. 19
      iguana/iguana_ramchain.c

4
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; i<msg->tx_out; i++)
{

19
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; k<t->numvouts; k++,ramchain->H.unspentind++)
for (k=0; k<t->numvouts; 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; k<t->numvouts; k++,ramchain->H.unspentind++)
for (k=0; k<t->numvouts; 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.txidind<rdata->numtxids; ramchain->H.txidind++)
{
t = &T[ramchain->H.txidind];
for (k=0; k<t->numvins; k++,ramchain->H.spendind++)
for (k=0; k<t->numvins; 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; i<txn_count; i++,ramchain->H.txidind++)
for (i=0; i<txn_count; i++)
{
tx = &txarray[i];
iguana_ramchain_addtxid(coin,RAMCHAIN_ARG,tx->txid,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; i<txn_count; i++,ramchain->H.txidind++)
for (i=0; i<txn_count; i++)
{
tx = &txarray[i];
for (j=0; j<tx->tx_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;

Loading…
Cancel
Save