|
@ -622,22 +622,30 @@ int32_t LP_rswap_init(struct LP_swap_remember *rswap,uint32_t requestid,uint32_t |
|
|
return(rswap->iambob); |
|
|
return(rswap->iambob); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void LP_refht_update(char *symbol,bits256 txid) |
|
|
int32_t _LP_refht_update(struct iguana_info *coin,int32_t refht) |
|
|
{ |
|
|
{ |
|
|
int32_t ht; struct iguana_info *coin; |
|
|
if ( refht > 0 && (coin->firstrefht == 0 || refht < coin->firstrefht) ) |
|
|
|
|
|
{ |
|
|
|
|
|
if ( coin->firstscanht == 0 || refht < coin->firstscanht ) |
|
|
|
|
|
coin->firstscanht = coin->lastscanht = refht; |
|
|
|
|
|
coin->firstrefht = refht; |
|
|
|
|
|
return(1); |
|
|
|
|
|
} |
|
|
|
|
|
return(0); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int32_t LP_refht_update(char *symbol,bits256 txid) |
|
|
|
|
|
{ |
|
|
|
|
|
int32_t refht; struct iguana_info *coin; |
|
|
if ( (coin= LP_coinfind(symbol)) != 0 ) // && coin->electrum == 0
|
|
|
if ( (coin= LP_coinfind(symbol)) != 0 ) // && coin->electrum == 0
|
|
|
{ |
|
|
{ |
|
|
if ( (ht= LP_txheight(coin,txid)) > 0 && ht > 0 ) |
|
|
if ( (refht= LP_txheight(coin,txid)) > 0 && refht > 0 ) |
|
|
{ |
|
|
{ |
|
|
if ( coin->firstrefht == 0 || ht < coin->firstrefht ) |
|
|
char str[65]; printf(">>>>>>>>. 1st refht %s %s <- %d, scan %d %d\n",coin->symbol,bits256_str(str,txid),refht,coin->firstscanht,coin->lastscanht); |
|
|
{ |
|
|
return(_LP_refht_update(coin,refht)); |
|
|
if ( coin->firstscanht == 0 || ht < coin->firstscanht ) |
|
|
|
|
|
coin->firstscanht = coin->lastscanht = ht; |
|
|
|
|
|
coin->firstrefht = ht; |
|
|
|
|
|
char str[65]; printf(">>>>>>>>. 1st refht %s %s <- %d, scan %d %d\n",coin->symbol,bits256_str(str,txid),ht,coin->firstscanht,coin->lastscanht); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
return(0); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
int32_t LP_swap_load(struct LP_swap_remember *rswap) |
|
|
int32_t LP_swap_load(struct LP_swap_remember *rswap) |
|
@ -712,7 +720,6 @@ int32_t LP_swap_load(struct LP_swap_remember *rswap) |
|
|
safecopy(rswap->alicecoin,symbol,sizeof(rswap->alicecoin)); |
|
|
safecopy(rswap->alicecoin,symbol,sizeof(rswap->alicecoin)); |
|
|
if ( rswap->finishedflag == 0 ) |
|
|
if ( rswap->finishedflag == 0 ) |
|
|
{ |
|
|
{ |
|
|
LP_refht_update(symbol,txid); |
|
|
|
|
|
if ( (sentobj= LP_gettx(symbol,txid)) == 0 ) |
|
|
if ( (sentobj= LP_gettx(symbol,txid)) == 0 ) |
|
|
{ |
|
|
{ |
|
|
char str2[65]; printf("%s %s ready to broadcast\n",symbol,bits256_str(str2,txid)); |
|
|
char str2[65]; printf("%s %s ready to broadcast\n",symbol,bits256_str(str2,txid)); |
|
@ -722,6 +729,7 @@ int32_t LP_swap_load(struct LP_swap_remember *rswap) |
|
|
checktxid = jbits256(sentobj,"txid"); |
|
|
checktxid = jbits256(sentobj,"txid"); |
|
|
if ( bits256_nonz(checktxid) == 0 ) |
|
|
if ( bits256_nonz(checktxid) == 0 ) |
|
|
checktxid = jbits256(sentobj,"hash"); |
|
|
checktxid = jbits256(sentobj,"hash"); |
|
|
|
|
|
LP_refht_update(symbol,txid); |
|
|
if ( bits256_cmp(checktxid,txid) == 0 ) |
|
|
if ( bits256_cmp(checktxid,txid) == 0 ) |
|
|
{ |
|
|
{ |
|
|
//printf(">>>>>> %s txid %s\n",jprint(sentobj,0),bits256_str(str,txid));
|
|
|
//printf(">>>>>> %s txid %s\n",jprint(sentobj,0),bits256_str(str,txid));
|
|
@ -767,20 +775,16 @@ void LP_txbytes_update(char *name,char *symbol,char *txbytes,bits256 *txidp,bits |
|
|
|
|
|
|
|
|
int32_t LP_rswap_checktx(struct LP_swap_remember *rswap,char *symbol,int32_t txi) |
|
|
int32_t LP_rswap_checktx(struct LP_swap_remember *rswap,char *symbol,int32_t txi) |
|
|
{ |
|
|
{ |
|
|
cJSON *sentobj; char str[65]; |
|
|
struct LP_transaction *tx; struct iguana_info *coin; char str[65]; |
|
|
if ( rswap->sentflags[txi] == 0 && bits256_nonz(rswap->txids[txi]) != 0 ) |
|
|
if ( rswap->sentflags[txi] == 0 && bits256_nonz(rswap->txids[txi]) != 0 ) |
|
|
{ |
|
|
{ |
|
|
printf("[%s] txbytes.%p Apayment.%s\n",txnames[txi],rswap->txbytes[txi],bits256_str(str,rswap->txids[txi])); |
|
|
coin = LP_coinfind(symbol); |
|
|
/*if ( rswap->txbytes[txi] != 0 )
|
|
|
printf("[%s] %s txbytes.%p %s\n",txnames[txi],txnames[txi],rswap->txbytes[txi],bits256_str(str,rswap->txids[txi])); |
|
|
rswap->sentflags[txi] = 1; |
|
|
if ( coin != 0 && (tx= LP_transactionfind(coin,rswap->txids[txi])) != 0 && tx->height > 0 ) |
|
|
else*/ if ( (sentobj= LP_gettx(symbol,rswap->txids[txi])) != 0 ) |
|
|
|
|
|
{ |
|
|
{ |
|
|
rswap->sentflags[txi] = 1; |
|
|
rswap->sentflags[txi] = 1; |
|
|
printf("CHECKTX.(%s)\n",jprint(sentobj,0)); |
|
|
_LP_refht_update(coin,tx->height); |
|
|
free_json(sentobj); |
|
|
} else LP_refht_update(symbol,rswap->txids[txi]); |
|
|
LP_refht_update(symbol,rswap->txids[txi]); |
|
|
|
|
|
return(1); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
return(0); |
|
|
return(0); |
|
|
} |
|
|
} |
|
|