Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
edc61966ca
  1. 6
      iguana/iguana777.h
  2. 58
      iguana/iguana_ramchain.c
  3. 2
      iguana/main.c

6
iguana/iguana777.h

@ -37,7 +37,7 @@ typedef int32_t (*blockhashfunc)(uint8_t *blockhashp,uint8_t *serialized,int32_t
#define IGUANA_MAXPENDHDRS 1 #define IGUANA_MAXPENDHDRS 1
#define _IGUANA_MAXPENDING 8 //64 #define _IGUANA_MAXPENDING 8 //64
#define _IGUANA_MAXBUNDLES 8 #define _IGUANA_MAXBUNDLES 8
#define IGUANA_BUNDLELOOP 512 #define IGUANA_BUNDLELOOP 64
#define IGUANA_RPCPORT 7778 #define IGUANA_RPCPORT 7778
#define IGUANA_MAXRAMCHAINSIZE ((uint64_t)1024L * 1024L * 1024L * 16) #define IGUANA_MAXRAMCHAINSIZE ((uint64_t)1024L * 1024L * 1024L * 16)
@ -322,8 +322,8 @@ struct iguana_ledger
} __attribute__((packed)); } __attribute__((packed));
// ramchain append only structs -> canonical 32bit inds and ledgerhashes // ramchain append only structs -> canonical 32bit inds and ledgerhashes
struct iguana_unspent20 { uint64_t value; uint32_t scriptfpos,txidind:28,type:4; uint16_t scriptlen; uint8_t rmd160[20],*scriptptr; } __attribute__((packed)); struct iguana_unspent20 { uint64_t value; uint32_t scriptoffset,txidind:28,type:4; uint16_t scriptlen; uint8_t rmd160[20]; } __attribute__((packed));
struct iguana_spend256 { bits256 prevhash2; uint8_t *vinscriptptr; uint32_t sequenceid,scriptfpos; int16_t prevout; uint16_t vinscriptlen,spendind; } __attribute__((packed)); struct iguana_spend256 { bits256 prevhash2; uint32_t sequenceid,scriptoffset; int16_t prevout; uint16_t vinscriptlen,spendind; } __attribute__((packed));
struct iguana_txid { bits256 txid; uint32_t txidind,firstvout,firstvin,locktime,version,timestamp,extraoffset; uint16_t numvouts,numvins; } __attribute__((packed)); struct iguana_txid { bits256 txid; uint32_t txidind,firstvout,firstvin,locktime,version,timestamp,extraoffset; uint16_t numvouts,numvins; } __attribute__((packed));

58
iguana/iguana_ramchain.c

