From 5a90d4251d77931c7baa42f1874768efc7b9dbba Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 8 Mar 2016 20:59:00 -0300 Subject: [PATCH] test --- iguana/exchanges/bitcoin.c | 4 ++-- iguana/exchanges/bitcoin.h | 2 +- iguana/iguana777.h | 2 +- iguana/iguana_ramchain.c | 37 ++++++++++++++++++++----------------- iguana/iguana_scripts.c | 4 ++-- 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/iguana/exchanges/bitcoin.c b/iguana/exchanges/bitcoin.c index fecea1d61..9a080a560 100755 --- a/iguana/exchanges/bitcoin.c +++ b/iguana/exchanges/bitcoin.c @@ -723,8 +723,8 @@ char *iguana_rawtxbytes(struct iguana_info *coin,cJSON *json,struct iguana_msgtx int32_t bitcoin_verifyvins(struct iguana_info *coin,bits256 *signedtxidp,char **signedtx,struct iguana_msgtx *msgtx,uint8_t *serialized,int32_t maxsize,struct vin_info *V,int32_t sighashsingle) { bits256 txid,sigtxid,revsigtxid; uint8_t *sig,*pubkey; struct vin_info *vp; - char txidstr[128],bigstr[2560],coinaddr[64],vpnstr[64],str[65]; - int32_t n2,i,j,k,plen,suffixlen,sigsize,pubkeysize,vini=0,flag,numvins,hashtype,retval,siglen,asmtype,numvouts; + char txidstr[128],bigstr[2560],coinaddr[64],vpnstr[64],str[65]; uint32_t suffixlen,sigsize,pubkeysize; + int32_t n2,i,j,k,plen,vini=0,flag,numvins,hashtype,retval,siglen,asmtype,numvouts; numvouts = msgtx->tx_out; vpnstr[0] = 0; *signedtx = 0; diff --git a/iguana/exchanges/bitcoin.h b/iguana/exchanges/bitcoin.h index 97f31f7e2..7a650e61d 100755 --- a/iguana/exchanges/bitcoin.h +++ b/iguana/exchanges/bitcoin.h @@ -73,7 +73,7 @@ int32_t bitcoin_revealsecret160(uint8_t *script,int32_t n,uint8_t secret160[20]) int32_t bitcoin_standardspend(uint8_t *script,int32_t n,uint8_t rmd160[20]); int32_t bitcoin_pubkeylen(const uint8_t *pubkey); -int32_t bitcoin_scriptget(struct iguana_info *coin,int32_t *hashtypep,int32_t *sigsizep,int32_t *pubkeysizep,int32_t *suffixp,struct vin_info *vp,uint8_t *scriptsig,int32_t len,int32_t spendtype); +int32_t bitcoin_scriptget(struct iguana_info *coin,int32_t *hashtypep,uint32_t *sigsizep,uint32_t *pubkeysizep,uint32_t *suffixp,struct vin_info *vp,uint8_t *scriptsig,int32_t len,int32_t spendtype); int32_t iguana_expandscript(struct iguana_info *coin,char *asmstr,int32_t maxlen,uint8_t *script,int32_t scriptlen); int32_t bitcoin_scriptsig(struct iguana_info *coin,uint8_t *script,int32_t n,const struct vin_info *vp,struct iguana_msgtx *msgtx); char *iguana_scriptget(struct iguana_info *coin,char *scriptstr,char *asmstr,int32_t max,int32_t hdrsi,uint32_t unspentind,bits256 txid,int32_t vout,uint8_t *rmd160,int32_t type,uint8_t *pubkey33); diff --git a/iguana/iguana777.h b/iguana/iguana777.h index 7067ec929..f108d4fc1 100755 --- a/iguana/iguana777.h +++ b/iguana/iguana777.h @@ -782,7 +782,7 @@ long iguana_scriptadd(struct iguana_info *coin,struct iguana_bundle *bp,uint32_t uint32_t iguana_sparseaddpk(uint8_t *bits,int32_t width,uint32_t tablesize,uint8_t rmd160[20],struct iguana_pkhash *P,uint32_t pkind); long iguana_initscripts(struct iguana_info *coin); uint32_t iguana_scriptsave(struct iguana_info *coin,struct iguana_bundle *bp,uint32_t ind,int32_t spendflag,uint8_t *script,int32_t scriptlen); -int32_t iguana_vinscriptparse(struct iguana_info *coin,struct vin_info *vp,int32_t *sigsizep,int32_t *pubkeysizep,int32_t *p2shsizep,int32_t *suffixp,uint8_t *vinscript,int32_t scriptlen); +int32_t iguana_vinscriptparse(struct iguana_info *coin,struct vin_info *vp,uint32_t *sigsizep,uint32_t *pubkeysizep,uint32_t *p2shsizep,uint32_t *suffixp,uint8_t *vinscript,int32_t scriptlen); void iguana_parsebuf(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_msghdr *H,uint8_t *buf,int32_t len); extern queue_t bundlesQ; diff --git a/iguana/iguana_ramchain.c b/iguana/iguana_ramchain.c index 9446dfbbc..2de43c693 100755 --- a/iguana/iguana_ramchain.c +++ b/iguana/iguana_ramchain.c @@ -55,18 +55,21 @@ struct iguana_kvitem *iguana_hashsetPT(struct iguana_ramchain *ramchain,int32_t if ( selector == 'T' ) HASH_ADD_KEYPTR(hh,ramchain->txids,key,keylen,ptr); else HASH_ADD_KEYPTR(hh,ramchain->pkhashes,key,keylen,ptr); - if ( selector == 'T' ) - HASH_FIND(hh,ramchain->txids,key,keylen,tmp); - else HASH_FIND(hh,ramchain->pkhashes,key,keylen,tmp); //if ( strcmp(str,"0000000000000000000000000000000000000000000000000000000000000000") == 0 ) // printf("added null txid?\n"), getchar(); if ( 0 && ramchain->expanded && selector == 'T' ) printf("selector.%c added.(%s) itemind.%x ptr.%p tmp.%p\n",selector,str,itemind,ptr,tmp); if ( itemind == 0 ) printf("negative itemind\n"), exit(-1); - if ( tmp != ptr ) + if ( 0 ) { - printf("(%s) hashmem.%p selector.%c %s search error %p != %p itemind.%x\n",str,ramchain->hashmem,selector,str,ptr,tmp,itemind), exit(-1); + if ( selector == 'T' ) + HASH_FIND(hh,ramchain->txids,key,keylen,tmp); + else HASH_FIND(hh,ramchain->pkhashes,key,keylen,tmp); + if ( tmp != ptr ) + { + printf("(%s) hashmem.%p selector.%c %s search error %p != %p itemind.%x\n",str,ramchain->hashmem,selector,str,ptr,tmp,itemind), exit(-1); + } } } return(ptr); @@ -297,13 +300,13 @@ uint32_t iguana_ramchain_addtxid(struct iguana_info *coin,RAMCHAIN_FUNC,bits256 iguana_sparseaddtx(TXbits,ramchain->H.data->txsparsebits,ramchain->H.data->numtxsparse,txid,T,txidind); //if ( txidind <= 2 ) // printf("%p TXID.[%d] firstvout.%d/%d firstvin.%d/%d\n",t,txidind,ramchain->unspentind,numvouts,ramchain->spendind,numvins); - if ( ramchain->expanded != 0 ) + } + if ( ramchain->expanded != 0 ) + { + if ( (ptr= iguana_hashsetPT(ramchain,'T',t->txid.bytes,txidind)) == 0 ) { - if ( (ptr= iguana_hashsetPT(ramchain,'T',t->txid.bytes,txidind)) == 0 ) - { - printf("iguana_ramchain_addtxid error adding txidind\n"); - return(0); - } + printf("iguana_ramchain_addtxid error adding txidind\n"); + return(0); } } return(txidind); @@ -786,9 +789,9 @@ int32_t iguana_vinscriptdecode(struct iguana_info *coin,int32_t *metalenp,uint32 uint32_t iguana_ramchain_addspend(struct iguana_info *coin,RAMCHAIN_FUNC,bits256 prev_hash,int32_t prev_vout,uint32_t sequence,int32_t hdrsi,uint8_t *vinscript,int32_t vinscriptlen) { struct iguana_spend *s; struct iguana_kvitem *ptr = 0; bits256 txid; struct vin_info V; - uint32_t spendind,unspentind,txidind=0,pkind,external=0,poffsets[16],checksequenceid; + uint32_t spendind,sigsize,pubkeysize,p2shsize,suffixlen,unspentind,txidind=0,pkind,external=0,poffsets[16],checksequenceid; uint8_t sigsbuf[16*74],_script[IGUANA_MAXSCRIPTSIZE]; uint64_t value = 0; - int32_t metalen,sigsize,pubkeysize,p2shsize,suffixlen,i,sigslen,checklen; + int32_t metalen,i,sigslen,checklen; spendind = ramchain->H.spendind++; s = &Sx[spendind]; pkind = unspentind = 0; @@ -1917,7 +1920,7 @@ int32_t iguana_ramchain_iterate(struct iguana_info *coin,struct iguana_ramchain int32_t iguana_scriptspaceraw(struct iguana_info *coin,int32_t *scriptspacep,int32_t *sigspacep,int32_t *pubkeyspacep,struct iguana_msgtx *txarray,int32_t txn_count) { - int32_t i,j,sigspace,suffixlen,scriptspace,pubkeyspace,p2shspace,p2shsize,sigsize,pubkeysize,type,scriptlen; //struct iguana_spend256 *s; struct iguana_unspent20 *u; + uint32_t i,j,sigspace,suffixlen,scriptspace,pubkeyspace,p2shspace,p2shsize,sigsize,pubkeysize,type,scriptlen; //struct iguana_spend256 *s; struct iguana_unspent20 *u; struct iguana_msgtx *tx; struct vin_info V; uint8_t rmd160[20],scriptdata[IGUANA_MAXSCRIPTSIZE]; char asmstr[IGUANA_MAXSCRIPTSIZE*2+1]; for (i=sigspace=scriptspace=pubkeyspace=p2shspace=0; iH.data); *sigspacep = *pubkeyspacep = altspace = 0; @@ -2253,7 +2256,7 @@ int32_t iguana_ramchain_expandedsave(struct iguana_info *coin,RAMCHAIN_FUNC,stru { destoffset = &Kspace[ramchain->H.scriptoffset]; srcoffset = &Kspace[ramchain->H.data->scriptspace - ramchain->H.stacksize]; - if ( 1 && (long)destoffset < (long)srcoffset ) + if ( 0 && (long)destoffset < (long)srcoffset ) { for (i=0; iH.stacksize; i++) c = *srcoffset++, *destoffset++ = c; diff --git a/iguana/iguana_scripts.c b/iguana/iguana_scripts.c index 698c34811..e0546c68d 100755 --- a/iguana/iguana_scripts.c +++ b/iguana/iguana_scripts.c @@ -678,7 +678,7 @@ int32_t iguana_calcrmd160(struct iguana_info *coin,struct vin_info *vp,uint8_t * return(vp->type); } -int32_t bitcoin_scriptget(struct iguana_info *coin,int32_t *hashtypep,int32_t *sigsizep,int32_t *pubkeysizep,int32_t *suffixp,struct vin_info *vp,uint8_t *scriptsig,int32_t len,int32_t spendtype) +int32_t bitcoin_scriptget(struct iguana_info *coin,int32_t *hashtypep,uint32_t *sigsizep,uint32_t *pubkeysizep,uint32_t *suffixp,struct vin_info *vp,uint8_t *scriptsig,int32_t len,int32_t spendtype) { char asmstr[IGUANA_MAXSCRIPTSIZE*3]; int32_t j,n,siglen,plen; j = n = 0; @@ -747,7 +747,7 @@ int32_t bitcoin_scriptget(struct iguana_info *coin,int32_t *hashtypep,int32_t *s return(vp->spendlen); } -int32_t iguana_vinscriptparse(struct iguana_info *coin,struct vin_info *vp,int32_t *sigsizep,int32_t *pubkeysizep,int32_t *p2shsizep,int32_t *suffixp,uint8_t *vinscript,int32_t scriptlen) +int32_t iguana_vinscriptparse(struct iguana_info *coin,struct vin_info *vp,uint32_t *sigsizep,uint32_t *pubkeysizep,uint32_t *p2shsizep,uint32_t *suffixp,uint8_t *vinscript,int32_t scriptlen) { int32_t hashtype; *sigsizep = *pubkeysizep = *p2shsizep = *suffixp = 0;