|
|
@ -654,32 +654,48 @@ int32_t LP_tradecommand(void *ctx,char *myipaddr,int32_t pubsock,cJSON *argjson, |
|
|
|
memset(autxo,0,sizeof(*autxo)); |
|
|
|
memset(butxo,0,sizeof(*butxo)); |
|
|
|
LP_abutxo_set(autxo,butxo,&Q); |
|
|
|
printf("utxopairfind\n"); |
|
|
|
if ( (butxo= LP_utxopairfind(1,Q.txid,Q.vout,Q.txid2,Q.vout2)) == 0 ) |
|
|
|
butxo = &B; |
|
|
|
//printf("utxopairfind\n");
|
|
|
|
//if ( (butxo= LP_utxopairfind(1,Q.txid,Q.vout,Q.txid2,Q.vout2)) == 0 )
|
|
|
|
// butxo = &B;
|
|
|
|
//LP_butxo_swapfields(butxo);
|
|
|
|
if ( strcmp(method,"request") == 0 ) |
|
|
|
{ |
|
|
|
char str[65],str2[65]; |
|
|
|
printf("request.(%s)\n",jprint(argjson,0)); |
|
|
|
if ( 1 )//LP_allocated(butxo->payment.txid,butxo->payment.vout) != 0 || LP_allocated(butxo->deposit.txid,butxo->deposit.vout) != 0 || (qprice= LP_quote_validate(autxo,butxo,&Q,1)) <= SMALLVAL )
|
|
|
|
if ( (qprice= LP_quote_validate(autxo,butxo,&Q,1)) > SMALLVAL ) |
|
|
|
{ |
|
|
|
LP_RTmetrics_update(Q.srccoin,Q.destcoin); |
|
|
|
if ( LP_RTmetrics_blacklisted(Q.desthash) >= 0 ) |
|
|
|
value = LP_txvalue(Q.coinaddr,Q.srccoin,Q.txid,Q.vout); |
|
|
|
value2 = LP_txvalue(Q.coinaddr,Q.srccoin,Q.txid2,Q.vout2); |
|
|
|
if ( (butxo= LP_utxoadd(1,coin->symbol,Q.txid,Q.vout,value,Q.txid2,Q.vout2,value2,Q.coinaddr,Q.srchash,G.gui,0)) == 0 ) |
|
|
|
{ |
|
|
|
printf("request from blacklisted %s, ignore\n",bits256_str(str,Q.desthash)); |
|
|
|
return(retval); |
|
|
|
LP_RTmetrics_update(Q.srccoin,Q.destcoin); |
|
|
|
if ( LP_RTmetrics_blacklisted(Q.desthash) >= 0 ) |
|
|
|
{ |
|
|
|
printf("request from blacklisted %s, ignore\n",bits256_str(str,Q.desthash)); |
|
|
|
return(retval); |
|
|
|
} |
|
|
|
printf("butxo.%p replace path %p %s, %p %s, %.8f\n",butxo,LP_allocated(butxo->payment.txid,butxo->payment.vout),bits256_str(str,butxo->payment.txid),LP_allocated(butxo->deposit.txid,butxo->deposit.vout),bits256_str(str2,butxo->deposit.txid),LP_quote_validate(autxo,butxo,&Q,1)); |
|
|
|
LP_listunspent_both(Q.srccoin,Q.coinaddr,0); |
|
|
|
if ( (butxo= LP_address_utxopair(1,utxos,max,LP_coinfind(Q.srccoin),Q.coinaddr,Q.txfee,dstr(Q.destsatoshis),price,Q.desttxfee)) != 0 ) |
|
|
|
{ |
|
|
|
Q.txid = butxo->payment.txid; |
|
|
|
Q.vout = butxo->payment.vout; |
|
|
|
Q.txid2 = butxo->deposit.txid; |
|
|
|
Q.vout2 = butxo->deposit.vout; |
|
|
|
printf("set butxo.%p %s/v%d %s/v%d %.8f %.8f -> bsat %.8f asat %.8f\n",butxo,bits256_str(str,butxo->payment.txid),butxo->payment.vout,bits256_str(str2,butxo->deposit.txid),butxo->deposit.vout,dstr(butxo->payment.value),dstr(butxo->deposit.value),dstr(butxo->S.satoshis),dstr(autxo->S.satoshis)); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
printf("cant find utxopair\n"); |
|
|
|
} |
|
|
|
} |
|
|
|
printf("butxo.%p replace path %p %s, %p %s, %.8f\n",butxo,LP_allocated(butxo->payment.txid,butxo->payment.vout),bits256_str(str,butxo->payment.txid),LP_allocated(butxo->deposit.txid,butxo->deposit.vout),bits256_str(str2,butxo->deposit.txid),LP_quote_validate(autxo,butxo,&Q,1)); |
|
|
|
LP_listunspent_both(Q.srccoin,Q.coinaddr,0); |
|
|
|
if ( (butxo= LP_address_utxopair(1,utxos,max,LP_coinfind(Q.srccoin),Q.coinaddr,Q.txfee,dstr(Q.destsatoshis),price,Q.desttxfee)) != 0 ) |
|
|
|
{ |
|
|
|
Q.txid = butxo->payment.txid; |
|
|
|
Q.vout = butxo->payment.vout; |
|
|
|
Q.txid2 = butxo->deposit.txid; |
|
|
|
Q.vout2 = butxo->deposit.vout; |
|
|
|
printf("set butxo.%p %s/v%d %s/v%d %.8f %.8f -> bsat %.8f asat %.8f\n",butxo,bits256_str(str,butxo->payment.txid),butxo->payment.vout,bits256_str(str2,butxo->deposit.txid),butxo->deposit.vout,dstr(butxo->payment.value),dstr(butxo->deposit.value),dstr(butxo->S.satoshis),dstr(autxo->S.satoshis)); |
|
|
|
} else printf("cant find utxopair\n"); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
butxo = LP_utxopairfind(1,Q.txid,Q.vout,Q.txid2,Q.vout2); |
|
|
|
} |
|
|
|
/*if ( 1 )//LP_allocated(butxo->payment.txid,butxo->payment.vout) != 0 || LP_allocated(butxo->deposit.txid,butxo->deposit.vout) != 0 || (qprice= LP_quote_validate(autxo,butxo,&Q,1)) <= SMALLVAL )
|
|
|
|
{ |
|
|
|
//LP_abutxo_set(0,butxo,&Q);
|
|
|
|
//LP_butxo_swapfields(butxo);
|
|
|
|
} |
|
|
@ -691,17 +707,17 @@ int32_t LP_tradecommand(void *ctx,char *myipaddr,int32_t pubsock,cJSON *argjson, |
|
|
|
if ( (butxo= LP_utxoadd(1,coin->symbol,Q.txid,Q.vout,value,Q.txid2,Q.vout2,value2,Q.coinaddr,G.LP_mypub25519,G.gui,0)) == 0 ) |
|
|
|
printf("couldnt create bob's utxopair\n"); |
|
|
|
else printf("created butxo.(%s %s)\n",bits256_str(str,butxo->payment.txid),bits256_str(str2,butxo->deposit.txid)); |
|
|
|
} |
|
|
|
}*/ |
|
|
|
} |
|
|
|
if ( butxo == 0 || butxo == &B ) |
|
|
|
butxo = LP_utxopairfind(1,Q.txid,Q.vout,Q.txid2,Q.vout2); |
|
|
|
/*if ( butxo == 0 || butxo == &B )
|
|
|
|
/ butxo = LP_utxopairfind(1,Q.txid,Q.vout,Q.txid2,Q.vout2); |
|
|
|
if ( butxo == 0 || bits256_cmp(Q.txid,butxo->payment.txid) != 0 || bits256_cmp(Q.txid2,butxo->deposit.txid) != 0 ) |
|
|
|
{ |
|
|
|
printf("%s %s null butxo.%p case\n",Q.srccoin,Q.coinaddr,butxo); |
|
|
|
value = LP_txvalue(Q.coinaddr,Q.srccoin,Q.txid,Q.vout); |
|
|
|
value2 = LP_txvalue(Q.coinaddr,Q.srccoin,Q.txid2,Q.vout2); |
|
|
|
butxo = LP_utxoadd(1,Q.srccoin,Q.txid,Q.vout,value,Q.txid2,Q.vout2,value2,Q.coinaddr,Q.srchash,LP_gui,0); |
|
|
|
} |
|
|
|
}*/ |
|
|
|
char str[65],str2[65]; printf("butxo.%p (%s %s) TRADECOMMAND.(%s)\n",butxo,butxo!=0?bits256_str(str,butxo->payment.txid):"",butxo!=0?bits256_str(str2,butxo->deposit.txid):"",jprint(argjson,0)); |
|
|
|
if ( butxo == 0 || bits256_nonz(butxo->payment.txid) == 0 || bits256_nonz(butxo->deposit.txid) == 0 || butxo->payment.vout < 0 || butxo->deposit.vout < 0 ) |
|
|
|
{ |
|
|
|