|
|
@ -206,13 +206,10 @@ int32_t LP_nearestvalue(int32_t iambob,uint64_t *values,int32_t n,uint64_t targe |
|
|
|
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); |
|
|
|
if ( electrumflag != 0 ) |
|
|
|
txid = jbits256(obj,"tx_hash"); |
|
|
|
else txid = jbits256(obj,"txid"); |
|
|
|
if ( electrumflag == 0 ) |
|
|
|
{ |
|
|
|
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); |
|
|
|
else |
|
|
|
{ |
|
|
|
interest = LP_komodo_interest(txid,value); |
|
|
|
char str[65]; printf("(%s) txid.%s %.8f + %.8f\n",jprint(obj,0),bits256_str(str,txid),dstr(value),dstr(interest)); |
|
|
|
interest = LP_komodo_interest(utxotxid,value); |
|
|
|
char str[65]; printf("(%s) txid.%s %.8f + %.8f\n",jprint(obj,0),bits256_str(str,utxotxid),dstr(value),dstr(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 ( 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);
|
|
|
|
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++) |
|
|
|
{ |
|
|
|
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));
|
|
|
|
} |
|
|
|
} |
|
|
@ -825,7 +822,7 @@ int32_t LP_unspents_array(struct iguana_info *coin,char *coinaddr,cJSON *array) |
|
|
|
val = j64bits(item,"value"); |
|
|
|
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 ) |
|
|
|
{ |
|
|
|
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++) |
|
|
|
{ |
|
|
|
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"); |
|
|
|
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));
|
|
|
@ -1058,7 +1055,7 @@ uint64_t LP_txinterestvalue(uint64_t *interestp,char *destaddr,struct iguana_inf |
|
|
|
destaddr[0] = 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); |
|
|
|
} |
|
|
@ -1135,7 +1132,7 @@ uint64_t LP_txvalue(char *coinaddr,char *symbol,bits256 txid,int32_t vout) |
|
|
|
uint64_t value; char str[65]; |
|
|
|
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 ) |
|
|
|
LP_destaddr(coinaddr,txobj); |
|
|
|
//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 ( (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); |
|
|
|
} |
|
|
|
} |
|
|
|