Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
78d6ff2bb3
  1. 2
      crypto777/crypto777.sources
  2. 2
      iguana/iguana.sources
  3. 1
      iguana/iguana777.h
  4. 12
      iguana/iguana_bundles.c
  5. 11
      iguana/iguana_payments.c
  6. 60
      iguana/iguana_ramchain.c
  7. 6
      iguana/iguana_realtime.c
  8. 4
      iguana/iguana_sign.c
  9. 24
      iguana/iguana_spendvectors.c
  10. 42
      iguana/iguana_tx.c
  11. 13
      iguana/iguana_txidfind.c
  12. 23
      iguana/iguana_unspents.c

2
crypto777/crypto777.sources

@ -42,5 +42,5 @@ NANOMSG = $(NANOMSG_CORE) $(NANOMSG_AIO) $(NANOMSG_UTILS) $(NANOMSG_DEVICES) $(N
JPEG_SRCS := ../crypto777/jpeg/jaricom.c ../crypto777/jpeg/jcapimin.c ../crypto777/jpeg/jcapistd.c ../crypto777/jpeg/jcarith.c ../crypto777/jpeg/jccoefct.c ../crypto777/jpeg/jccolor.c ../crypto777/jpeg/jcdctmgr.c ../crypto777/jpeg/jchuff.c ../crypto777/jpeg/jcinit.c ../crypto777/jpeg/jcmainct.c ../crypto777/jpeg/jcmarker.c ../crypto777/jpeg/jcmaster.c ../crypto777/jpeg/jcomapi.c ../crypto777/jpeg/jcparam.c ../crypto777/jpeg/jcprepct.c ../crypto777/jpeg/jcsample.c ../crypto777/jpeg/jctrans.c ../crypto777/jpeg/jdapimin.c ../crypto777/jpeg/jdapistd.c ../crypto777/jpeg/jdarith.c ../crypto777/jpeg/jdatadst.c ../crypto777/jpeg/jdatasrc.c ../crypto777/jpeg/jdcoefct.c ../crypto777/jpeg/jdcolor.c ../crypto777/jpeg/jddctmgr.c ../crypto777/jpeg/jdhuff.c ../crypto777/jpeg/jdinput.c ../crypto777/jpeg/jdmainct.c ../crypto777/jpeg/jdmarker.c ../crypto777/jpeg/jdmaster.c ../crypto777/jpeg/jdmerge.c ../crypto777/jpeg/jdpostct.c ../crypto777/jpeg/jdsample.c ../crypto777/jpeg/jdtrans.c ../crypto777/jpeg/jerror.c ../crypto777/jpeg/jfdctflt.c ../crypto777/jpeg/jfdctfst.c ../crypto777/jpeg/jfdctint.c ../crypto777/jpeg/jidctflt.c ../crypto777/jpeg/jidctfst.c ../crypto777/jpeg/jidctint.c ../crypto777/jpeg/jquant1.c ../crypto777/jpeg/jquant2.c ../crypto777/jpeg/jutils.c ../crypto777/jpeg/jmemmgr.c ../crypto777/jpeg/jmemnobs.c
CRYPTO777_SRCS := ../crypto777/tweetnacl.c ../crypto777/bitcoind_RPC.c ../crypto777/cJSON.c ../crypto777/iguana_utils.c ../crypto777/OS_nonportable.c ../crypto777/curve25519-donna.c ../crypto777/inet.c ../crypto777/OS_portable.c ../crypto777/curve25519.c ../crypto777/libgfshare.c ../crypto777/OS_time.c ../crypto777/hmac_sha512.c ../crypto777/ramcoder.c ../crypto777/SaM.c ../crypto777/iguana_OS.c ../crypto777/iguana_serdes.c $(JPEG_SRCS) # $(NANOMSG)
CRYPTO777_SRCS := ../crypto777/iguana_secp.c ../crypto777/tweetnacl.c ../crypto777/bitcoind_RPC.c ../crypto777/cJSON.c ../crypto777/iguana_utils.c ../crypto777/OS_nonportable.c ../crypto777/curve25519-donna.c ../crypto777/inet.c ../crypto777/OS_portable.c ../crypto777/curve25519.c ../crypto777/libgfshare.c ../crypto777/OS_time.c ../crypto777/hmac_sha512.c ../crypto777/ramcoder.c ../crypto777/SaM.c ../crypto777/iguana_OS.c ../crypto777/iguana_serdes.c $(JPEG_SRCS) # $(NANOMSG)

2
iguana/iguana.sources

@ -1,2 +1,2 @@
SOURCES := SuperNET.c iguana_bundles.c main.c igana_payment.c iguana_spendvectors.c iguana_sign.c iguana_txidfind.c iguana_realtime.c iguana_volatiles.c peggy_price.c SuperNET_category.c iguana_chains.c iguana_ramchain.c pangea_api.c peggy_ramkv.c SuperNET_hexmsg.c iguana_exchanges.c iguana_recv.c pangea_bets.c peggy_serdes.c SuperNET_keys.c iguana_rpc.c pangea_hand.c peggy_tx.c cards777.c iguana_init.c iguana_scripts.c pangea_json.c peggy_txind.c iguana777.c iguana_instantdex.c iguana_tradebots.c pangea_summary.c peggy_update.c iguana_accept.c iguana_json.c iguana_tx.c peggy.c poker.c iguana_bitmap.c iguana_msg.c iguana_unspents.c peggy_accts.c ramchain_api.c iguana_blocks.c iguana_peers.c iguana_wallet.c peggy_consensus.c databases/iguana_DB.c
SOURCES := SuperNET.c iguana_bundles.c main.c iguana_payments.c iguana_spendvectors.c iguana_sign.c iguana_txidfind.c iguana_realtime.c iguana_volatiles.c peggy_price.c SuperNET_category.c iguana_chains.c iguana_ramchain.c pangea_api.c peggy_ramkv.c SuperNET_hexmsg.c iguana_exchanges.c iguana_recv.c pangea_bets.c peggy_serdes.c SuperNET_keys.c iguana_rpc.c pangea_hand.c peggy_tx.c cards777.c iguana_init.c iguana_scripts.c pangea_json.c peggy_txind.c iguana777.c iguana_instantdex.c iguana_tradebots.c pangea_summary.c peggy_update.c iguana_accept.c iguana_json.c iguana_tx.c peggy.c poker.c iguana_bitmap.c iguana_msg.c iguana_unspents.c peggy_accts.c ramchain_api.c iguana_blocks.c iguana_peers.c iguana_wallet.c peggy_consensus.c databases/iguana_DB.c

1
iguana/iguana777.h

@ -376,6 +376,7 @@ struct iguana_txblock
struct iguana_block block;
};
#define RAMCHAIN_PTR(rdata,offset) ((void *)(long)((long)(rdata) + (long)(rdata)->offset))
struct iguana_ramchaindata
{
bits256 sha256;

12
iguana/iguana_bundles.c

@ -389,7 +389,8 @@ struct iguana_txid *iguana_bundletx(struct iguana_info *coin,struct iguana_bundl
int32_t hdrsi,iter; struct iguana_txid *T; int64_t Toffset; char fname[1024]; FILE *fp; struct iguana_ramchaindata rdata,*rptr;
if ( (rptr= bp->ramchain.H.data) != 0 )
{
T = (void *)(long)((long)rptr + (long)rptr->Toffset);
//T = (void *)(long)((long)rptr + (long)rptr->Toffset);
T = RAMCHAIN_PTR(rptr,Toffset);
*tx = T[txidind];
return(tx);
}
@ -431,8 +432,10 @@ char *iguana_bundleaddrs(struct iguana_info *coin,int32_t hdrsi)
{
numpkinds = ramchain->H.data->numpkinds;//(bp->isRT != 0) ? ramchain->H.data->numpkinds : ramchain->pkind;
retjson = cJSON_CreateArray();
PKbits = (void *)(long)((long)ramchain->H.data + ramchain->H.data->PKoffset);
P = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Poffset);
PKbits = RAMCHAIN_PTR(ramchain->H.data,PKoffset);
P = RAMCHAIN_PTR(ramchain->H.data,Poffset);
//PKbits = (void *)(long)((long)ramchain->H.data + ramchain->H.data->PKoffset);
//P = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Poffset);
for (pkind=0; pkind<numpkinds; pkind++,P++)
{
init_hexbytes_noT(rmdstr,P->rmd160,20);
@ -743,7 +746,8 @@ int32_t iguana_bundleready(struct iguana_info *coin,struct iguana_bundle *bp,int
{
if ( iguana_mapchaininit(fname,coin,&R,bp,i,block,ptr,filesize) >= 0 )
{
B = (void *)(long)((long)R.H.data + R.H.data->Boffset);
B = RAMCHAIN_PTR(R.H.data,Boffset);
//B = (void *)(long)((long)R.H.data + R.H.data->Boffset);
prevhash2 = B[0].prev_block;
}
munmap(ptr,filesize);

11
iguana/iguana_payments.c

@ -347,9 +347,12 @@ HASH_AND_TWOINTS(bitcoinrpc,gettxout,txid,vout,mempool)
ramchain = (bp == coin->current) ? &coin->RTramchain : &bp->ramchain;
if ( (rdata= ramchain->H.data) != 0 )
{
U = (void *)(long)((long)rdata + rdata->Uoffset);
P = (void *)(long)((long)rdata + rdata->Poffset);
T = (void *)(long)((long)rdata + rdata->Toffset);
U = RAMCHAIN_PTR(rdata,Uoffset);
P = RAMCHAIN_PTR(rdata,Poffset);
T = RAMCHAIN_PTR(rdata,Toffset);
//U = (void *)(long)((long)rdata + rdata->Uoffset);
//P = (void *)(long)((long)rdata + rdata->Poffset);
//T = (void *)(long)((long)rdata + rdata->Toffset);
RTspend = 0;
if ( iguana_spentflag(coin,&RTspend,&spentheight,ramchain,bp->hdrsi,unspentind,height,minconf,coin->longestchain,U[unspentind].value) == 0 )
{
@ -528,7 +531,7 @@ cJSON *iguana_createvins(struct supernet_info *myinfo,struct iguana_info *coin,c
jaddistr(pubkeys,pubkeystr);
}
}
if ( spendscript != 0 && spendlen > 0 )
if ( spendlen > 0 )
{
init_hexbytes_noT(scriptstr,spendscript,spendlen);
jaddstr(newvin,"scriptPub",scriptstr);

60
iguana/iguana_ramchain.c

@ -626,18 +626,26 @@ void *_iguana_ramchain_setptrs(RAMCHAIN_PTRPS,struct iguana_ramchaindata *rdata)
return(0);
}
//printf("rdata.%p\n",rdata);
*B = (void *)(long)((long)rdata + (long)rdata->Boffset);
*T = (void *)(long)((long)rdata + (long)rdata->Toffset);
*Kspace = (void *)(long)((long)rdata + (long)rdata->Koffset);
*B = RAMCHAIN_PTR(rdata,Boffset);
*T = RAMCHAIN_PTR(rdata,Toffset);
//*B = (void *)(long)((long)rdata + (long)rdata->Boffset);
//*T = (void *)(long)((long)rdata + (long)rdata->Toffset);
*Kspace = RAMCHAIN_PTR(rdata,Koffset);
//*Kspace = (void *)(long)((long)rdata + (long)rdata->Koffset);
if ( ramchain->expanded != 0 )
{
*Ux = (void *)(long)((long)rdata + (long)rdata->Uoffset);
*Sx = (void *)(long)((long)rdata + (long)rdata->Soffset);
*P = (void *)(long)((long)rdata + (long)rdata->Poffset);
*X = (void *)(long)((long)rdata + (long)rdata->Xoffset);
*Ux = RAMCHAIN_PTR(rdata,Uoffset);
*Sx = RAMCHAIN_PTR(rdata,Soffset);
*P = RAMCHAIN_PTR(rdata,Poffset);
*X = RAMCHAIN_PTR(rdata,Xoffset);
//*Ux = (void *)(long)((long)rdata + (long)rdata->Uoffset);
//*Sx = (void *)(long)((long)rdata + (long)rdata->Soffset);
//*P = (void *)(long)((long)rdata + (long)rdata->Poffset);
//*X = (void *)(long)((long)rdata + (long)rdata->Xoffset);
//ramchain->roU2 = (void *)(long)((long)rdata + (long)rdata->U2offset);
//ramchain->roP2 = (void *)(long)((long)rdata + (long)rdata->P2offset);
ramchain->creditsA = (void *)(long)(long)((long)rdata + (long)rdata->Aoffset);
ramchain->creditsA = RAMCHAIN_PTR(rdata,Aoffset);
//ramchain->creditsA = (void *)(long)(long)((long)rdata + (long)rdata->Aoffset);
//if ( (*U2= ramchain->U2) == 0 )
// *U2 = ramchain->U2 = ramchain->roU2;
//if ( (*P2= ramchain->P2) == 0 )
@ -645,14 +653,18 @@ void *_iguana_ramchain_setptrs(RAMCHAIN_PTRPS,struct iguana_ramchaindata *rdata)
if ( (*A= ramchain->A) == 0 )
*A = ramchain->A = ramchain->creditsA;
//printf("T.%p Ux.%p Sx.%p P.%p\n",*T,*Ux,*Sx,*P);
*TXbits = (void *)(long)((long)rdata + (long)rdata->TXoffset);
*PKbits = (void *)(long)((long)rdata + (long)rdata->PKoffset);
*TXbits = RAMCHAIN_PTR(rdata,TXoffset);
*PKbits = RAMCHAIN_PTR(rdata,PKoffset);
//*TXbits = (void *)(long)((long)rdata + (long)rdata->TXoffset);
//*PKbits = (void *)(long)((long)rdata + (long)rdata->PKoffset);
*U = 0, *S = 0;
}
else
{
*U = (void *)(long)((long)rdata + (long)rdata->Uoffset);
*S = (void *)(long)((long)rdata + (long)rdata->Soffset);
*U = RAMCHAIN_PTR(rdata,Uoffset);
*S = RAMCHAIN_PTR(rdata,Soffset);
//*U = (void *)(long)((long)rdata + (long)rdata->Uoffset);
//*S = (void *)(long)((long)rdata + (long)rdata->Soffset);
*Ux = 0, *Sx = 0, *P = 0, *X = 0, *A = 0, *TXbits = 0, *PKbits = 0; //*U2 = 0, *P2 = 0,
}
return(rdata);
@ -726,9 +738,12 @@ int32_t iguana_ramchain_prefetch(struct iguana_info *coin,struct iguana_ramchain
else if ( (flag & 1) != 0 )
{
//printf("nonz.%d of %d\n",nonz,(int32_t)ramchain->filesize);
X = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Xoffset);
T = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Toffset);
TXbits = (void *)(long)((long)ramchain->H.data + ramchain->H.data->TXoffset);
X = RAMCHAIN_PTR(ramchain->H.data,Xoffset);
T = RAMCHAIN_PTR(ramchain->H.data,Toffset);
TXbits = RAMCHAIN_PTR(ramchain->H.data,TXoffset);
//X = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Xoffset);
//T = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Toffset);
//TXbits = (void *)(long)((long)ramchain->H.data + ramchain->H.data->TXoffset);
numtxids = ramchain->H.data->numtxids;
numexternal = ramchain->H.data->numexternaltxids;
tlen = (ramchain->H.data->numtxsparse * ramchain->H.data->txsparsebits) >> 3;
@ -750,7 +765,8 @@ int32_t iguana_ramchain_prefetch(struct iguana_info *coin,struct iguana_ramchain
}
else if ( (flag & 2) != 0 )
{
U = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Uoffset);
U = RAMCHAIN_PTR(ramchain->H.data,Uoffset);
//U = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Uoffset);
numunspents = ramchain->H.data->numunspents;
for (i=0; i<numunspents; i++)
{
@ -761,8 +777,10 @@ int32_t iguana_ramchain_prefetch(struct iguana_info *coin,struct iguana_ramchain
}
else if ( (flag & 4) != 0 )
{
P = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Poffset);
PKbits = (void *)(long)((long)ramchain->H.data + ramchain->H.data->PKoffset);
P = RAMCHAIN_PTR(ramchain->H.data,Poffset);
PKbits = RAMCHAIN_PTR(ramchain->H.data,PKoffset);
//P = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Poffset);
//PKbits = (void *)(long)((long)ramchain->H.data + ramchain->H.data->PKoffset);
numpkinds = ramchain->H.data->numpkinds;
plen = (ramchain->H.data->numpksparse * ramchain->H.data->pksparsebits) >> 3;
for (i=0; i<numpkinds; i++)
@ -2323,8 +2341,10 @@ struct iguana_ramchain *iguana_bundleload(struct iguana_info *coin,struct iguana
iguana_ramchain_link(mapchain,bp->hashes[0],bp->hdrsi,bp->bundleheight,0,bp->n,firsti,1);
//char str[65]; printf("bp.%d: T.%d U.%d S.%d P%d X.%d MAPPED %s %p\n",bp->hdrsi,mapchain->H.data->numtxids,mapchain->H.data->numunspents,mapchain->H.data->numspends,mapchain->H.data->numpkinds,mapchain->H.data->numexternaltxids,mbstr(str,mapchain->H.data->allocsize),mapchain->H.data);
//ramcoder_test(mapchain->H.data,mapchain->H.data->allocsize);
B = (void *)(long)((long)mapchain->H.data + mapchain->H.data->Boffset);
T = (void *)(long)((long)mapchain->H.data + mapchain->H.data->Toffset);
B = RAMCHAIN_PTR(ramchain->H.data,Boffset);
T = RAMCHAIN_PTR(ramchain->H.data,Toffset);
//B = (void *)(long)((long)mapchain->H.data + mapchain->H.data->Boffset);
//T = (void *)(long)((long)mapchain->H.data + mapchain->H.data->Toffset);
for (i=0; i<bp->n; i++)
{
if ( (block= bp->blocks[i]) != 0 || (block= iguana_blockhashset("bundleload",coin,bp->bundleheight+i,bp->hashes[i],1)) != 0 )

6
iguana/iguana_realtime.c

@ -74,7 +74,8 @@ void iguana_RTramchainalloc(char *fname,struct iguana_info *coin,struct iguana_b
changed++;
else
{
B = (void *)(long)((long)rdata + rdata->Boffset);
B = RAMCHAIN_PTR(rdata,Boffset);
//B = (void *)(long)((long)rdata + rdata->Boffset);
for (i=0; i<rdata->numblocks; i++)
if ( bits256_cmp(B[i].hash2,bp->hashes[i]) != 0 )
{
@ -277,7 +278,8 @@ int32_t iguana_realtime_update(struct iguana_info *coin)
if ( coin->RTdatabad != 0 )
break;
dest = &coin->RTramchain;
B = (void *)(long)((long)rdata + rdata->Boffset);
B = RAMCHAIN_PTR(rdata,Boffset);
//B = (void *)(long)((long)rdata + rdata->Boffset);
bundlei = (coin->RTheight % coin->chain->bundlesize);
if ( (block= iguana_bundleblock(coin,&hash2,bp,bundlei)) != 0 )
iguana_bundlehashadd(coin,bp,bundlei,block);

4
iguana/iguana_sign.c

@ -188,7 +188,7 @@ cJSON *iguana_vinjson(struct iguana_info *coin,struct iguana_msgvin *vin)
iguana_addscript(coin,json,vin->spendscript,vin->spendlen,"scriptPubKey");
if ( vin->p2shlen > 0 )
iguana_addscript(coin,json,vin->redeemscript,vin->p2shlen,"redeemScript");
if ( vin->pubkeys != 0 && vin->numpubkeys > 0 )
if ( vin->numpubkeys > 0 )
jadd(json,"pubkeys",iguana_pubkeysjson(vin->pubkeys,vin->numpubkeys));
}
return(json);
@ -821,7 +821,7 @@ cJSON *iguana_signtx(struct supernet_info *myinfo,struct iguana_info *coin,bits2
memcpy(vp->spendscript,spend->inputs[i].spendscript,spend->inputs[i].spendlen);
vp->spendlen = spend->inputs[i].spendlen;
}*/
if ( spend->inputs[i].p2shscript != 0 && spend->inputs[i].p2shlen > 0 )
if ( spend->inputs[i].p2shlen > 0 )
{
memcpy(vp->p2shscript,spend->inputs[i].p2shscript,spend->inputs[i].p2shlen);
vp->p2shlen = spend->inputs[i].p2shlen;

24
iguana/iguana_spendvectors.c

@ -39,7 +39,8 @@ uint32_t iguana_spendvectorconv(struct iguana_info *coin,struct iguana_spendvect
{
if ( ptr->hdrsi >= 0 && ptr->hdrsi < coin->bundlescount && (spentbp= coin->bundles[ptr->hdrsi]) != 0 )
{
spentU = (void *)(long)((long)spentbp->ramchain.H.data + spentbp->ramchain.H.data->Uoffset);
spentU = RAMCHAIN_PTR(spentbp->ramchain.H.data,Uoffset);
//spentU = (void *)(long)((long)spentbp->ramchain.H.data + spentbp->ramchain.H.data->Uoffset);
if ( (spent_pkind= _iguana_spendvectorconv(ptr,&spentU[ptr->unspentind],spentbp->ramchain.H.data->numpkinds,ptr->hdrsi,ptr->unspentind)) != 0 )
converted++;
else printf("illegal [%d].u%u pkind.%u vs %u\n",ptr->hdrsi,ptr->unspentind,spent_pkind,spentbp->ramchain.H.data->numpkinds);
@ -101,8 +102,10 @@ struct iguana_bundle *iguana_externalspent(struct iguana_info *coin,bits256 *pre
{
int32_t prev_vout,height,hdrsi; uint32_t sequenceid,unspentind; char str[65];
struct iguana_bundle *spentbp=0; struct iguana_txid *T,TX,*tp; bits256 *X; bits256 prev_hash;
X = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Xoffset);
T = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Toffset);
X = RAMCHAIN_PTR(ramchain->H.data,Xoffset);
T = RAMCHAIN_PTR(ramchain->H.data,Toffset);
//X = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Xoffset);
//T = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Toffset);
//printf("external X.%p %ld num.%d\n",X,(long)ramchain->H.data->Xoffset,(int32_t)ramchain->H.data->numexternaltxids);
sequenceid = s->sequenceid;
hdrsi = spent_hdrsi;
@ -198,7 +201,8 @@ struct iguana_bundle *iguana_fastexternalspent(struct iguana_info *coin,bits256
if ( ind < rdata->numexternaltxids )
{
char str[65]; //double duration,startmillis = OS_milliseconds();
X = (void *)(long)((long)rdata + rdata->Xoffset);
X = RAMCHAIN_PTR(rdata,Xoffset);
//X = (void *)(long)((long)rdata + rdata->Xoffset);
*prevhashp = prev_hash = X[ind];
if ( (unspentind= iguana_unspentindfind(coin,0,0,0,0,&height,prev_hash,prev_vout,spent_hdrsi-1)) != 0 )
//if ( (firstvout= iguana_txidfastfind(coin,&height,prev_hash,spent_hdrsi-1)) >= 0 )
@ -221,7 +225,8 @@ struct iguana_bundle *iguana_fastexternalspent(struct iguana_info *coin,bits256
}
else if ( ind < rdata->numtxids )
{
T = (void *)(long)((long)rdata + rdata->Toffset);
T = RAMCHAIN_PTR(rdata,Toffset);
//T = (void *)(long)((long)rdata + rdata->Toffset);
*prevhashp = T[ind].txid;
*unspentindp = T[ind].firstvout + s->prevout;
return(coin->bundles[hdrsi]);
@ -334,7 +339,8 @@ int32_t iguana_spendvectors(struct iguana_info *coin,struct iguana_bundle *bp,st
iguana_ramchain_prefetch(coin,&spentbp->ramchain,2);
spentbp->lastprefetch = now;
}
spentU = (void *)(long)((long)spentbp->ramchain.H.data + spentbp->ramchain.H.data->Uoffset);
spentU = RAMCHAIN_PTR(spentbp->ramchain.H.data,Uoffset);
//spentU = (void *)(long)((long)spentbp->ramchain.H.data + spentbp->ramchain.H.data->Uoffset);
u = &spentU[spent_unspentind];
if ( (spent_pkind= u->pkind) != 0 && spent_pkind < spentbp->ramchain.H.data->numpkinds )
{
@ -512,7 +518,8 @@ int32_t iguana_balancegen(struct iguana_info *coin,int32_t incremental,struct ig
if ( s->spendtxidind != 0 && s->spendtxidind < rdata->numtxids )
{
spent_unspentind = T[s->spendtxidind].firstvout + s->prevout;
spentU = (void *)(long)((long)rdata + rdata->Uoffset);
spentU = RAMCHAIN_PTR(rdata,Uoffset);
//spentU = (void *)(long)((long)rdata + rdata->Uoffset);
u = &spentU[spent_unspentind];
if ( (spent_pkind= u->pkind) != 0 && spent_pkind < rdata->numpkinds )
spent_value = u->value;
@ -959,7 +966,8 @@ int32_t iguana_spendvectorconvs(struct iguana_info *coin,struct iguana_bundle *s
spent_hdrsi = spentbp->hdrsi;
ramchain = &spentbp->ramchain;
numpkinds = rdata->numpkinds;
spentU = (void *)(long)((long)rdata + rdata->Uoffset);
spentU = RAMCHAIN_PTR(rdata,Uoffset);
//spentU = (void *)(long)((long)rdata + rdata->Uoffset);
for (i=converted=0; i<n; i++)
{
if ( (bp= coin->bundles[i]) != 0 && bp->tmpspends != 0 )

42
iguana/iguana_tx.c

@ -26,20 +26,23 @@ int32_t iguana_scriptdata(struct iguana_info *coin,uint8_t *scriptspace,long fil
{
FILE *fp; long err; int32_t retval = scriptlen;
#ifndef __PNACL__
if ( fileptr[0] == 0 )
fileptr[0] = (uint64_t)OS_mapfile(fname,&fileptr[1],0);
if ( fileptr[0] != 0 )
if ( scriptpos < 0xffffffff )
{
if ( (scriptpos + scriptlen) <= fileptr[1] )
if ( fileptr[0] == 0 )
fileptr[0] = (long)OS_mapfile(fname,&fileptr[1],0);
if ( fileptr[0] != 0 )
{
memcpy(scriptspace,(void *)(fileptr[0] + scriptpos),scriptlen);
return(retval);
}
else if ( 0 )
{
printf("munmap (%s)\n",fname);
munmap((void *)fileptr[0],fileptr[1]);
fileptr[0] = fileptr[1] = 0;
if ( (scriptpos + scriptlen) <= fileptr[1] )
{
memcpy(scriptspace,(void *)(fileptr[0] + (uint32_t)scriptpos),scriptlen);
return(retval);
}
else if ( 0 )
{
printf("munmap (%s)\n",fname);
munmap((void *)fileptr[0],fileptr[1]);
fileptr[0] = fileptr[1] = 0;
}
}
}
#else
@ -69,9 +72,12 @@ int32_t iguana_vinset(struct iguana_info *coin,uint8_t *scriptspace,int32_t heig
memset(vin,0,sizeof(*vin));
if ( height >= 0 && height < coin->chain->bundlesize*coin->bundlescount && (bp= coin->bundles[height / coin->chain->bundlesize]) != 0 && (rdata= bp->ramchain.H.data) != 0 )
{
S = (void *)(long)((long)rdata + rdata->Soffset);
X = (void *)(long)((long)rdata + rdata->Xoffset);
T = (void *)(long)((long)rdata + rdata->Toffset);
S = RAMCHAIN_PTR(rdata,Soffset);
X = RAMCHAIN_PTR(rdata,Xoffset);
T = RAMCHAIN_PTR(rdata,Toffset);
//S = (void *)(long)((long)rdata + rdata->Soffset);
//X = (void *)(long)((long)rdata + rdata->Xoffset);
//T = (void *)(long)((long)rdata + rdata->Toffset);
spendind = (tx->firstvin + i);
s = &S[spendind];
vin->sequence = s->sequenceid;
@ -115,8 +121,10 @@ int32_t iguana_voutset(struct iguana_info *coin,uint8_t *scriptspace,char *asmst
memset(vout,0,sizeof(*vout));
if ( height >= 0 && height < coin->chain->bundlesize*coin->bundlescount && (bp= coin->bundles[height / coin->chain->bundlesize]) != 0 && (rdata= bp->ramchain.H.data) != 0 && i < tx->numvouts )
{
U = (void *)(long)((long)rdata + rdata->Uoffset);
P = (void *)(long)((long)rdata + rdata->Poffset);
U = RAMCHAIN_PTR(rdata,Uoffset);
P = RAMCHAIN_PTR(rdata,Poffset);
//U = (void *)(long)((long)rdata + rdata->Uoffset);
//P = (void *)(long)((long)rdata + rdata->Poffset);
unspentind = (tx->firstvout + i);
u = &U[unspentind];
if ( u->txidind != tx->txidind || u->vout != i || u->hdrsi != height / coin->chain->bundlesize )

13
iguana/iguana_txidfind.c

@ -20,7 +20,9 @@ int32_t iguana_alloctxbits(struct iguana_info *coin,struct iguana_ramchain *ramc
static int64_t total;
if ( ramchain->txbits == 0 )
{
int32_t tlen; uint8_t *TXbits = (uint8_t *)((long)ramchain->H.data + ramchain->H.data->TXoffset);
int32_t tlen; uint8_t *TXbits;
TXbits = RAMCHAIN_PTR(ramchain->H.data,TXoffset);
//TXbits = (uint8_t *)((long)ramchain->H.data + ramchain->H.data->TXoffset);
tlen = (int32_t)hconv_bitlen(ramchain->H.data->numtxsparse * ramchain->H.data->txsparsebits);
ramchain->txbits = calloc(1,tlen);
memcpy(ramchain->txbits,TXbits,tlen);
@ -278,7 +280,8 @@ struct iguana_txid *iguana_txidfind(struct iguana_info *coin,int32_t *heightp,st
if ( (TXbits= ramchain->txbits) == 0 )
{
//printf("use memory mapped.[%d]\n",ramchain->H.data->height/coin->chain->bundlesize);
TXbits = (void *)(long)((long)ramchain->H.data + ramchain->H.data->TXoffset);
TXbits = RAMCHAIN_PTR(ramchain->H.data,TXoffset);
//TXbits = (void *)(long)((long)ramchain->H.data + ramchain->H.data->TXoffset);
}
}
if ( (T= ramchain->cacheT) == 0 )
@ -286,7 +289,8 @@ struct iguana_txid *iguana_txidfind(struct iguana_info *coin,int32_t *heightp,st
//if ( coin->fastfind == 0 )
// iguana_alloccacheT(coin,ramchain);
//if ( (T= ramchain->cacheT) == 0 )
T = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Toffset);
T = RAMCHAIN_PTR(ramchain->H.data,Toffset);
//T = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Toffset);
}
if ( (txidind= iguana_sparseaddtx(TXbits,ramchain->H.data->txsparsebits,ramchain->H.data->numtxsparse,txid,T,0,ramchain)) > 0 )
{
@ -409,7 +413,8 @@ int64_t iguana_fastfindinitbundle(struct iguana_info *coin,struct iguana_bundle
int32_t i; struct iguana_txid *T; struct iguana_ramchaindata *rdata; int64_t n = 0;
if ( (rdata= bp->ramchain.H.data) != 0 )
{
T = (void *)(long)((long)rdata + rdata->Toffset);
T = RAMCHAIN_PTR(rdata,Toffset);
//T = (void *)(long)((long)rdata + rdata->Toffset);
n = rdata->numtxids;
if ( iter == 1 )
{

23
iguana/iguana_unspents.c

@ -33,8 +33,10 @@ int32_t iguana_unspentindfind(struct iguana_info *coin,char *coinaddr,uint8_t *s
unspentind = (tp->firstvout + vout);
if ( coinaddr != 0 && unspentind > 0 && (hdrsi= *heightp/coin->chain->bundlesize) >= 0 && hdrsi < coin->bundlescount && (bp= coin->bundles[hdrsi]) != 0 && (rdata= bp->ramchain.H.data) != 0 && unspentind < rdata->numunspents )
{
U = (void *)(long)((long)rdata + rdata->Uoffset);
P = (void *)(long)((long)rdata + rdata->Poffset);
U = RAMCHAIN_PTR(rdata,Uoffset);
P = RAMCHAIN_PTR(rdata,Poffset);
//U = (void *)(long)((long)rdata + rdata->Uoffset);
//P = (void *)(long)((long)rdata + rdata->Poffset);
pkind = U[unspentind].pkind;
if ( pkind > 0 && pkind < rdata->numpkinds )
{
@ -123,11 +125,13 @@ struct iguana_pkhash *iguana_pkhashfind(struct iguana_info *coin,struct iguana_r
if ( (rdata= ramchain->H.data) != 0 )
{
numpkinds = rdata->numpkinds;
PKbits = (void *)(long)((long)rdata + rdata->PKoffset);
P = (void *)(long)((long)rdata + rdata->Poffset);
PKbits = RAMCHAIN_PTR(rdata,PKoffset);
P = RAMCHAIN_PTR(rdata,Poffset);
//PKbits = (void *)(long)((long)rdata + rdata->PKoffset);
//P = (void *)(long)((long)rdata + rdata->Poffset);
if ( bp == coin->current )
ACCTS = ramchain->A;
else ACCTS = (void *)(long)((long)rdata + rdata->Aoffset);
else ACCTS = RAMCHAIN_PTR(rdata,Aoffset); //ACCTS = (void *)(long)((long)rdata + rdata->Aoffset);
if ( (pkind= iguana_sparseaddpk(PKbits,rdata->pksparsebits,rdata->numpksparse,rmd160,P,0,ramchain)) > 0 && pkind < numpkinds )
{
*ramchainp = ramchain;
@ -168,8 +172,10 @@ int64_t iguana_pkhashbalance(struct supernet_info *myinfo,struct iguana_info *co
return(0);
}
unspentind = lastunspentind;
U = (void *)(long)((long)rdata + rdata->Uoffset);
T = (void *)(long)((long)rdata + rdata->Toffset);
U = RAMCHAIN_PTR(rdata,Uoffset);
T = RAMCHAIN_PTR(rdata,Toffset);
//U = (void *)(long)((long)rdata + rdata->Uoffset);
//T = (void *)(long)((long)rdata + rdata->Toffset);
RTspend = 0;
if ( lastheight == 0 )
lastheight = IGUANA_MAXHEIGHT;
@ -195,7 +201,8 @@ int64_t iguana_pkhashbalance(struct supernet_info *myinfo,struct iguana_info *co
}
if ( lastheight > 0 && (A2= ramchain->A2) != 0 && (U2= ramchain->Uextras) != 0 )
{
S = (void *)(long)((long)rdata + rdata->Soffset);
S = RAMCHAIN_PTR(rdata,Soffset);
//S = (void *)(long)((long)rdata + rdata->Soffset);
unspentind = A2[pkind].lastunspentind;
checkval = 0;
while ( unspentind > 0 )

Loading…
Cancel
Save