diff --git a/basilisk/basilisk.c b/basilisk/basilisk.c index 0a8878b0b..b123cbeeb 100755 --- a/basilisk/basilisk.c +++ b/basilisk/basilisk.c @@ -799,80 +799,6 @@ void basilisk_p2p(void *_myinfo,void *_addr,char *senderip,uint8_t *data,int32_t free(ptr); } -double basilisk_request_listprocess(struct supernet_info *myinfo,struct basilisk_request *issueR,struct basilisk_request *list,int32_t n) -{ - int32_t i,noquoteflag=0,havequoteflag=0,myrequest=0,maxi=-1; uint64_t destamount,minamount = 0,maxamount = 0; uint32_t pendingid=0; struct basilisk_swap *active; double metric = 0.; - memset(issueR,0,sizeof(*issueR)); - minamount = list[0].minamount; - //printf("need to verify null quoteid is list[0] requestid.%u quoteid.%u\n",list[0].requestid,list[0].quoteid); - if ( (active= basilisk_request_started(myinfo,list[0].requestid)) != 0 ) - pendingid = active->req.quoteid; - if ( bits256_cmp(myinfo->myaddr.persistent,list[0].srchash) == 0 ) // my request - myrequest = 1; - for (i=0; imyaddr.persistent,list[i].desthash) == 0 ) // my quoteid - myrequest |= 2; - havequoteflag++; - if ( pendingid == 0 ) - { - if ( list[i].destamount > maxamount ) - { - maxamount = list[i].destamount; - maxi = i; - } - } - else if ( active != 0 && pendingid == list[i].quoteid ) - { - } - } else noquoteflag++; - } - printf("myrequest.%d pendingid.%u noquoteflag.%d havequoteflag.%d maxi.%d %.8f\n",myrequest,pendingid,noquoteflag,havequoteflag,maxi,dstr(maxamount)); - double retvals[4],refprice,profitmargin,aveprice,balance=0.; cJSON *retjson; char *retstr; - if ( myinfo->IAMLP != 0 && myrequest == 0 && pendingid == 0 && noquoteflag != 0 && (profitmargin= tradebot_liquidity_active(myinfo,&refprice,list[0].src,list[0].dest)) > 0. ) - { - if ( (aveprice= instantdex_avehbla(myinfo,retvals,list[0].src,list[0].dest,1.3 * dstr(list[0].srcamount))) == 0. || refprice > aveprice ) - aveprice = refprice; - if ( fabs(aveprice) < SMALLVAL ) - return(0); - destamount = (1.0 - profitmargin) * aveprice * list[0].srcamount; - if ( (retstr= InstantDEX_available(myinfo,iguana_coinfind(list[0].dest),0,0,list[0].dest)) != 0 ) - { - if ( (retjson= cJSON_Parse(retstr)) != 0 ) - { - balance = jdouble(retjson,"result"); - free_json(retjson); - } - free(retstr); - } - printf("balance %.8f destamount %.8f aveprice %.8f minamount %.8f\n",balance,dstr(destamount),aveprice,dstr(minamount)); - if ( balance > destamount && destamount > 0 && destamount >= maxamount && destamount >= minamount ) - { - metric = 1.; - *issueR = list[0]; - issueR->desthash = myinfo->myaddr.persistent; - issueR->destamount = destamount; - issueR->quotetime = (uint32_t)time(NULL); - } - } - else if ( myrequest != 0 && pendingid == 0 && maxi >= 0 ) // automatch best quote - { - if ( minamount != 0 && maxamount > minamount && time(NULL) > BASILISK_DEXDURATION/2 ) - { - printf("automatch quoteid.%u triggered %.8f > %.8f\n",list[maxi].quoteid,dstr(maxamount),dstr(minamount)); - *issueR = list[maxi]; - if ( minamount > 0 ) - metric = (dstr(maxamount) / dstr(minamount)) - 1.; - else metric = 1.; - } - } - return(metric); -} - void basilisk_requests_poll(struct supernet_info *myinfo) { char *retstr; cJSON *outerarray,*retjson; int32_t i,n; struct basilisk_request issueR; double hwm = 0.; diff --git a/basilisk/basilisk_DEX.c b/basilisk/basilisk_DEX.c index 7deefbce5..5bdfbc126 100755 --- a/basilisk/basilisk_DEX.c +++ b/basilisk/basilisk_DEX.c @@ -423,6 +423,7 @@ STRING_ARG(InstantDEX,available,source) { if ( (retstr= basilisk_balances(myinfo,coin,0,0,GENESIS_PUBKEY,vals,"")) != 0 ) { + printf("available.(%s)\n",retstr); if ( (balancejson= cJSON_Parse(retstr)) != 0 ) { retjson = cJSON_CreateObject(); diff --git a/basilisk/basilisk_tradebot.c b/basilisk/basilisk_tradebot.c index ee975cb6e..ae3dfa0dd 100755 --- a/basilisk/basilisk_tradebot.c +++ b/basilisk/basilisk_tradebot.c @@ -158,6 +158,80 @@ double tradebot_liquidity_active(struct supernet_info *myinfo,double *refpricep, return(0.); } +double basilisk_request_listprocess(struct supernet_info *myinfo,struct basilisk_request *issueR,struct basilisk_request *list,int32_t n) +{ + int32_t i,noquoteflag=0,havequoteflag=0,myrequest=0,maxi=-1; uint64_t destamount,minamount = 0,maxamount = 0; uint32_t pendingid=0; struct basilisk_swap *active; double metric = 0.; + memset(issueR,0,sizeof(*issueR)); + minamount = list[0].minamount; + //printf("need to verify null quoteid is list[0] requestid.%u quoteid.%u\n",list[0].requestid,list[0].quoteid); + if ( (active= basilisk_request_started(myinfo,list[0].requestid)) != 0 ) + pendingid = active->req.quoteid; + if ( bits256_cmp(myinfo->myaddr.persistent,list[0].srchash) == 0 ) // my request + myrequest = 1; + for (i=0; imyaddr.persistent,list[i].desthash) == 0 ) // my quoteid + myrequest |= 2; + havequoteflag++; + if ( pendingid == 0 ) + { + if ( list[i].destamount > maxamount ) + { + maxamount = list[i].destamount; + maxi = i; + } + } + else if ( active != 0 && pendingid == list[i].quoteid ) + { + } + } else noquoteflag++; + } + printf("%s -> %s myrequest.%d pendingid.%u noquoteflag.%d havequoteflag.%d maxi.%d %.8f\n",list[0].src,list[0].dest,myrequest,pendingid,noquoteflag,havequoteflag,maxi,dstr(maxamount)); + double retvals[4],refprice,profitmargin,aveprice,balance=0.; cJSON *retjson; char *retstr; + if ( myinfo->IAMLP != 0 && myrequest == 0 && pendingid == 0 && noquoteflag != 0 && (profitmargin= tradebot_liquidity_active(myinfo,&refprice,list[0].src,list[0].dest)) > 0. ) + { + if ( (aveprice= instantdex_avehbla(myinfo,retvals,list[0].src,list[0].dest,1.3 * dstr(list[0].srcamount))) == 0. || refprice > aveprice ) + aveprice = refprice; + if ( fabs(aveprice) < SMALLVAL ) + return(0); + destamount = (1.0 - profitmargin) * aveprice * list[0].srcamount; + if ( (retstr= InstantDEX_available(myinfo,iguana_coinfind(list[0].dest),0,0,list[0].dest)) != 0 ) + { + if ( (retjson= cJSON_Parse(retstr)) != 0 ) + { + balance = jdouble(retjson,"result"); + free_json(retjson); + } + free(retstr); + } + printf("%s balance %.8f destamount %.8f aveprice %.8f minamount %.8f\n",list[0].dest,balance,dstr(destamount),aveprice,dstr(minamount)); + if ( balance > destamount && destamount > 0 && destamount >= maxamount && destamount >= minamount ) + { + metric = 1.; + *issueR = list[0]; + issueR->desthash = myinfo->myaddr.persistent; + issueR->destamount = destamount; + issueR->quotetime = (uint32_t)time(NULL); + } + } + else if ( myrequest != 0 && pendingid == 0 && maxi >= 0 ) // automatch best quote + { + if ( minamount != 0 && maxamount > minamount && time(NULL) > BASILISK_DEXDURATION/2 ) + { + printf("automatch quoteid.%u triggered %.8f > %.8f\n",list[maxi].quoteid,dstr(maxamount),dstr(minamount)); + *issueR = list[maxi]; + if ( minamount > 0 ) + metric = (dstr(maxamount) / dstr(minamount)) - 1.; + else metric = 1.; + } + } + return(metric); +} + double basilisk_process_results(struct supernet_info *myinfo,struct basilisk_request *issueR,cJSON *retjson,double hwm) { cJSON *array,*item; uint8_t *hexdata,*allocptr,hexspace[8192]; char *hexstr; int32_t i,hexlen,n,m,nonz; struct basilisk_request tmpR,R,refR,list[BASILISK_MAXRELAYS]; double metric=0.; diff --git a/iguana/iguana777.c b/iguana/iguana777.c index ceca16074..f2aeaa17a 100755 --- a/iguana/iguana777.c +++ b/iguana/iguana777.c @@ -627,7 +627,7 @@ int32_t iguana_coin_mainiter(struct supernet_info *myinfo,struct iguana_info *co iguana_alloctxbits(coin,&coin->bundles[j]->ramchain); sleep(3); }*/ - if ( iguana_validated(coin) < n || iguana_utxofinished(coin) < n || iguana_balancefinished(coin) < n ) + if ( iguana_utxofinished(coin) < n || iguana_balancefinished(coin) < n ) //iguana_validated(coin) < n || { iguana_fastfindreset(coin); iguana_fastfindcreate(coin);