Browse Source

test

release/v0.1
jl777 8 years ago
parent
commit
5db3bc4f34
  1. 21
      iguana/iguana_tx.c
  2. 2
      includes/iguana_structs.h

21
iguana/iguana_tx.c

@ -172,10 +172,21 @@ struct iguana_txid *iguana_blocktx(struct iguana_info *coin,struct iguana_txid *
int32_t iguana_ramtxbytes(struct iguana_info *coin,uint8_t *serialized,int32_t maxlen,bits256 *txidp,struct iguana_txid *tx,int32_t height,struct iguana_msgvin *vins,struct iguana_msgvout *vouts,int32_t validatesigs) int32_t iguana_ramtxbytes(struct iguana_info *coin,uint8_t *serialized,int32_t maxlen,bits256 *txidp,struct iguana_txid *tx,int32_t height,struct iguana_msgvin *vins,struct iguana_msgvout *vouts,int32_t validatesigs)
{ {
int32_t i,rwflag=1,len = 0; char asmstr[512],txidstr[65]; int32_t i,rwflag=1,len = 0; char asmstr[512],txidstr[65];
uint32_t numvins,numvouts; struct iguana_msgvin vin; struct iguana_msgvout vout; uint8_t space[IGUANA_MAXSCRIPTSIZE]; uint32_t numvins,numvouts,version,locktime,timestamp=0; struct iguana_msgvin vin; struct iguana_msgvout vout; uint8_t space[IGUANA_MAXSCRIPTSIZE];
len += iguana_rwnum(rwflag,&serialized[len],sizeof(tx->version),&tx->version); if ( rwflag != 0 )
{
version = tx->version;
locktime = tx->locktime;
timestamp = tx->timestamp;
}
len += iguana_rwnum(rwflag,&serialized[len],sizeof(version),&version);
if ( coin->chain->isPoS != 0 ) if ( coin->chain->isPoS != 0 )
len += iguana_rwnum(rwflag,&serialized[len],sizeof(tx->timestamp),&tx->timestamp); len += iguana_rwnum(rwflag,&serialized[len],sizeof(timestamp),&timestamp);
if ( rwflag == 0 )
{
tx->version = version;
tx->timestamp = timestamp;
}
numvins = tx->numvins, numvouts = tx->numvouts; numvins = tx->numvins, numvouts = tx->numvouts;
len += iguana_rwvarint32(rwflag,&serialized[len],&numvins); len += iguana_rwvarint32(rwflag,&serialized[len],&numvins);
memset(&vin,0,sizeof(vin)); memset(&vin,0,sizeof(vin));
@ -209,7 +220,9 @@ int32_t iguana_ramtxbytes(struct iguana_info *coin,uint8_t *serialized,int32_t m
printf("len.%d > maxlenB.%d\n",len,maxlen); printf("len.%d > maxlenB.%d\n",len,maxlen);
return(0); return(0);
} }
len += iguana_rwnum(rwflag,&serialized[len],sizeof(tx->locktime),&tx->locktime); len += iguana_rwnum(rwflag,&serialized[len],sizeof(locktime),&locktime);
if ( rwflag == 0 )
tx->locktime = locktime;
*txidp = bits256_doublesha256(txidstr,serialized,len); *txidp = bits256_doublesha256(txidstr,serialized,len);
if ( memcmp(txidp,tx->txid.bytes,sizeof(*txidp)) != 0 ) if ( memcmp(txidp,tx->txid.bytes,sizeof(*txidp)) != 0 )
{ {

2
includes/iguana_structs.h

@ -239,7 +239,7 @@ struct iguana_unspent20 { uint64_t value; uint32_t scriptpos,txidind:28,type:4;
struct iguana_spend256 { bits256 prevhash2; uint64_t scriptpos:48,vinscriptlen:16; uint32_t sequenceid; int16_t prevout; uint16_t spendind,fileid; } __attribute__((packed)); struct iguana_spend256 { bits256 prevhash2; uint64_t scriptpos:48,vinscriptlen:16; uint32_t sequenceid; int16_t prevout; uint16_t spendind,fileid; } __attribute__((packed));
// permanent readonly structs // permanent readonly structs
struct iguana_txid { bits256 txid; uint32_t txidind:29,firstvout:28,firstvin:28,bundlei:11,locktime,version,timestamp,extraoffset; uint16_t numvouts,numvins; } __attribute__((packed)); struct iguana_txid { bits256 txid; uint64_t txidind:29,firstvout:28,firstvin:28,bundlei:11,locktime:32,version:32,timestamp:32,extraoffset:32; uint16_t numvouts,numvins; } __attribute__((packed));
struct iguana_unspent { uint64_t value; uint32_t txidind,pkind,prevunspentind,scriptpos; uint16_t scriptlen,hdrsi; uint16_t fileid:11,type:5; int16_t vout; } __attribute__((packed)); struct iguana_unspent { uint64_t value; uint32_t txidind,pkind,prevunspentind,scriptpos; uint16_t scriptlen,hdrsi; uint16_t fileid:11,type:5; int16_t vout; } __attribute__((packed));

Loading…
Cancel
Save