@ -366,7 +366,7 @@ uint32_t iguana_ramchain_addpkhash(struct iguana_info *coin,RAMCHAIN_FUNC,uint8_
uint32_t iguana_ramchain_addunspent20(struct iguana_info *coin,RAMCHAIN_FUNC,uint64_t value,uint8_t *script,int32_t scriptlen,bits256 txid,int32_t vout,int8_t type,struct iguana_bundle *bp,uint8_t rmd160[20]) uint32_t iguana_ramchain_addunspent20(struct iguana_info *coin,RAMCHAIN_FUNC,uint64_t value,uint8_t *script,int32_t scriptlen,bits256 txid,int32_t vout,int8_t type,struct iguana_bundle *bp,uint8_t rmd160[20])
{ {
uint32_t unspentind; struct iguana_unspent20 *u; struct vin_info V; uint32_t unspentind; uint8_t *scriptptr; struct iguana_unspent20 *u; struct vin_info V;
unspentind = ramchain->H.unspentind++; unspentind = ramchain->H.unspentind++;
u = &U[unspentind]; u = &U[unspentind];
if ( scriptlen > 0 ) if ( scriptlen > 0 )
@ -383,17 +383,18 @@ uint32_t iguana_ramchain_addunspent20(struct iguana_info *coin,RAMCHAIN_FUNC,uin
//fprintf(stderr,"RO %p U[%d] txidind.%d pkind.%d\n",u,unspentind,ramchain->H.txidind,ramchain->pkind); //fprintf(stderr,"RO %p U[%d] txidind.%d pkind.%d\n",u,unspentind,ramchain->H.txidind,ramchain->pkind);
if ( u->scriptlen > 0 )//&& u->scriptlen <= sizeof(u->script) ) if ( u->scriptlen > 0 )//&& u->scriptlen <= sizeof(u->script) )
{ {
if ( memcmp(script,u->scriptptr,u->scriptlen) != 0 ) scriptptr = &Kspace[u->scriptoffset];
if ( memcmp(script,scriptptr,u->scriptlen) != 0 )
{ {
int32_t i; int32_t i;
for (i=0; i<u->scriptlen; i++) for (i=0; i<u->scriptlen; i++)
printf("%02x",u->scriptptr[i]); printf("%02x",scriptptr[i]);
printf(" u->script\n"); printf(" u->script\n");
for (i=0; i<u->scriptlen; i++) for (i=0; i<u->scriptlen; i++)
printf("%02x",script[i]); printf("%02x",script[i]);
printf(" script\n"); printf(" script\n");
printf("[%d] u%d script compare error.%d vs %d\n",bp->hdrsi,unspentind,scriptlen,u->scriptlen); printf("[%d] u%d script compare error.%d vs %d\n",bp->hdrsi,unspentind,scriptlen,u->scriptlen);
//return(0); return(0);
} //else printf("SCRIPT.%d MATCHED!\n",u->scriptlen); } //else printf("SCRIPT.%d MATCHED!\n",u->scriptlen);
} // else would need to get from HDD to verify } // else would need to get from HDD to verify
if ( u->txidind != ramchain->H.txidind || u->value != value || memcmp(u->rmd160,rmd160,sizeof(u->rmd160)) != 0 ) if ( u->txidind != ramchain->H.txidind || u->value != value || memcmp(u->rmd160,rmd160,sizeof(u->rmd160)) != 0 )
@ -406,7 +407,6 @@ uint32_t iguana_ramchain_addunspent20(struct iguana_info *coin,RAMCHAIN_FUNC,uin
{ {
u->value = value; u->value = value;
u->type = type; u->type = type;
u->scriptfpos = 0;
//fprintf(stderr,"type.%d scriptlen.%d bp.%p\n",type,scriptlen,bp); //fprintf(stderr,"type.%d scriptlen.%d bp.%p\n",type,scriptlen,bp);
if ( (u->scriptlen= scriptlen) != 0 ) if ( (u->scriptlen= scriptlen) != 0 )
{ {
@ -420,9 +420,11 @@ uint32_t iguana_ramchain_addunspent20(struct iguana_info *coin,RAMCHAIN_FUNC,uin
u->scriptfpos = (uint32_t)iguana_scriptadd(coin,bp,unspentind,type,script,scriptlen,rmd160,vout); u->scriptfpos = (uint32_t)iguana_scriptadd(coin,bp,unspentind,type,script,scriptlen,rmd160,vout);
} }
}*/ }*/
u->scriptptr = malloc(scriptlen); u->scriptoffset = ramchain->H.scriptoffset;
memcpy(u->scriptptr,script,scriptlen); scriptptr = &Kspace[u->scriptoffset];//malloc(scriptlen);
} else u->scriptptr = 0; ramchain->H.scriptoffset += scriptlen;
memcpy(scriptptr,script,scriptlen);
} else u->scriptoffset = 0;
u->txidind = ramchain->H.txidind; u->txidind = ramchain->H.txidind;
memcpy(u->rmd160,rmd160,sizeof(u->rmd160)); memcpy(u->rmd160,rmd160,sizeof(u->rmd160));
} }
@ -760,6 +762,9 @@ int32_t iguana_vinscriptdecode(struct iguana_info *coin,struct iguana_ramchain *
printf("emit.%p from.%ld sigslen.%d [%02x] stacksize.%d\n",&Kspace[diff - stacksize],diff - stacksize,sigslen,Kspace[diff - stacksize + sigslen - 1],stacksize); printf("emit.%p from.%ld sigslen.%d [%02x] stacksize.%d\n",&Kspace[diff - stacksize],diff - stacksize,sigslen,Kspace[diff - stacksize + sigslen - 1],stacksize);
} }
} }
for (i=0; i<sigslen; i++)
printf("%02x",_script[scriptlen+i]);
printf(" decodedsig.%d\n",sigslen);
scriptlen += sigslen; scriptlen += sigslen;
} }
if ( s->numpubkeys > 0 ) if ( s->numpubkeys > 0 )
@ -879,7 +884,8 @@ uint32_t iguana_ramchain_addspend(struct iguana_info *coin,RAMCHAIN_FUNC,bits256
} else pkind = ptr->hh.itemind; } else pkind = ptr->hh.itemind;
} }
} }
printf("autoverify\n"); if ( s->numsigs > 0 )
printf("autoverify numsigs.%d\n",s->numsigs);
if ( (checklen= iguana_vinscriptdecode(coin,ramchain,&metalen,&checksequenceid,_script,&Kspace[ramchain->H.data->scriptspace],Kspace,s)) != vinscriptlen || memcmp(_script,vinscript,vinscriptlen) != 0 || sequence != checksequenceid ) if ( (checklen= iguana_vinscriptdecode(coin,ramchain,&metalen,&checksequenceid,_script,&Kspace[ramchain->H.data->scriptspace],Kspace,s)) != vinscriptlen || memcmp(_script,vinscript,vinscriptlen) != 0 || sequence != checksequenceid )
{ {
for (i=0; i<checklen; i++) for (i=0; i<checklen; i++)
@ -974,7 +980,7 @@ uint32_t iguana_ramchain_addspend(struct iguana_info *coin,RAMCHAIN_FUNC,bits256
uint32_t iguana_ramchain_addspend256(struct iguana_info *coin,RAMCHAIN_FUNC,bits256 prev_hash,int32_t prev_vout,uint8_t *vinscript,int32_t vinscriptlen,uint32_t sequence,struct iguana_bundle *bp) uint32_t iguana_ramchain_addspend256(struct iguana_info *coin,RAMCHAIN_FUNC,bits256 prev_hash,int32_t prev_vout,uint8_t *vinscript,int32_t vinscriptlen,uint32_t sequence,struct iguana_bundle *bp)
{ {
struct iguana_spend256 *s; uint32_t spendind,scriptfpos = 0; struct iguana_spend256 *s; uint32_t spendind; uint8_t *vinscriptptr;
spendind = ramchain->H.spendind++; spendind = ramchain->H.spendind++;
s = &S[spendind]; s = &S[spendind];
/*if ( vinscriptlen > sizeof(s->vinscript) ) /*if ( vinscriptlen > sizeof(s->vinscript) )
@ -988,7 +994,7 @@ uint32_t iguana_ramchain_addspend256(struct iguana_info *coin,RAMCHAIN_FUNC,bits
{ {
if ( vinscriptlen != s->vinscriptlen || (s->sequenceid == 1 && sequence != 0xffffffff) || (s->sequenceid == 2 && sequence != 0xfffffffe) || memcmp(s->prevhash2.bytes,prev_hash.bytes,sizeof(bits256)) != 0 || s->prevout != prev_vout ) //|| s->hdrsi != hdrsi if ( vinscriptlen != s->vinscriptlen || (s->sequenceid == 1 && sequence != 0xffffffff) || (s->sequenceid == 2 && sequence != 0xfffffffe) || memcmp(s->prevhash2.bytes,prev_hash.bytes,sizeof(bits256)) != 0 || s->prevout != prev_vout ) //|| s->hdrsi != hdrsi
{ {
char str[65],str2[65]; printf("check (%d %d) (%d %d) addspend.%d v %d RO value mismatch sequenceid.%x seq.%x prev_vout(%d vs %d) %s vs %s\n",scriptfpos,s->scriptfpos,vinscriptlen,s->vinscriptlen,spendind,s->spendind,s->sequenceid,sequence,s->prevout,prev_vout,bits256_str(str,s->prevhash2),bits256_str(str2,prev_hash)); char str[65],str2[65]; printf("check offset %d (%d %d) addspend.%d v %d RO value mismatch sequenceid.%x seq.%x prev_vout(%d vs %d) %s vs %s\n",s->scriptoffset,vinscriptlen,s->vinscriptlen,spendind,s->spendind,s->sequenceid,sequence,s->prevout,prev_vout,bits256_str(str,s->prevhash2),bits256_str(str2,prev_hash));
//printf("check addspend.%d vs %d RO value mismatch (%d %d:%d) vs (%d %d:%d)\n",spendind,s->spendind,s->prevout,s->hdrsi,s->bundlei,prev_vout,hdrsi,bundlei); //printf("check addspend.%d vs %d RO value mismatch (%d %d:%d) vs (%d %d:%d)\n",spendind,s->spendind,s->prevout,s->hdrsi,s->bundlei,prev_vout,hdrsi,bundlei);
//exit(-1); //exit(-1);
return(0); return(0);
@ -1000,12 +1006,13 @@ uint32_t iguana_ramchain_addspend256(struct iguana_info *coin,RAMCHAIN_FUNC,bits
s->sequenceid = sequence; s->sequenceid = sequence;
s->prevhash2 = prev_hash, s->prevout = prev_vout; s->prevhash2 = prev_hash, s->prevout = prev_vout;
s->spendind = spendind; s->spendind = spendind;
s->scriptfpos = scriptfpos;
if ( (s->vinscriptlen= vinscriptlen) > 0 )//&& vinscriptlen <= sizeof(s->vinscript) && scriptfpos == 0 ) if ( (s->vinscriptlen= vinscriptlen) > 0 )//&& vinscriptlen <= sizeof(s->vinscript) && scriptfpos == 0 )
{ {
s->vinscriptptr = malloc(vinscriptlen); s->scriptoffset = ramchain->H.scriptoffset;
memcpy(s->vinscriptptr,vinscript,vinscriptlen); vinscriptptr = &Kspace[s->scriptoffset];
} else s->vinscriptptr = 0; ramchain->H.scriptoffset += vinscriptlen;
memcpy(vinscriptptr,vinscript,vinscriptlen);
} else s->scriptoffset = 0;
//else printf("spend256 scriptfpos.%d\n",s->scriptfpos); //else printf("spend256 scriptfpos.%d\n",s->scriptfpos);
//char str[65]; printf("W.%p s.%d vout.%d/%d [%d] %s fpos.%u slen.%d\n",s,spendind,s->prevout,prev_vout,bp->hdrsi,bits256_str(str,prev_hash),s->scriptfpos,s->vinscriptlen); //char str[65]; printf("W.%p s.%d vout.%d/%d [%d] %s fpos.%u slen.%d\n",s,spendind,s->prevout,prev_vout,bp->hdrsi,bits256_str(str,prev_hash),s->scriptfpos,s->vinscriptlen);
} }
@ -1024,6 +1031,7 @@ void _iguana_ramchain_setptrs(RAMCHAIN_PTRPS,struct iguana_ramchaindata *rdata)
{ {
*B = (void *)(long)((long)rdata + (long)rdata->Boffset); *B = (void *)(long)((long)rdata + (long)rdata->Boffset);
*T = (void *)(long)((long)rdata + (long)rdata->Toffset); *T = (void *)(long)((long)rdata + (long)rdata->Toffset);
*Kspace = (void *)(long)((long)rdata + (long)rdata->Koffset);
if ( ramchain->expanded != 0 ) if ( ramchain->expanded != 0 )
{ {
*Ux = (void *)(long)((long)rdata + (long)rdata->Uoffset); *Ux = (void *)(long)((long)rdata + (long)rdata->Uoffset);
@ -1042,7 +1050,6 @@ void _iguana_ramchain_setptrs(RAMCHAIN_PTRPS,struct iguana_ramchaindata *rdata)
//printf("T.%p Ux.%p Sx.%p P.%p\n",*T,*Ux,*Sx,*P); //printf("T.%p Ux.%p Sx.%p P.%p\n",*T,*Ux,*Sx,*P);
*TXbits = (void *)(long)((long)rdata + (long)rdata->TXoffset); *TXbits = (void *)(long)((long)rdata + (long)rdata->TXoffset);
*PKbits = (void *)(long)((long)rdata + (long)rdata->PKoffset); *PKbits = (void *)(long)((long)rdata + (long)rdata->PKoffset);
*Kspace = (void *)(long)((long)rdata + (long)rdata->Koffset);
*U = 0, *S = 0; *U = 0, *S = 0;
} }
else else
@ -1129,9 +1136,6 @@ int64_t _iguana_rdata_action(FILE *fp,bits256 lhashes[IGUANA_NUMLHASHES],void *d
X = iguana_ramchain_offset(rdata,RAMCHAIN_LARG(IGUANA_LHASH_EXTERNALS),fparg,fpos,X,&offset,(sizeof(bits256) * numexternaltxids),srcsize); X = iguana_ramchain_offset(rdata,RAMCHAIN_LARG(IGUANA_LHASH_EXTERNALS),fparg,fpos,X,&offset,(sizeof(bits256) * numexternaltxids),srcsize);
TXbits = iguana_ramchain_offset(rdata,RAMCHAIN_LARG(IGUANA_LHASH_TXBITS),fparg,fpos,TXbits,&offset,hconv_bitlen(txbits),srcsize); TXbits = iguana_ramchain_offset(rdata,RAMCHAIN_LARG(IGUANA_LHASH_TXBITS),fparg,fpos,TXbits,&offset,hconv_bitlen(txbits),srcsize);
PKbits = iguana_ramchain_offset(rdata,RAMCHAIN_LARG(IGUANA_LHASH_PKBITS),fparg,fpos,PKbits,&offset,hconv_bitlen(pkbits),srcsize); PKbits = iguana_ramchain_offset(rdata,RAMCHAIN_LARG(IGUANA_LHASH_PKBITS),fparg,fpos,PKbits,&offset,hconv_bitlen(pkbits),srcsize);
Kspace = iguana_ramchain_offset(rdata,RAMCHAIN_LARG(IGUANA_LHASH_KSPACE),fparg,fpos,Kspace,&offset,scriptspace,srcsize); // at the end so it can be truncated
if ( 0 && X != 0 )
printf(">>>>>> offset.%u Koffset.%d scriptspace.%d\n",(int32_t)offset,(int32_t)((long)Kspace - (long)destptr),(int32_t)scriptspace);
} }
else else
{ {
@ -1141,6 +1145,7 @@ int64_t _iguana_rdata_action(FILE *fp,bits256 lhashes[IGUANA_NUMLHASHES],void *d
printf("iter.%d lhashes.%p offset.%ld destptr.%p len.%ld fparg.%p fpos.%ld srcsize.%ld\n",iter,RAMCHAIN_LARG(IGUANA_LHASH_SPENDS),(long)offset,destptr,(long)sizeof(struct iguana_spend256) * numspends,fparg,(long)fpos,(long)srcsize); printf("iter.%d lhashes.%p offset.%ld destptr.%p len.%ld fparg.%p fpos.%ld srcsize.%ld\n",iter,RAMCHAIN_LARG(IGUANA_LHASH_SPENDS),(long)offset,destptr,(long)sizeof(struct iguana_spend256) * numspends,fparg,(long)fpos,(long)srcsize);
S = iguana_ramchain_offset(rdata,RAMCHAIN_LARG(IGUANA_LHASH_SPENDS),fparg,fpos,S,&offset,(sizeof(struct iguana_spend256) * numspends),srcsize); S = iguana_ramchain_offset(rdata,RAMCHAIN_LARG(IGUANA_LHASH_SPENDS),fparg,fpos,S,&offset,(sizeof(struct iguana_spend256) * numspends),srcsize);
} }
Kspace = iguana_ramchain_offset(rdata,RAMCHAIN_LARG(IGUANA_LHASH_KSPACE),fparg,fpos,Kspace,&offset,scriptspace,srcsize); // at the end so it can be truncated
if ( (fparg= fp) == 0 ) if ( (fparg= fp) == 0 )
break; break;
lhashes = 0; lhashes = 0;
@ -1154,15 +1159,14 @@ int64_t _iguana_rdata_action(FILE *fp,bits256 lhashes[IGUANA_NUMLHASHES],void *d
{ {
rdata->Uoffset = (uint64_t)((long)Ux - (long)destptr); rdata->Uoffset = (uint64_t)((long)Ux - (long)destptr);
rdata->Soffset = (uint64_t)((long)Sx - (long)destptr); rdata->Soffset = (uint64_t)((long)Sx - (long)destptr);
rdata->Koffset = (uint64_t)((long)Kspace - (long)destptr);
rdata->scriptspace = scriptspace;//(uint32_t)(offset - rdata->Koffset);
//printf("rdata scriptspace.%d offset.%d Koffset.%d\n",scriptspace,(int32_t)offset,(int32_t)rdata->Koffset);
} }
else else
{ {
rdata->Uoffset = (uint64_t)((long)U - (long)destptr); rdata->Uoffset = (uint64_t)((long)U - (long)destptr);
rdata->Soffset = (uint64_t)((long)S - (long)destptr); rdata->Soffset = (uint64_t)((long)S - (long)destptr);
} }
rdata->Koffset = (uint64_t)((long)Kspace - (long)destptr);
rdata->scriptspace = (uint32_t)(offset - rdata->Koffset);
rdata->Poffset = (uint64_t)((long)P - (long)destptr); rdata->Poffset = (uint64_t)((long)P - (long)destptr);
//rdata->U2offset = (uint64_t)((long)U2 - (long)destptr); //rdata->U2offset = (uint64_t)((long)U2 - (long)destptr);
//rdata->P2offset = (uint64_t)((long)P2 - (long)destptr); //rdata->P2offset = (uint64_t)((long)P2 - (long)destptr);
@ -1210,9 +1214,7 @@ long iguana_ramchain_setsize(struct iguana_ramchain *ramchain,struct iguana_ramc
rdata->numexternaltxids = ramchain->externalind; rdata->numexternaltxids = ramchain->externalind;
rdata->scriptspace = ramchain->H.scriptoffset; rdata->scriptspace = ramchain->H.scriptoffset;
rdata->stackspace = ramchain->H.stacksize; rdata->stackspace = ramchain->H.stacksize;
if ( ramchain->expanded == 0 ) rdata->allocsize = iguana_ramchain_size(RAMCHAIN_ARG,numblocks,rdata->scriptspace);
rdata->allocsize = iguana_ramchain_size(RAMCHAIN_ARG,numblocks,rdata->scriptspace);
else rdata->allocsize = rdata->Koffset + rdata->scriptspace;
if ( 0 && rdata->scriptspace != 0 ) if ( 0 && rdata->scriptspace != 0 )
printf("iguana_ramchain_setsize: Koffset.%d scriptspace.%d stackspace.%d (scriptoffset.%d stacksize.%d) allocsize.%d\n",(int32_t)rdata->Koffset,(int32_t)rdata->scriptspace,(int32_t)rdata->stackspace,(int32_t)ramchain->H.scriptoffset,(int32_t)ramchain->H.stacksize,(int32_t)rdata->allocsize); printf("iguana_ramchain_setsize: Koffset.%d scriptspace.%d stackspace.%d (scriptoffset.%d stacksize.%d) allocsize.%d\n",(int32_t)rdata->Koffset,(int32_t)rdata->scriptspace,(int32_t)rdata->stackspace,(int32_t)ramchain->H.scriptoffset,(int32_t)ramchain->H.stacksize,(int32_t)rdata->allocsize);
ramchain->datasize = rdata->allocsize; ramchain->datasize = rdata->allocsize;
@ -1853,7 +1855,7 @@ int32_t iguana_ramchain_iterate(struct iguana_info *coin,struct iguana_ramchain
value = U[ramchain->H.unspentind].value; value = U[ramchain->H.unspentind].value;
rmd160 = U[ramchain->H.unspentind].rmd160; rmd160 = U[ramchain->H.unspentind].rmd160;
type = U[ramchain->H.unspentind].type & 0xf; type = U[ramchain->H.unspentind].type & 0xf;
scriptdata = U[ramchain->H.unspentind].scriptptr; scriptdata = &Kspace[U[ramchain->H.unspentind].scriptoffset];
scriptlen = U[ramchain->H.unspentind].scriptlen; scriptlen = U[ramchain->H.unspentind].scriptlen;
//scriptdata = iguana_scriptptr(coin,&scriptlen,_script,U[ramchain->H.unspentind].scriptfpos,U[ramchain->H.unspentind].scriptptr,U[ramchain->H.unspentind].scriptlen,sizeof(U[ramchain->H.unspentind].scriptptr),0); //scriptdata = iguana_scriptptr(coin,&scriptlen,_script,U[ramchain->H.unspentind].scriptfpos,U[ramchain->H.unspentind].scriptptr,U[ramchain->H.unspentind].scriptlen,sizeof(U[ramchain->H.unspentind].scriptptr),0);
/*if ( scriptdata != 0 && scriptlen > 0 ) /*if ( scriptdata != 0 && scriptlen > 0 )
@ -1920,7 +1922,7 @@ int32_t iguana_ramchain_iterate(struct iguana_info *coin,struct iguana_ramchain
sequenceid = S[ramchain->H.spendind].sequenceid; sequenceid = S[ramchain->H.spendind].sequenceid;
prevhash = S[ramchain->H.spendind].prevhash2; prevhash = S[ramchain->H.spendind].prevhash2;
prevout = S[ramchain->H.spendind].prevout; prevout = S[ramchain->H.spendind].prevout;
scriptdata = S[ramchain->H.spendind].vinscriptptr; scriptdata = &Kspace[S[ramchain->H.spendind].scriptoffset];
scriptlen = S[ramchain->H.spendind].vinscriptlen; scriptlen = S[ramchain->H.spendind].vinscriptlen;
//scriptdata = iguana_scriptptr(coin,&scriptlen,_script,S[ramchain->H.spendind].scriptfpos,S[ramchain->H.spendind].vinscriptptr,S[ramchain->H.spendind].vinscriptlen,sizeof(S[ramchain->H.spendind].vinscriptptr),1); //scriptdata = iguana_scriptptr(coin,&scriptlen,_script,S[ramchain->H.spendind].scriptfpos,S[ramchain->H.spendind].vinscriptptr,S[ramchain->H.spendind].vinscriptlen,sizeof(S[ramchain->H.spendind].vinscriptptr),1);
/*if ( scriptdata != 0 && scriptlen > 0 ) /*if ( scriptdata != 0 && scriptlen > 0 )
@ -2010,7 +2012,7 @@ int32_t iguana_ramchain_scriptspace(struct iguana_info *coin,int32_t *sigspacep,
{ {
sequence = S[spendind].sequenceid; sequence = S[spendind].sequenceid;
scriptlen = S[spendind].vinscriptlen; scriptlen = S[spendind].vinscriptlen;
scriptdata = S[spendind].vinscriptptr; scriptdata = &Kspace[S[spendind].scriptoffset];
//if ( (scriptdata= iguana_scriptptr(coin,&scriptlen,_script,S[spendind].scriptfpos,S[spendind].vinscriptptr,S[spendind].vinscriptlen,sizeof(S[spendind].vinscriptptr),1)) != 0 ) //if ( (scriptdata= iguana_scriptptr(coin,&scriptlen,_script,S[spendind].scriptfpos,S[spendind].vinscriptptr,S[spendind].vinscriptlen,sizeof(S[spendind].vinscriptptr),1)) != 0 )
altspace += scriptlen; altspace += scriptlen;
if ( scriptdata != 0 ) if ( scriptdata != 0 )

2
iguana/main.c

@ -1119,7 +1119,7 @@ void iguana_main(void *arg)
sleep(1); sleep(1);
char *str; char *str;
//iguana_launchcoin(MYINFO.rpcsymbol,cJSON_Parse("{}")); //iguana_launchcoin(MYINFO.rpcsymbol,cJSON_Parse("{}"));
if ( 1 && (str= SuperNET_JSON(&MYINFO,cJSON_Parse("{\"userhome\":\"/Users/jimbolaptop/Library/Application Support\",\"agent\":\"iguana\",\"method\":\"addcoin\",\"services\":128,\"maxpeers\":64,\"newcoin\":\"BTC\",\"active\":1}"),0)) != 0 ) if ( 1 && (str= SuperNET_JSON(&MYINFO,cJSON_Parse("{\"userhome\":\"/Users/jimbolaptop/Library/Application Support\",\"agent\":\"iguana\",\"method\":\"addcoin\",\"services\":128,\"maxpeers\":64,\"newcoin\":\"BTC\",\"active\":1,\"numhelpers\":1}"),0)) != 0 )
{ {
free(str); free(str);
if ( 0 && (str= SuperNET_JSON(&MYINFO,cJSON_Parse("{\"userhome\":\"/Users/jimbolaptop/Library/Application Support\",\"agent\":\"iguana\",\"method\":\"addcoin\",\"services\":128,\"maxpeers\":128,\"newcoin\":\"BTCD\",\"active\":1}"),0)) != 0 ) if ( 0 && (str= SuperNET_JSON(&MYINFO,cJSON_Parse("{\"userhome\":\"/Users/jimbolaptop/Library/Application Support\",\"agent\":\"iguana\",\"method\":\"addcoin\",\"services\":128,\"maxpeers\":128,\"newcoin\":\"BTCD\",\"active\":1}"),0)) != 0 )

Loading…
Cancel
Save