From 79acf87a8f81e9d8207c8d30931637a0e855d48f Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 22 Sep 2016 12:33:27 -0300 Subject: [PATCH] test --- basilisk/basilisk.c | 108 ++++++++++++++++++-------------- basilisk/basilisk.h | 6 +- basilisk/basilisk_CMD.c | 8 +-- basilisk/basilisk_MSG.c | 2 +- basilisk/basilisk_bitcoin.c | 4 +- basilisk/basilisk_tradebot.c | 2 +- iguana/iguana777.c | 5 ++ iguana/iguana_unspents.c | 4 +- iguana/iguana_wallet.c | 4 +- iguana/pnacl/Release/iguana.nmf | 12 ++++ includes/iguana_funcs.h | 1 + 11 files changed, 93 insertions(+), 63 deletions(-) create mode 100644 iguana/pnacl/Release/iguana.nmf diff --git a/basilisk/basilisk.c b/basilisk/basilisk.c index b4dea6019..e8d00750b 100755 --- a/basilisk/basilisk.c +++ b/basilisk/basilisk.c @@ -141,7 +141,9 @@ struct basilisk_item *basilisk_itemcreate(struct supernet_info *myinfo,char *CMD ptr->numrequired = 1; strcpy(ptr->CMD,CMD); safecopy(ptr->symbol,symbol,sizeof(ptr->symbol)); + ptr->duration = timeoutmillis; ptr->expiration = OS_milliseconds() + timeoutmillis; + //printf("itemcreate.%p %s %f timeout.%d\n",ptr,CMD,OS_milliseconds(),timeoutmillis); return(ptr); } @@ -335,7 +337,7 @@ void basilisk_sendback(struct supernet_info *myinfo,char *origCMD,char *symbol,c struct basilisk_item *basilisk_issueremote(struct supernet_info *myinfo,struct iguana_peer *addr,int32_t *numsentp,char *CMD,char *symbol,int32_t blockflag,cJSON *valsobj,int32_t fanout,int32_t numrequired,uint32_t basilisktag,int32_t timeoutmillis,void *deprecated_dontuse,char *retstr,int32_t encryptflag,int32_t delaymillis,uint32_t nBits) { - struct basilisk_item *pending; uint8_t *allocptr,*data,space[4096]; int32_t datalen; cJSON *retarray; + struct basilisk_item *pending; uint8_t *allocptr,*data,space[4096]; int32_t datalen; pending = basilisk_itemcreate(myinfo,CMD,symbol,basilisktag,numrequired,valsobj,timeoutmillis,0); pending->nBits = nBits; *numsentp = 0; @@ -356,31 +358,23 @@ struct basilisk_item *basilisk_issueremote(struct supernet_info *myinfo,struct i HASH_ADD(hh,myinfo->basilisks.issued,basilisktag,sizeof(basilisktag),pending); portable_mutex_unlock(&myinfo->basilisk_mutex); if ( pending->expiration <= OS_milliseconds() ) - pending->expiration = OS_milliseconds() + BASILISK_TIMEOUT; - strcpy(pending->symbol,"BTCD"); + pending->expiration = OS_milliseconds() + pending->duration; + strcpy(pending->symbol,"NOTARY"); strcpy(pending->CMD,CMD); + //printf("block for %f\n",pending->expiration - OS_milliseconds()); while ( OS_milliseconds() < pending->expiration ) { portable_mutex_lock(&myinfo->basilisk_mutex); - if ( pending->numresults >= pending->numrequired )//|| (retstr= pending->retstr) != 0 ) + if ( pending->numresults >= pending->numrequired ) { portable_mutex_unlock(&myinfo->basilisk_mutex); - //printf("<<<<<<<<<<<<< numresults.%d vs numrequired.%d\n",pending->numresults,pending->numrequired); + //printf("%p <<<<<<<<<<<<< numresults.%d vs numrequired.%d\n",pending,pending->numresults,pending->numrequired); break; } portable_mutex_unlock(&myinfo->basilisk_mutex); usleep(10000); } - portable_mutex_lock(&myinfo->basilisk_mutex); - if ( (retarray= pending->retarray) != 0 ) - { - pending->retstr = jprint(retarray,0); - printf("num.%d:%d required.%d RETSTR.(%s)\n",pending->numresults,cJSON_GetArraySize(pending->retarray),pending->numrequired,pending->retstr); - pending->retarray = 0; - free_json(retarray); - } - portable_mutex_unlock(&myinfo->basilisk_mutex); - } else free(pending), pending = 0; //ptr->finished = (uint32_t)time(NULL); + } if ( allocptr != 0 ) free(allocptr); } @@ -409,7 +403,7 @@ struct basilisk_item *basilisk_requestservice(struct supernet_info *myinfo,struc if ( fanout < minfanout ) fanout = minfanout; if ( (numrequired= jint(valsobj,"numrequired")) <= 0 ) - numrequired = MIN(fanout,sqrt(myinfo->NOTARY.NUMRELAYS)+1); + numrequired = MIN(fanout/2,sqrt(myinfo->NOTARY.NUMRELAYS)+1); if ( (symbol= jstr(valsobj,"coin")) != 0 || (symbol= jstr(valsobj,"symbol")) != 0 ) { if ( (virt= iguana_coinfind(symbol)) != 0 ) @@ -420,7 +414,7 @@ struct basilisk_item *basilisk_requestservice(struct supernet_info *myinfo,struc } } if ( symbol == 0 ) - symbol = "BTCD"; + symbol = "NOTARY"; encryptflag = jint(valsobj,"encrypt"); delaymillis = jint(valsobj,"delay"); ptr = basilisk_issueremote(myinfo,addr,&numsent,CMD,symbol,blockflag,valsobj,fanout,numrequired,0,timeoutmillis,0,0,encryptflag,delaymillis,nBits); @@ -429,7 +423,7 @@ struct basilisk_item *basilisk_requestservice(struct supernet_info *myinfo,struc char *basilisk_standardservice(char *CMD,struct supernet_info *myinfo,void *_addr,bits256 hash,cJSON *valsobj,char *hexstr,int32_t blockflag) // client side { - uint32_t nBits = 0; uint8_t space[4096],*allocptr=0,*data = 0; struct basilisk_item *ptr; int32_t datalen = 0; cJSON *retjson; char *retstr=0; + uint32_t nBits = 0; uint8_t space[4096],*allocptr=0,*data = 0; struct basilisk_item *ptr; int32_t i,datalen = 0; cJSON *retjson; char *retstr=0; if ( myinfo->IAMNOTARY != 0 && myinfo->NOTARY.RELAYID >= 0 && (strcmp(CMD,"INF") != 0 && basilisk_notarycmd(CMD) == 0) ) return(clonestr("{\"error\":\"unsupported special relay command\"}")); data = get_dataptr(BASILISK_HDROFFSET,&allocptr,&datalen,space,sizeof(space),hexstr); @@ -439,23 +433,33 @@ char *basilisk_standardservice(char *CMD,struct supernet_info *myinfo,void *_add free(allocptr); if ( ptr != 0 ) { - if ( ptr->retstr != 0 ) - retstr = ptr->retstr, ptr->retstr = 0; + if ( (retstr= ptr->retstr) != 0 ) + ptr->retstr = 0; else { - retjson = cJSON_CreateObject(); - if ( ptr->numsent > 0 ) + if ( ptr->numresults > 0 ) + { + retjson = cJSON_CreateArray(); + for (i=0; inumresults; i++) + jaddi(retjson,ptr->results[i]), ptr->results[i] = 0; + //printf("numresults.%d (%p)\n",ptr->numresults,ptr); + } + else { - //queue_enqueue("submitQ",&myinfo->basilisks.submitQ,&ptr->DL,0); - jaddstr(retjson,"result","error"); - jaddnum(retjson,"numsent",ptr->numsent); - } else jaddstr(retjson,"error","didnt find any nodes to send to"); + retjson = cJSON_CreateObject(); + if ( ptr->numsent > 0 ) + { + //queue_enqueue("submitQ",&myinfo->basilisks.submitQ,&ptr->DL,0); + jaddstr(retjson,"result","error"); + jaddnum(retjson,"numsent",ptr->numsent); + } else jaddstr(retjson,"error","didnt find any nodes to send to"); + } retstr = jprint(retjson,1); } - ptr->finished = (uint32_t)time(NULL); + ptr->finished = OS_milliseconds() + 10000; } - //if ( strcmp("MSG",CMD) == 0 ) - // printf("%s.(%s) -> (%s)\n",CMD,jprint(valsobj,0),retstr!=0?retstr:""); + if ( 0 && strcmp("MSG",CMD) == 0 ) + printf("%s.(%s) -> (%s)\n",CMD,jprint(valsobj,0),retstr!=0?retstr:""); return(retstr); } @@ -588,25 +592,22 @@ void basilisk_result(struct supernet_info *myinfo,char *remoteaddr,uint32_t basi { portable_mutex_lock(&myinfo->basilisk_mutex); HASH_FIND(hh,myinfo->basilisks.issued,&basilisktag,sizeof(basilisktag),pending); - //printf("HASH_FIND.%p\n",pending); + portable_mutex_unlock(&myinfo->basilisk_mutex); if ( pending != 0 && retstr != 0 ) { if ( (item= cJSON_Parse(retstr)) != 0 ) { - if ( pending->retarray == 0 ) - pending->retarray = cJSON_CreateArray(); if ( jobj(item,"myip") == 0 ) jaddstr(item,"myip",remoteaddr); - jaddi(pending->retarray,item); - if ( jobj(item,"error") == 0 ) + if ( pending->numresults < sizeof(pending->results)/sizeof(*pending->results) ) { - printf("numresults.%d:%d (%s)\n",pending->numresults,cJSON_GetArraySize(pending->retarray),jprint(item,0)); - pending->numresults++; + //printf("%p.(RESULT).%d\n",pending,pending->numresults); + pending->results[pending->numresults++] = item; } } else printf("couldnt parse.(%s)\n",retstr); } //else printf("couldnt find issued.%u\n",basilisktag); - portable_mutex_unlock(&myinfo->basilisk_mutex); } + free(retstr); } } @@ -785,10 +786,10 @@ int32_t basilisk_p2pQ_process(struct supernet_info *myinfo,int32_t maxiters) { len += iguana_rwnum(0,ptr->data,sizeof(basilisktag),&basilisktag); if ( 0 && myinfo->IAMLP == 0 ) - printf("RELAYID.%d ->received.%d basilisk_p2p.(%s) from %s tag.%u\n",myinfo->NOTARY.RELAYID,ptr->datalen,ptr->type,senderip!=0?senderip:"?",basilisktag); + printf("RELAYID.%d ->received.%d basilisk_p2p.(%s) from %s tag.%u\n",myinfo->NOTARY.RELAYID,ptr->datalen,ptr->type,senderip,basilisktag); basilisk_msgprocess(myinfo,ptr->addr,ptr->ipbits,ptr->type,basilisktag,&ptr->data[len],ptr->datalen - len); if ( 0 && myinfo->IAMLP == 0 ) - printf("processed.%s from %s\n",ptr->type,senderip!=0?senderip:"?"); + printf("processed.%s from %s\n",ptr->type,senderip); } free(ptr); n++; @@ -834,8 +835,13 @@ void basilisk_p2p(struct supernet_info *myinfo,struct iguana_info *coin,struct i void basilisk_requests_poll(struct supernet_info *myinfo) { + static uint32_t lastpoll; char *retstr; uint8_t data[8192]; cJSON *outerarray,*retjson; int32_t datalen,i,n; struct basilisk_request issueR; double hwm = 0.; + if ( time(NULL) < lastpoll+3 ) + return; + lastpoll = (uint32_t)time(NULL); memset(&issueR,0,sizeof(issueR)); + //printf("Call incoming\n"); if ( (retstr= InstantDEX_incoming(myinfo,0,0,0,0)) != 0 ) { //printf("poll.(%s)\n",retstr); @@ -876,13 +882,19 @@ void basilisk_requests_poll(struct supernet_info *myinfo) int32_t basilisk_issued_purge(struct supernet_info *myinfo,int32_t timepad) { - struct basilisk_item *tmp,*pending; int32_t n = 0; double startmilli = OS_milliseconds(); + struct basilisk_item *tmp,*pending; cJSON *item; int32_t i,n = 0; double startmilli = OS_milliseconds(); portable_mutex_lock(&myinfo->basilisk_mutex); HASH_ITER(hh,myinfo->basilisks.issued,pending,tmp) { - if ( pending != 0 && (pending->finished != 0 || startmilli > pending->expiration+timepad) ) + if ( pending != 0 && ((pending->finished > 0 && startmilli > pending->finished) || startmilli > pending->expiration+timepad) ) { HASH_DELETE(hh,myinfo->basilisks.issued,pending); + //printf("%f > %f (%d) clear pending.%p numresults.%d %p\n",startmilli,pending->expiration+timepad,timepad,pending,pending->numresults,pending->retstr); + for (i=0; inumresults; i++) + if ( (item= pending->results[i]) != 0 ) + free_json(item); + if ( pending->retstr != 0 ) + free(pending->retstr); memset(pending,0,sizeof(*pending)); free(pending); n++; @@ -911,11 +923,11 @@ void basilisk_iteration(struct supernet_info *myinfo) } }*/ } - else if ( myinfo->expiration != 0 ) + /*else { - if ( myinfo->IAMLP != 0 || myinfo->DEXactive > now ) + if ( myinfo->expiration != 0 && (myinfo->IAMLP != 0 || myinfo->DEXactive > now) ) basilisk_requests_poll(myinfo); - } + }*/ } void basilisks_loop(void *arg) @@ -967,9 +979,9 @@ HASH_ARRAY_STRING(basilisk,balances,hash,vals,hexstr) if ( jobj(vals,"history") == 0 ) jaddnum(vals,"history",3); if ( jobj(vals,"fanout") == 0 ) - jaddnum(vals,"fanout",MAX(5,(int32_t)sqrt(myinfo->NOTARY.NUMRELAYS)+1)); + jaddnum(vals,"fanout",MAX(8,(int32_t)sqrt(myinfo->NOTARY.NUMRELAYS)+1)); if ( jobj(vals,"numrequired") == 0 ) - jaddnum(vals,"numrequired",juint(vals,"fanout")); + jaddnum(vals,"numrequired",MIN(juint(vals,"fanout")/2,(int32_t)sqrt(myinfo->NOTARY.NUMRELAYS))); if ( jobj(vals,"addresses") == 0 ) { jadd(vals,"addresses",iguana_getaddressesbyaccount(myinfo,coin,"*")); @@ -978,7 +990,7 @@ HASH_ARRAY_STRING(basilisk,balances,hash,vals,hexstr) if ( (basilisktag= juint(vals,"basilisktag")) == 0 ) basilisktag = rand(); if ( (timeoutmillis= juint(vals,"timeout")) <= 0 ) - timeoutmillis = 3000; + timeoutmillis = BASILISK_TIMEOUT; if ( coin != 0 ) { if ( coin->FULLNODE != 0 || coin->VALIDATENODE != 0 ) @@ -986,7 +998,7 @@ HASH_ARRAY_STRING(basilisk,balances,hash,vals,hexstr) if ( (ptr= basilisk_bitcoinbalances(&Lptr,myinfo,coin,remoteaddr,basilisktag,timeoutmillis,vals)) != 0 ) { retstr = ptr->retstr, ptr->retstr = 0; - ptr->finished = (uint32_t)time(NULL); + ptr->finished = OS_milliseconds() + 10000; return(retstr); } return(clonestr("{\"error\":\"no result\"}")); diff --git a/basilisk/basilisk.h b/basilisk/basilisk.h index aba91c9fb..94524faf2 100755 --- a/basilisk/basilisk.h +++ b/basilisk/basilisk.h @@ -20,7 +20,7 @@ #include "../iguana/iguana777.h" -#define BASILISK_TIMEOUT 5000 +#define BASILISK_TIMEOUT 15000 #define BASILISK_MINFANOUT 8 #define BASILISK_MAXFANOUT 64 #define BASILISK_DEFAULTDIFF 0x1effffff @@ -76,8 +76,8 @@ struct basilisk_value { bits256 txid; int64_t value; int32_t height; int16_t vou struct basilisk_item { struct queueitem DL; UT_hash_handle hh; - double expiration; cJSON *retarray; - uint32_t submit,finished,basilisktag,numresults,numsent,numrequired,nBits; + double expiration,finished; cJSON *results[64]; + uint32_t submit,basilisktag,numresults,numsent,numrequired,nBits,duration; char symbol[32],CMD[4],remoteaddr[64],*retstr; }; diff --git a/basilisk/basilisk_CMD.c b/basilisk/basilisk_CMD.c index 5a25b9a4b..9f186c2e6 100755 --- a/basilisk/basilisk_CMD.c +++ b/basilisk/basilisk_CMD.c @@ -206,7 +206,7 @@ char *basilisk_respond_VPNmessage(struct supernet_info *myinfo,char *CMD,void *a if ( coin != 0 && (ptr= basilisk_bitcoinrawtx(&Lptr,myinfo,coin,remoteaddr,basilisktag,timeoutmillis,valsobj)) != 0 ) { retstr = ptr->retstr; - ptr->finished = (uint32_t)time(NULL); + ptr->finished = OS_milliseconds() + 10000; } else retstr = clonestr("{\"error\":\"no coin specified or error bitcoinrawtx\"}"); return(retstr); }*/ @@ -220,7 +220,7 @@ char *basilisk_respond_value(struct supernet_info *myinfo,char *CMD,void *addr,c if ( coin != 0 && (ptr= basilisk_bitcoinvalue(&Lptr,myinfo,coin,remoteaddr,basilisktag,timeoutmillis,valsobj)) != 0 ) { retstr = ptr->retstr; - ptr->finished = (uint32_t)time(NULL); + ptr->finished = OS_milliseconds() + 10000; } else retstr = clonestr("{\"error\":\"no coin specified or error bitcoin value\"}"); return(retstr); } @@ -234,7 +234,7 @@ char *basilisk_respond_balances(struct supernet_info *myinfo,char *CMD,void *add if ( coin != 0 && (ptr= basilisk_bitcoinbalances(&Lptr,myinfo,coin,remoteaddr,basilisktag,timeoutmillis,valsobj)) != 0 ) { retstr = ptr->retstr; - ptr->finished = (uint32_t)time(NULL); + ptr->finished = OS_milliseconds() + 10000; } else retstr = clonestr("{\"error\":\"no coin specified or error bitcoin balances\"}"); return(retstr); } @@ -249,7 +249,7 @@ char *basilisk_respond_getinfo(struct supernet_info *myinfo,char *CMD,void *addr if ( coin != 0 && (ptr= basilisk_getinfo(&Lptr,myinfo,coin,remoteaddr,basilisktag,timeoutmillis,valsobj)) != 0 ) { retstr = ptr->retstr; - ptr->finished = (uint32_t)time(NULL); + ptr->finished = OS_milliseconds() + 10000; } else retstr = clonestr("{\"error\":\"no coin specified or error bitcoin getinfo\"}"); return(retstr); } diff --git a/basilisk/basilisk_MSG.c b/basilisk/basilisk_MSG.c index ffca388ba..9d9483133 100755 --- a/basilisk/basilisk_MSG.c +++ b/basilisk/basilisk_MSG.c @@ -341,7 +341,7 @@ cJSON *basilisk_channelget(struct supernet_info *myinfo,bits256 srchash,bits256 msgid = (uint32_t)time(NULL); jaddnum(valsobj,"msgid",msgid); jaddnum(valsobj,"width",width); - jaddnum(valsobj,"timeout",3000); + jaddnum(valsobj,"timeout",BASILISK_TIMEOUT); jaddnum(valsobj,"fanout",MAX(8,(int32_t)sqrt(myinfo->NOTARY.NUMRELAYS)+1)); jaddnum(valsobj,"numrequired",1); jaddbits256(valsobj,"srchash",srchash); diff --git a/basilisk/basilisk_bitcoin.c b/basilisk/basilisk_bitcoin.c index dea04fc92..acf5e5c0a 100755 --- a/basilisk/basilisk_bitcoin.c +++ b/basilisk/basilisk_bitcoin.c @@ -842,7 +842,7 @@ HASH_ARRAY_STRING(basilisk,value,hash,vals,hexstr) if ( coin->FULLNODE != 0 && (ptr= basilisk_bitcoinvalue(&Lptr,myinfo,coin,remoteaddr,basilisktag,timeoutmillis,vals)) != 0 ) { retstr = ptr->retstr, ptr->retstr = 0; - ptr->finished = (uint32_t)time(NULL); + ptr->finished = OS_milliseconds() + 10000; return(retstr); } } @@ -862,7 +862,7 @@ HASH_ARRAY_STRING(basilisk,rawtx,hash,vals,hexstr) if ( jobj(vals,"numrequired") == 0 ) jaddnum(vals,"numrequired",MIN(3,(int32_t)sqrt(myinfo->NOTARY.NUMRELAYS)+1)); if ( jobj(vals,"fanout") == 0 ) - jaddnum(vals,"fanout",MIN(3,(int32_t)sqrt(myinfo->NOTARY.NUMRELAYS)+1)); + jaddnum(vals,"fanout",MAX(3,(int32_t)sqrt(myinfo->NOTARY.NUMRELAYS)+1)); if ( coin != 0 ) { //if ( juint(vals,"burn") == 0 ) diff --git a/basilisk/basilisk_tradebot.c b/basilisk/basilisk_tradebot.c index bc62e5858..091eaa090 100755 --- a/basilisk/basilisk_tradebot.c +++ b/basilisk/basilisk_tradebot.c @@ -251,7 +251,7 @@ double basilisk_process_results(struct supernet_info *myinfo,struct basilisk_req if ( (hexdata= get_dataptr(0,&allocptr,&hexlen,hexspace,sizeof(hexspace),hexstr)) != 0 ) { basilisk_rwDEXquote(0,hexdata,&R); - printf("[%d].(%s)\n",i,jprint(basilisk_requestjson(&R),1)); + //printf("[%d].(%s)\n",i,jprint(basilisk_requestjson(&R),1)); } } else basilisk_parsejson(&R,item); if ( nonz != 0 ) diff --git a/iguana/iguana777.c b/iguana/iguana777.c index 84ec009e0..626c8774e 100755 --- a/iguana/iguana777.c +++ b/iguana/iguana777.c @@ -854,6 +854,11 @@ void iguana_coinloop(void *arg) { if ( (coin= coins[i]) != 0 ) { + if ( strcmp(coin->symbol,"NOTARY") == 0 ) + { + if ( myinfo->expiration != 0 && (myinfo->IAMLP != 0 || myinfo->DEXactive > now) ) + basilisk_requests_poll(myinfo); + } if ( n > 1 && coin->RTheight > 0 && (rand() % 10) != 0 ) continue; if ( coin->peers == 0 ) diff --git a/iguana/iguana_unspents.c b/iguana/iguana_unspents.c index a32a44a22..51f1d4de1 100755 --- a/iguana/iguana_unspents.c +++ b/iguana/iguana_unspents.c @@ -1039,8 +1039,8 @@ cJSON *iguana_RTlistunspent(struct supernet_info *myinfo,struct iguana_info *coi jaddstr(vals,"coin",coin->symbol); jaddnum(vals,"history",1); jaddnum(vals,"firstheight",0); - jaddnum(vals,"fanout",MAX(5,(int32_t)sqrt(myinfo->NOTARY.NUMRELAYS)+1)); - jaddnum(vals,"numrequired",MAX(5,(int32_t)sqrt(myinfo->NOTARY.NUMRELAYS)+1)); + jaddnum(vals,"fanout",MAX(8,(int32_t)sqrt(myinfo->NOTARY.NUMRELAYS)+1)); + jaddnum(vals,"numrequired",MIN(4,(int32_t)sqrt(myinfo->NOTARY.NUMRELAYS)+1)); jadd(vals,"addresses",jduplicate(argarray)); if ( (retstr= basilisk_standardservice("BAL",myinfo,0,hash,vals,"",1)) != 0 ) { diff --git a/iguana/iguana_wallet.c b/iguana/iguana_wallet.c index 18884b54f..4d4461070 100755 --- a/iguana/iguana_wallet.c +++ b/iguana/iguana_wallet.c @@ -1196,12 +1196,12 @@ ZERO_ARGS(bitcoinrpc,getinfo) } else { - free(ptr->retstr); + ptr->finished = OS_milliseconds(); return(jprint(array,1)); } free_json(array); } - free(ptr->retstr); + ptr->finished = OS_milliseconds(); if ( getinfoobj != 0 ) return(jprint(getinfoobj,1)); } diff --git a/iguana/pnacl/Release/iguana.nmf b/iguana/pnacl/Release/iguana.nmf new file mode 100644 index 000000000..9d37ed227 --- /dev/null +++ b/iguana/pnacl/Release/iguana.nmf @@ -0,0 +1,12 @@ +{ + "program": { + "portable": { + "pnacl-translate": { + "url": "iguana.pexe" + }, + "pnacl-debug": { + "url": "iguana_unstripped.bc" + } + } + } +} diff --git a/includes/iguana_funcs.h b/includes/iguana_funcs.h index 1369ea1d6..b3d76e79f 100755 --- a/includes/iguana_funcs.h +++ b/includes/iguana_funcs.h @@ -565,6 +565,7 @@ int32_t iguana_opreturn(struct supernet_info *myinfo,int32_t ordered,struct igua int32_t iguana_scriptdata(struct iguana_info *coin,uint8_t *scriptspace,long fileptr[2],char *fname,uint64_t scriptpos,int32_t scriptlen); struct iguana_peer *basilisk_ensurerelay(struct supernet_info *myinfo,struct iguana_info *notaries,uint32_t ipbits); int32_t iguana_datachain_scan(struct supernet_info *myinfo,struct iguana_info *coin,uint8_t rmd160[20]); +void basilisk_requests_poll(struct supernet_info *myinfo); void iguana_RTreset(struct iguana_info *coin); void iguana_RTpurge(struct iguana_info *coin,int32_t lastheight);