jl777 7 years ago
parent
commit
1e30d696dc
  1. 2
      iguana/exchanges/LP_cache.c
  2. 2
      iguana/exchanges/LP_include.h
  3. 16
      iguana/exchanges/LP_instantdex.c
  4. 2
      iguana/exchanges/LP_portfolio.c
  5. 2
      iguana/exchanges/LP_remember.c
  6. 7
      iguana/exchanges/LP_rpc.c
  7. 2
      iguana/exchanges/LP_socket.c
  8. 4
      iguana/exchanges/LP_transaction.c
  9. 25
      iguana/exchanges/LP_utxo.c

2
iguana/exchanges/LP_cache.c

@ -53,7 +53,7 @@ struct LP_transaction *LP_create_transaction(struct iguana_info *coin,bits256 tx
for (i=0; i<numvouts; i++) for (i=0; i<numvouts; i++)
{ {
vout = jitem(vouts,i); vout = jitem(vouts,i);
tx->outpoints[i].value = LP_value_extract(vout,0); tx->outpoints[i].value = LP_value_extract(vout,0,txid);
tx->outpoints[i].interest = SATOSHIDEN * jdouble(vout,"interest"); tx->outpoints[i].interest = SATOSHIDEN * jdouble(vout,"interest");
LP_destaddr(tx->outpoints[i].coinaddr,vout); LP_destaddr(tx->outpoints[i].coinaddr,vout);
//printf("from transaction init %s %s %s/v%d <- %.8f\n",coin->symbol,tx->outpoints[i].coinaddr,bits256_str(str,txid),i,dstr(tx->outpoints[i].value)); //printf("from transaction init %s %s %s/v%d <- %.8f\n",coin->symbol,tx->outpoints[i].coinaddr,bits256_str(str,txid),i,dstr(tx->outpoints[i].value));

2
iguana/exchanges/LP_include.h

@ -479,7 +479,7 @@ int32_t LP_rawtx_spendscript(struct basilisk_swap *swap,int32_t height,struct ba
void LP_quotesinit(char *base,char *rel); void LP_quotesinit(char *base,char *rel);
int32_t LP_forward(void *ctx,char *myipaddr,int32_t pubsock,bits256 pubkey,char *jsonstr,int32_t freeflag); int32_t LP_forward(void *ctx,char *myipaddr,int32_t pubsock,bits256 pubkey,char *jsonstr,int32_t freeflag);
struct LP_peerinfo *LP_peerfind(uint32_t ipbits,uint16_t port); struct LP_peerinfo *LP_peerfind(uint32_t ipbits,uint16_t port);
uint64_t LP_value_extract(cJSON *obj,int32_t addinterest); uint64_t LP_value_extract(cJSON *obj,int32_t addinterest,bits256 txid);
int32_t LP_swap_getcoinaddr(char *symbol,char *coinaddr,bits256 txid,int32_t vout); int32_t LP_swap_getcoinaddr(char *symbol,char *coinaddr,bits256 txid,int32_t vout);
char *LP_command_process(void *ctx,char *myipaddr,int32_t pubsock,cJSON *argjson,uint8_t *data,int32_t datalen,int32_t stats_JSONonly); char *LP_command_process(void *ctx,char *myipaddr,int32_t pubsock,cJSON *argjson,uint8_t *data,int32_t datalen,int32_t stats_JSONonly);
int64_t LP_kmdvalue(char *symbol,int64_t satoshis); int64_t LP_kmdvalue(char *symbol,int64_t satoshis);

16
iguana/exchanges/LP_instantdex.c

@ -338,7 +338,7 @@ char *LP_unlockedspend(void *ctx,char *symbol,bits256 utxotxid)
{ {
vout0 = jitem(vouts,0); vout0 = jitem(vouts,0);
LP_destaddr(vinaddr,vout0); LP_destaddr(vinaddr,vout0);
satoshis = LP_value_extract(vout0,0); satoshis = LP_value_extract(vout0,0,utxotxid);
opret = jitem(vouts,numvouts - 1); opret = jitem(vouts,numvouts - 1);
jaddstr(retjson,"result","success"); jaddstr(retjson,"result","success");
jaddbits256(retjson,"lockedtxid",utxotxid); jaddbits256(retjson,"lockedtxid",utxotxid);
@ -429,13 +429,13 @@ int32_t LP_claim_submit(void *ctx,cJSON *txids,int64_t *sump,struct iguana_info
{ {
vout0 = jitem(vouts,0); vout0 = jitem(vouts,0);
LP_destaddr(vinaddr,vout0); LP_destaddr(vinaddr,vout0);
satoshis = LP_value_extract(vout0,1); satoshis = LP_value_extract(vout0,1,utxotxid);
vout2 = jitem(vouts,2); vout2 = jitem(vouts,2);
LP_destaddr(destaddr,vout2); LP_destaddr(destaddr,vout2);
if ( strcmp(destaddr,coin->smartaddr) == 0 ) if ( strcmp(destaddr,coin->smartaddr) == 0 )
{ {
vout1 = jitem(vouts,1); vout1 = jitem(vouts,1);
weeksatoshis = LP_value_extract(vout1,0); weeksatoshis = LP_value_extract(vout1,0,utxotxid);
weeki = (int32_t)(weeksatoshis % 10000); weeki = (int32_t)(weeksatoshis % 10000);
for (iter=0; iter<2; iter++) for (iter=0; iter<2; iter++)
for (j=-168; j<=168; j++) for (j=-168; j<=168; j++)
@ -451,12 +451,12 @@ int32_t LP_claim_submit(void *ctx,cJSON *txids,int64_t *sump,struct iguana_info
//claimtime = LP_claimtime(coin,expiration); //claimtime = LP_claimtime(coin,expiration);
item = cJSON_CreateObject(); item = cJSON_CreateObject();
jaddbits256(item,"txid",utxotxid); jaddbits256(item,"txid",utxotxid);
jaddnum(item,"deposit",dstr(LP_value_extract(vout0,0))); jaddnum(item,"deposit",dstr(LP_value_extract(vout0,0,utxotxid)));
if ( coin->electrum == 0 ) if ( coin->electrum == 0 )
interest = dstr(satoshis) - dstr(LP_value_extract(vout0,0)); interest = dstr(satoshis) - dstr(LP_value_extract(vout0,0,utxotxid));
else interest = dstr(LP_komodo_interest(utxotxid,satoshis)); else interest = dstr(LP_komodo_interest(utxotxid,satoshis));
jaddnum(item,"interest",interest); jaddnum(item,"interest",interest);
printf("%.8f %.8f %.8f\n",dstr(satoshis),dstr(LP_value_extract(vout0,0)),dstr(LP_komodo_interest(utxotxid,satoshis))); printf("%.8f %.8f %.8f\n",dstr(satoshis),dstr(LP_value_extract(vout0,0,utxotxid)),dstr(LP_komodo_interest(utxotxid,satoshis)));
if ( claimtime <= expiration ) if ( claimtime <= expiration )
{ {
printf("iter.%d j.%d claimtime.%u vs %u, wait %d seconds to %s claim %.8f\n",iter,j,claimtime,expiration,(int32_t)expiration-claimtime,bits256_str(str,utxotxid),dstr(satoshis)); printf("iter.%d j.%d claimtime.%u vs %u, wait %d seconds to %s claim %.8f\n",iter,j,claimtime,expiration,(int32_t)expiration-claimtime,bits256_str(str,utxotxid),dstr(satoshis));
@ -554,10 +554,10 @@ int64_t LP_instantdex_creditcalc(struct iguana_info *coin,int32_t dispflag,bits2
} }
else else
{ {
amount64 = LP_value_extract(jitem(vouts,1),0); amount64 = LP_value_extract(jitem(vouts,1),0,txid);
weeki = (amount64 % 10000); weeki = (amount64 % 10000);
item = jitem(vouts,0); item = jitem(vouts,0);
satoshis = LP_value_extract(item,0); satoshis = LP_value_extract(item,0,txid);
//char str[65]; printf("%s %s funded %.8f weeki.%d (%s)\n",bits256_str(str,txid),destaddr,dstr(satoshis),weeki,jprint(item,0)); //char str[65]; printf("%s %s funded %.8f weeki.%d (%s)\n",bits256_str(str,txid),destaddr,dstr(satoshis),weeki,jprint(item,0));
if ( LP_destaddr(p2shaddr,item) == 0 ) if ( LP_destaddr(p2shaddr,item) == 0 )
{ {

2
iguana/exchanges/LP_portfolio.c

@ -110,7 +110,7 @@ uint64_t LP_balance(uint64_t *valuep,int32_t iambob,char *symbol,char *coinaddr)
for (i=0; i<n; i++) for (i=0; i<n; i++)
{ {
item = jitem(array,i); item = jitem(array,i);
value = LP_value_extract(item,1); value = LP_value_extract(item,0,zero);
valuesum += value; valuesum += value;
} }
} }

2
iguana/exchanges/LP_remember.c

@ -940,7 +940,7 @@ int32_t LP_swap_load(struct LP_swap_remember *rswap,int32_t forceflag)
rswap->Dredeemlen >>= 1; rswap->Dredeemlen >>= 1;
decode_hex(rswap->Dredeemscript,rswap->Dredeemlen,rstr); decode_hex(rswap->Dredeemscript,rswap->Dredeemlen,rstr);
} }
rswap->values[i] = value = LP_value_extract(txobj,1); rswap->values[i] = value = LP_value_extract(txobj,1,txid);
if ( (symbol= jstr(txobj,"src")) != 0 ) if ( (symbol= jstr(txobj,"src")) != 0 )
{ {
safecopy(rswap->src,symbol,sizeof(rswap->src)); safecopy(rswap->src,symbol,sizeof(rswap->src));

7
iguana/exchanges/LP_rpc.c

@ -136,8 +136,9 @@ int32_t LP_getheight(int32_t *notarizedp,struct iguana_info *coin)
uint64_t LP_RTsmartbalance(struct iguana_info *coin) uint64_t LP_RTsmartbalance(struct iguana_info *coin)
{ {
cJSON *array,*item; char buf[512],*retstr; int32_t i,n; uint64_t valuesum,value; cJSON *array,*item; char buf[512],*retstr; int32_t i,n; uint64_t valuesum,value; bits256 zero;
valuesum = 0; valuesum = 0;
memset(zero.bytes,0,sizeof(zero));
sprintf(buf,"[0, 99999999, [\"%s\"]]",coin->smartaddr); sprintf(buf,"[0, 99999999, [\"%s\"]]",coin->smartaddr);
retstr = bitcoind_passthru(coin->symbol,coin->serverport,coin->userpass,"listunspent",buf); retstr = bitcoind_passthru(coin->symbol,coin->serverport,coin->userpass,"listunspent",buf);
if ( retstr != 0 && retstr[0] != 0 ) if ( retstr != 0 && retstr[0] != 0 )
@ -148,7 +149,7 @@ uint64_t LP_RTsmartbalance(struct iguana_info *coin)
for (i=0; i<n; i++) for (i=0; i<n; i++)
{ {
item = jitem(array,i); item = jitem(array,i);
value = LP_value_extract(item,1); value = LP_value_extract(item,0,zero);
valuesum += value; valuesum += value;
//printf("%s -> %.8f\n",jprint(item,0),dstr(value)); //printf("%s -> %.8f\n",jprint(item,0),dstr(value));
} }
@ -535,7 +536,7 @@ int64_t LP_listunspent_parseitem(struct iguana_info *coin,bits256 *txidp,int32_t
{ {
*txidp = jbits256(item,"txid"); *txidp = jbits256(item,"txid");
*voutp = juint(item,"vout"); *voutp = juint(item,"vout");
satoshis = LP_value_extract(item,0); satoshis = LP_value_extract(item,0,*txidp);
*heightp = LP_txheight(coin,*txidp); *heightp = LP_txheight(coin,*txidp);
} }
else else

2
iguana/exchanges/LP_socket.c

@ -296,7 +296,7 @@ int32_t electrum_process_array(struct iguana_info *coin,struct electrum_info *ep
{ {
txid = jbits256(item,"txid"); txid = jbits256(item,"txid");
v = jint(item,"vout"); v = jint(item,"vout");
value = LP_value_extract(item,0); value = LP_value_extract(item,0,txid);
ht = LP_txheight(coin,txid); ht = LP_txheight(coin,txid);
if ( (retjson= LP_gettxout(coin->symbol,coinaddr,txid,v)) != 0 ) if ( (retjson= LP_gettxout(coin->symbol,coinaddr,txid,v)) != 0 )
free_json(retjson); free_json(retjson);

4
iguana/exchanges/LP_transaction.c

@ -795,7 +795,7 @@ char *basilisk_swap_bobtxspend(bits256 *signedtxidp,uint64_t txfee,char *name,ch
if ( (vouts= jarray(&n,txobj,"vout")) != 0 && utxovout < n ) if ( (vouts= jarray(&n,txobj,"vout")) != 0 && utxovout < n )
{ {
obj = jitem(vouts,utxovout); obj = jitem(vouts,utxovout);
value = LP_value_extract(obj,1); value = LP_value_extract(obj,1,utxotxid);
//printf("value in vout.%d %.8f (%s)\n",vout,dstr(value),jprint(txobj,0)); //printf("value in vout.%d %.8f (%s)\n",vout,dstr(value),jprint(txobj,0));
} }
free_json(txobj); free_json(txobj);
@ -2155,7 +2155,7 @@ void LP_swap_coinaddr(struct iguana_info *coin,char *coinaddr,uint64_t *valuep,u
{ {
vout = jitem(vouts,v); vout = jitem(vouts,v);
if ( valuep != 0 ) if ( valuep != 0 )
*valuep = LP_value_extract(vout,1); *valuep = LP_value_extract(vout,1,signedtxid);
LP_destaddr(coinaddr,vout); LP_destaddr(coinaddr,vout);
} }
free_json(txobj); free_json(txobj);

25
iguana/exchanges/LP_utxo.c

@ -206,13 +206,10 @@ int32_t LP_nearestvalue(int32_t iambob,uint64_t *values,int32_t n,uint64_t targe
return(mini); return(mini);
} }
uint64_t LP_value_extract(cJSON *obj,int32_t addinterest) uint64_t LP_value_extract(cJSON *obj,int32_t addinterest,bits256 utxotxid)
{ {
double val = 0.; uint64_t interest,value = 0; int32_t electrumflag; bits256 txid; double val = 0.; uint64_t interest,value = 0; int32_t electrumflag;
electrumflag = (jobj(obj,"tx_hash") != 0); electrumflag = (jobj(obj,"tx_hash") != 0);
if ( electrumflag != 0 )
txid = jbits256(obj,"tx_hash");
else txid = jbits256(obj,"txid");
if ( electrumflag == 0 ) if ( electrumflag == 0 )
{ {
if ( (val= jdouble(obj,"amount")) < SMALLVAL ) if ( (val= jdouble(obj,"amount")) < SMALLVAL )
@ -227,8 +224,8 @@ uint64_t LP_value_extract(cJSON *obj,int32_t addinterest)
value += (jdouble(obj,"interest") * SATOSHIDEN); value += (jdouble(obj,"interest") * SATOSHIDEN);
else else
{ {
interest = LP_komodo_interest(txid,value); interest = LP_komodo_interest(utxotxid,value);
char str[65]; printf("(%s) txid.%s %.8f + %.8f\n",jprint(obj,0),bits256_str(str,txid),dstr(value),dstr(interest)); char str[65]; printf("(%s) txid.%s %.8f + %.8f\n",jprint(obj,0),bits256_str(str,utxotxid),dstr(value),dstr(interest));
value += interest; value += interest;
} }
} }
@ -370,7 +367,7 @@ int32_t LP_address_utxo_ptrs(struct iguana_info *coin,int32_t iambob,struct LP_a
{ {
if ( (txout= LP_gettxout(coin->symbol,coinaddr,up->U.txid,up->U.vout)) != 0 ) if ( (txout= LP_gettxout(coin->symbol,coinaddr,up->U.txid,up->U.vout)) != 0 )
{ {
if ( LP_value_extract(txout,0) == 0 ) if ( LP_value_extract(txout,0,up->U.txid) == 0 )
{ {
//char str[65]; printf("LP_address_utxo_ptrs skip zero value %s/v%d\n",bits256_str(str,up->U.txid),up->U.vout); //char str[65]; printf("LP_address_utxo_ptrs skip zero value %s/v%d\n",bits256_str(str,up->U.txid),up->U.vout);
free_json(txout); free_json(txout);
@ -705,7 +702,7 @@ cJSON *LP_address_balance(struct iguana_info *coin,char *coinaddr,int32_t electr
for (i=0; i<n; i++) for (i=0; i<n; i++)
{ {
item = jitem(array,i); item = jitem(array,i);
balance += LP_value_extract(item,1); balance += LP_value_extract(item,1,zero);
//printf("i.%d (%s) balance %.8f\n",i,jprint(item,0),dstr(balance)); //printf("i.%d (%s) balance %.8f\n",i,jprint(item,0),dstr(balance));
} }
} }
@ -825,7 +822,7 @@ int32_t LP_unspents_array(struct iguana_info *coin,char *coinaddr,cJSON *array)
val = j64bits(item,"value"); val = j64bits(item,"value");
if ( coin->electrum == 0 && (txobj= LP_gettxout(coin->symbol,coinaddr,txid,v)) != 0 ) if ( coin->electrum == 0 && (txobj= LP_gettxout(coin->symbol,coinaddr,txid,v)) != 0 )
{ {
value = LP_value_extract(txobj,0); value = LP_value_extract(txobj,0,txid);
if ( value != 0 && value != val ) if ( value != 0 && value != val )
{ {
char str[65]; printf("REJECT %s %s/v%d value.%llu vs %llu (%s)\n",coin->symbol,bits256_str(str,txid),v,(long long)value,(long long)val,jprint(txobj,0)); char str[65]; printf("REJECT %s %s/v%d value.%llu vs %llu (%s)\n",coin->symbol,bits256_str(str,txid),v,(long long)value,(long long)val,jprint(txobj,0));
@ -905,7 +902,7 @@ cJSON *LP_transactioninit(struct iguana_info *coin,bits256 txid,int32_t iter,cJS
for (i=0; i<numvouts; i++) for (i=0; i<numvouts; i++)
{ {
vout = jitem(vouts,i); vout = jitem(vouts,i);
tx->outpoints[i].value = LP_value_extract(vout,0); tx->outpoints[i].value = LP_value_extract(vout,0,txid);
tx->outpoints[i].interest = SATOSHIDEN * jdouble(vout,"interest"); tx->outpoints[i].interest = SATOSHIDEN * jdouble(vout,"interest");
LP_destaddr(tx->outpoints[i].coinaddr,vout); LP_destaddr(tx->outpoints[i].coinaddr,vout);
//printf("from transaction init %s %s %s/v%d <- %.8f\n",coin->symbol,tx->outpoints[i].coinaddr,bits256_str(str,txid),i,dstr(tx->outpoints[i].value)); //printf("from transaction init %s %s %s/v%d <- %.8f\n",coin->symbol,tx->outpoints[i].coinaddr,bits256_str(str,txid),i,dstr(tx->outpoints[i].value));
@ -1058,7 +1055,7 @@ uint64_t LP_txinterestvalue(uint64_t *interestp,char *destaddr,struct iguana_inf
destaddr[0] = 0; destaddr[0] = 0;
if ( (txobj= LP_gettxout(coin->symbol,destaddr,txid,vout)) != 0 ) if ( (txobj= LP_gettxout(coin->symbol,destaddr,txid,vout)) != 0 )
{ {
if ( (value= LP_value_extract(txobj,0)) == 0 ) if ( (value= LP_value_extract(txobj,0,txid)) == 0 )
{ {
char str[65]; printf("%s LP_txvalue.%s strange utxo.(%s) vout.%d\n",coin->symbol,bits256_str(str,txid),jprint(txobj,0),vout); char str[65]; printf("%s LP_txvalue.%s strange utxo.(%s) vout.%d\n",coin->symbol,bits256_str(str,txid),jprint(txobj,0),vout);
} }
@ -1135,7 +1132,7 @@ uint64_t LP_txvalue(char *coinaddr,char *symbol,bits256 txid,int32_t vout)
uint64_t value; char str[65]; uint64_t value; char str[65];
if ( (txobj= LP_gettxout(coin->symbol,coinaddr,txid,vout)) != 0 ) if ( (txobj= LP_gettxout(coin->symbol,coinaddr,txid,vout)) != 0 )
{ {
value = LP_value_extract(txobj,0);//SATOSHIDEN * (jdouble(txobj,"value") + jdouble(txobj,"interest")); value = LP_value_extract(txobj,0,txid);//SATOSHIDEN * (jdouble(txobj,"value") + jdouble(txobj,"interest"));
if ( coinaddr != 0 ) if ( coinaddr != 0 )
LP_destaddr(coinaddr,txobj); LP_destaddr(coinaddr,txobj);
//printf("LP_txvalue %s tx %s/v%d value %.8f\n",coin->symbol,bits256_str(str,txid),vout,dstr(value)); //printf("LP_txvalue %s tx %s/v%d value %.8f\n",coin->symbol,bits256_str(str,txid),vout,dstr(value));
@ -1162,7 +1159,7 @@ int64_t LP_outpoint_amount(char *symbol,bits256 txid,int32_t vout)
if ( (txjson= LP_gettx("LP_outpoint_amount",symbol,txid,1)) != 0 ) if ( (txjson= LP_gettx("LP_outpoint_amount",symbol,txid,1)) != 0 )
{ {
if ( (vouts= jarray(&numvouts,txjson,"vout")) != 0 && vout < numvouts ) if ( (vouts= jarray(&numvouts,txjson,"vout")) != 0 && vout < numvouts )
amount = LP_value_extract(jitem(vouts,vout),0); amount = LP_value_extract(jitem(vouts,vout),0,txid);
free_json(txjson); free_json(txjson);
} }
} }

Loading…
Cancel
Save