@ -395,7 +395,7 @@ int32_t basilisk_isbobcoin(int32_t iambob,int32_t ind)
}
}
}
}
int32_t basilisk_swap_isfinished ( uint32_t expiration , int32_t iambob , bits256 * txids , int32_t * sentflags , bits256 paymentspent , bits256 Apaymentspent , bits256 depositspent )
int32_t basilisk_swap_isfinished ( uint32_t requestid , uint32_t quoteid , uint32_t expiration , int32_t iambob , bits256 * txids , int32_t * sentflags , bits256 paymentspent , bits256 Apaymentspent , bits256 depositspent )
{
{
int32_t i , n = 0 ; uint32_t now = ( uint32_t ) time ( NULL ) ;
int32_t i , n = 0 ; uint32_t now = ( uint32_t ) time ( NULL ) ;
if ( bits256_nonz ( paymentspent ) ! = 0 & & bits256_nonz ( Apaymentspent ) ! = 0 & & bits256_nonz ( depositspent ) ! = 0 )
if ( bits256_nonz ( paymentspent ) ! = 0 & & bits256_nonz ( Apaymentspent ) ! = 0 & & bits256_nonz ( depositspent ) ! = 0 )
@ -404,7 +404,7 @@ int32_t basilisk_swap_isfinished(uint32_t expiration,int32_t iambob,bits256 *txi
{
{
if ( sentflags [ BASILISK_ALICECLAIM ] ! = 0 )
if ( sentflags [ BASILISK_ALICECLAIM ] ! = 0 )
{
{
printf ( " edge case unspendable alicepayment \n " ) ;
printf ( " edge case unspendable alicepayment %u-%u \n " , requestid , quoteid ) ;
return ( 1 ) ;
return ( 1 ) ;
}
}
else if ( iambob ! = 0 & & sentflags [ BASILISK_ALICECLAIM ] ! = 0 )
else if ( iambob ! = 0 & & sentflags [ BASILISK_ALICECLAIM ] ! = 0 )
@ -447,7 +447,7 @@ int32_t basilisk_swap_isfinished(uint32_t expiration,int32_t iambob,bits256 *txi
if ( bits256_nonz ( depositspent ) ! = 0 )
if ( bits256_nonz ( depositspent ) ! = 0 )
{
{
if ( bits256_nonz ( Apaymentspent ) = = 0 & & sentflags [ BASILISK_BOBREFUND ] = = 0 )
if ( bits256_nonz ( Apaymentspent ) = = 0 & & sentflags [ BASILISK_BOBREFUND ] = = 0 )
printf ( " bob was too late in claiming bobrefund \n " ) ;
printf ( " bob was too late in claiming bobrefund %u-%u \n " , requestid , quoteid ) ;
return ( 1 ) ;
return ( 1 ) ;
}
}
}
}
@ -756,7 +756,7 @@ int32_t LP_rswap_init(struct LP_swap_remember *rswap,uint32_t requestid,uint32_t
}
}
free_json ( txobj ) ;
free_json ( txobj ) ;
}
}
rswap - > origfinishedflag = basilisk_swap_isfinished ( rswap - > expiration , rswap - > iambob , rswap - > txids , rswap - > sentflags , rswap - > paymentspent , rswap - > Apaymentspent , rswap - > depositspent ) ;
rswap - > origfinishedflag = basilisk_swap_isfinished ( requestid , quoteid , r swap - > expiration , rswap - > iambob , rswap - > txids , rswap - > sentflags , rswap - > paymentspent , rswap - > Apaymentspent , rswap - > depositspent ) ;
rswap - > finishedflag = rswap - > origfinishedflag ;
rswap - > finishedflag = rswap - > origfinishedflag ;
if ( forceflag ! = 0 )
if ( forceflag ! = 0 )
rswap - > finishedflag = rswap - > origfinishedflag = 0 ;
rswap - > finishedflag = rswap - > origfinishedflag = 0 ;
@ -983,6 +983,8 @@ cJSON *basilisk_remember(int64_t *KMDtotals,int64_t *BTCtotals,uint32_t requesti
if ( ( retjson = cJSON_Parse ( fstr ) ) ! = 0 )
if ( ( retjson = cJSON_Parse ( fstr ) ) ! = 0 )
{
{
free ( fstr ) ;
free ( fstr ) ;
if ( pendingonly ! = 0 )
free_json ( retjson ) , retjson = 0 ;
return ( retjson ) ;
return ( retjson ) ;
}
}
free ( fstr ) ;
free ( fstr ) ;
@ -1005,6 +1007,7 @@ cJSON *basilisk_remember(int64_t *KMDtotals,int64_t *BTCtotals,uint32_t requesti
//printf("legacy r%u-q%u DB SWAPS.(%u %u) %llu files BOB.(%s) Alice.(%s) src.(%s) dest.(%s)\n",requestid,quoteid,rswap.requestid,rswap.quoteid,(long long)rswap.aliceid,rswap.bobcoin,rswap.alicecoin,rswap.src,rswap.dest);
//printf("legacy r%u-q%u DB SWAPS.(%u %u) %llu files BOB.(%s) Alice.(%s) src.(%s) dest.(%s)\n",requestid,quoteid,rswap.requestid,rswap.quoteid,(long long)rswap.aliceid,rswap.bobcoin,rswap.alicecoin,rswap.src,rswap.dest);
cJSON * retjson = cJSON_CreateObject ( ) ;
cJSON * retjson = cJSON_CreateObject ( ) ;
jaddstr ( retjson , " error " , " swap never started " ) ;
jaddstr ( retjson , " error " , " swap never started " ) ;
jaddstr ( retjson , " status " , " finished " ) ;
jaddstr ( retjson , " bob " , rswap . bobcoin ) ;
jaddstr ( retjson , " bob " , rswap . bobcoin ) ;
jaddstr ( retjson , " src " , rswap . src ) ;
jaddstr ( retjson , " src " , rswap . src ) ;
jaddstr ( retjson , " alice " , rswap . alicecoin ) ;
jaddstr ( retjson , " alice " , rswap . alicecoin ) ;
@ -1115,7 +1118,7 @@ cJSON *basilisk_remember(int64_t *KMDtotals,int64_t *BTCtotals,uint32_t requesti
rswap . paymentspent = basilisk_swap_spendupdate ( rswap . iambob , rswap . bobcoin , rswap . bobpaymentaddr , rswap . sentflags , rswap . txids , BASILISK_BOBPAYMENT , BASILISK_ALICESPEND , BASILISK_BOBRECLAIM , 0 , srcAdest , srcBdest , rswap . Adestaddr , rswap . destaddr ) ;
rswap . paymentspent = basilisk_swap_spendupdate ( rswap . iambob , rswap . bobcoin , rswap . bobpaymentaddr , rswap . sentflags , rswap . txids , BASILISK_BOBPAYMENT , BASILISK_ALICESPEND , BASILISK_BOBRECLAIM , 0 , srcAdest , srcBdest , rswap . Adestaddr , rswap . destaddr ) ;
rswap . Apaymentspent = basilisk_swap_spendupdate ( rswap . iambob , rswap . alicecoin , rswap . alicepaymentaddr , rswap . sentflags , rswap . txids , BASILISK_ALICEPAYMENT , BASILISK_ALICERECLAIM , BASILISK_BOBSPEND , 0 , destAdest , destBdest , rswap . Adestaddr , rswap . destaddr ) ;
rswap . Apaymentspent = basilisk_swap_spendupdate ( rswap . iambob , rswap . alicecoin , rswap . alicepaymentaddr , rswap . sentflags , rswap . txids , BASILISK_ALICEPAYMENT , BASILISK_ALICERECLAIM , BASILISK_BOBSPEND , 0 , destAdest , destBdest , rswap . Adestaddr , rswap . destaddr ) ;
rswap . depositspent = basilisk_swap_spendupdate ( rswap . iambob , rswap . bobcoin , rswap . bobdepositaddr , rswap . sentflags , rswap . txids , BASILISK_BOBDEPOSIT , BASILISK_ALICECLAIM , BASILISK_BOBREFUND , 0 , srcAdest , srcBdest , rswap . Adestaddr , rswap . destaddr ) ;
rswap . depositspent = basilisk_swap_spendupdate ( rswap . iambob , rswap . bobcoin , rswap . bobdepositaddr , rswap . sentflags , rswap . txids , BASILISK_BOBDEPOSIT , BASILISK_ALICECLAIM , BASILISK_BOBREFUND , 0 , srcAdest , srcBdest , rswap . Adestaddr , rswap . destaddr ) ;
rswap . finishedflag = basilisk_swap_isfinished ( rswap . expiration , rswap . iambob , rswap . txids , rswap . sentflags , rswap . paymentspent , rswap . Apaymentspent , rswap . depositspent ) ;
rswap . finishedflag = basilisk_swap_isfinished ( requestid , quoteid , r swap . expiration , rswap . iambob , rswap . txids , rswap . sentflags , rswap . paymentspent , rswap . Apaymentspent , rswap . depositspent ) ;
LP_spends_set ( & rswap ) ;
LP_spends_set ( & rswap ) ;
if ( rswap . iambob = = 0 )
if ( rswap . iambob = = 0 )
{
{
@ -1250,7 +1253,7 @@ cJSON *basilisk_remember(int64_t *KMDtotals,int64_t *BTCtotals,uint32_t requesti
free_json ( txoutobj ) , flag = 0 ;
free_json ( txoutobj ) , flag = 0 ;
else flag = - 1 , rswap . paymentspent = deadtxid ;
else flag = - 1 , rswap . paymentspent = deadtxid ;
}
}
if ( flag = = 0 & & time ( NULL ) > rswap . expiration + 777 )
if ( flag = = 0 & & time ( NULL ) > rswap . plocktime + 777 )
{
{
// bobreclaim
// bobreclaim
redeemlen = basilisk_swap_bobredeemscript ( 0 , & secretstart , redeemscript , rswap . plocktime , rswap . pubA0 , rswap . pubB0 , rswap . pubB1 , zero , rswap . privBn , rswap . secretAm , rswap . secretAm256 , rswap . secretBn , rswap . secretBn256 ) ;
redeemlen = basilisk_swap_bobredeemscript ( 0 , & secretstart , redeemscript , rswap . plocktime , rswap . pubA0 , rswap . pubB0 , rswap . pubB1 , zero , rswap . privBn , rswap . secretAm , rswap . secretAm256 , rswap . secretBn , rswap . secretBn256 ) ;
@ -1282,7 +1285,7 @@ cJSON *basilisk_remember(int64_t *KMDtotals,int64_t *BTCtotals,uint32_t requesti
free_json ( txoutobj ) , flag = 0 ;
free_json ( txoutobj ) , flag = 0 ;
else flag = - 1 , rswap . depositspent = deadtxid ;
else flag = - 1 , rswap . depositspent = deadtxid ;
}
}
if ( flag = = 0 & & ( bits256_nonz ( rswap . paymentspent ) ! = 0 | | time ( NULL ) > rswap . plocktime + 777 + 120 ) )
if ( flag = = 0 & & ( bits256_nonz ( rswap . A paymentspent) ! = 0 | | time ( NULL ) > rswap . dlocktime - 777 | | ( bits256_nonz ( rswap . txids [ BASILISK_ALICEPAYMENT ] ) = = 0 & & time ( NULL ) > rswap . dlocktime - 2 * INSTANTDEX_LOCKTIME + 777 ) | | ( bits256_nonz ( rswap . txids [ BASILISK_BOBPAYMENT ] ) = = 0 & & time ( NULL ) > rswap . dlocktime - 3 * INSTANTDEX_LOCKTIME / 2 ) ) )
{
{
//printf("do the refund! paymentspent.%s now.%u vs expiration.%u\n",bits256_str(str,rswap.paymentspent),(uint32_t)time(NULL),rswap.expiration);
//printf("do the refund! paymentspent.%s now.%u vs expiration.%u\n",bits256_str(str,rswap.paymentspent),(uint32_t)time(NULL),rswap.expiration);
//if ( txbytes[BASILISK_BOBREFUND] == 0 )
//if ( txbytes[BASILISK_BOBREFUND] == 0 )
@ -1322,7 +1325,7 @@ cJSON *basilisk_remember(int64_t *KMDtotals,int64_t *BTCtotals,uint32_t requesti
LP_totals_update ( rswap . iambob , rswap . alicecoin , rswap . bobcoin , KMDtotals , BTCtotals , rswap . sentflags , rswap . values ) ;
LP_totals_update ( rswap . iambob , rswap . alicecoin , rswap . bobcoin , KMDtotals , BTCtotals , rswap . sentflags , rswap . values ) ;
if ( ( numspent = LP_spends_set ( & rswap ) ) = = 3 )
if ( ( numspent = LP_spends_set ( & rswap ) ) = = 3 )
rswap . finishedflag = 1 ;
rswap . finishedflag = 1 ;
else rswap . finishedflag = basilisk_swap_isfinished ( rswap . expiration , rswap . iambob , rswap . txids , rswap . sentflags , rswap . paymentspent , rswap . Apaymentspent , rswap . depositspent ) ;
else rswap . finishedflag = basilisk_swap_isfinished ( requestid , quoteid , r swap . expiration , rswap . iambob , rswap . txids , rswap . sentflags , rswap . paymentspent , rswap . Apaymentspent , rswap . depositspent ) ;
if ( rswap . origfinishedflag = = 0 & & rswap . finishedflag ! = 0 )
if ( rswap . origfinishedflag = = 0 & & rswap . finishedflag ! = 0 )
{
{
char fname [ 1024 ] , * itemstr ; FILE * fp ;
char fname [ 1024 ] , * itemstr ; FILE * fp ;