From f5314d6f7995031a6029d18950d209738f559763 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 24 May 2016 02:57:28 -0500 Subject: [PATCH] test --- iguana/iguana_exchanges.c | 2 +- iguana/iguana_realtime.c | 11 ++++++++++- iguana/swaps/iguana_BTCswap.c | 28 ++++++++++++++++++++++------ 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/iguana/iguana_exchanges.c b/iguana/iguana_exchanges.c index bb83be323..417bf9f83 100755 --- a/iguana/iguana_exchanges.c +++ b/iguana/iguana_exchanges.c @@ -585,7 +585,7 @@ char *exchanges777_process(struct exchange_info *exchange,int32_t *retvalp,struc void iguana_statemachineupdate(struct supernet_info *myinfo,struct exchange_info *exchange) { - int32_t timemod,modwidth = 3; struct iguana_info *coin; struct bitcoin_swapinfo *swap,*tmp; struct iguana_bundlereq *req; + int32_t timemod,modwidth = 1; struct iguana_info *coin; struct bitcoin_swapinfo *swap,*tmp; struct iguana_bundlereq *req; timemod = time(NULL) % modwidth; coin = iguana_coinfind("BTCD"); portable_mutex_lock(&exchange->mutexS); diff --git a/iguana/iguana_realtime.c b/iguana/iguana_realtime.c index 5904e7225..f050bab1f 100755 --- a/iguana/iguana_realtime.c +++ b/iguana/iguana_realtime.c @@ -189,7 +189,10 @@ void iguana_RTspendvectors(struct iguana_info *coin,struct iguana_bundle *bp) printf("RTspendvectors converted.%d to %d\n",num,coin->RTheight); bp->converted = (uint32_t)time(NULL); if ( iguana_balancegen(coin,1,bp,coin->RTstarti,coin->RTheight > 0 ? coin->RTheight-1 : bp->n-1,orignumemit) < 0 ) + { + printf("balancegen error\n"); coin->RTdatabad = 1; + } else if ( coin->RTgenesis == 0 && coin->firstRTgenesis == 0 ) coin->firstRTgenesis++, printf(">>>>>> IGUANA %s READY FOR REALTIME RPC <<<<<<\n",coin->symbol); //printf("iguana_balancegen [%d] (%d to %d)\n",bp->hdrsi,coin->RTstarti,(coin->RTheight-1)%bp->n); @@ -339,13 +342,19 @@ int32_t iguana_realtime_update(struct iguana_info *coin) iguana_RTspendvectors(coin,bp); coin->RTgenesis = (uint32_t)time(NULL); } - } else coin->RTdatabad = 1; + } + else + { + printf("walkchain error n.%d != %d\n",n,coin->RTheight-1); + coin->RTdatabad = 1; + } } if ( dest != 0 && flag != 0 ) printf("<<<< flag.%d RT.%d:%d hwm.%d L.%d T.%d U.%d S.%d P.%d X.%d -> size.%ld\n",flag,coin->RTheight,n,coin->blocks.hwmchain.height,coin->longestchain,dest->H.txidind,dest->H.unspentind,dest->H.spendind,dest->pkind,dest->externalind,dest->H.data!=0?(long)dest->H.data->allocsize:-1); if ( coin->RTdatabad != 0 ) { iguana_RTramchainfree(coin,bp); + coin->RTdatabad = 0; //memset(bp->hashes,0,sizeof(bp->hashes)); memset(bp->blocks,0,sizeof(bp->blocks)); if ( 0 && bp->speculative != 0 ) diff --git a/iguana/swaps/iguana_BTCswap.c b/iguana/swaps/iguana_BTCswap.c index f6d4b3f9e..d0011dfd0 100755 --- a/iguana/swaps/iguana_BTCswap.c +++ b/iguana/swaps/iguana_BTCswap.c @@ -510,16 +510,16 @@ void instantdex_privkeyextract(struct supernet_info *myinfo,struct bitcoin_swapi { if ( otherpubkey[0] == 3 ) { - swap->privBn = swap->privkeys[i]; - swap->pubBn = bitcoin_pubkey33(myinfo->ctx,pubkey,swap->privBn); + //swap->privBn = swap->privkeys[i]; + swap->pubBn = bitcoin_pubkey33(myinfo->ctx,pubkey,swap->privkeys[i]); } else printf("wrong first byte.%02x\n",otherpubkey[0]); } else { if ( otherpubkey[0] == 2 ) { - swap->privAm = swap->privkeys[i]; - swap->pubAm = bitcoin_pubkey33(myinfo->ctx,pubkey,swap->privAm); + //swap->privAm = swap->privkeys[i]; + swap->pubAm = bitcoin_pubkey33(myinfo->ctx,pubkey,swap->privkeys[i]); } else printf("wrong first byte.%02x\n",otherpubkey[0]); } continue; @@ -638,6 +638,8 @@ void instantdex_newjson(struct supernet_info *myinfo,struct bitcoin_swapinfo *sw } if ( bits256_nonz(swap->pubAm) != 0 ) jaddbits256(newjson,"pubAm",swap->pubAm); + if ( bits256_nonz(swap->privAm) != 0 ) + jaddbits256(newjson,"privAm",swap->privAm); if ( bits256_nonz(swap->pubBn) != 0 ) jaddbits256(newjson,"pubBn",swap->pubBn); } @@ -950,17 +952,31 @@ cJSON *BTC_waitpaymentfunc(struct supernet_info *myinfo,struct exchange_info *ex cJSON *BTC_makeclaimfunc(struct supernet_info *myinfo,struct exchange_info *exchange,struct bitcoin_swapinfo *swap,cJSON *argjson,cJSON *newjson,uint8_t **serdatap,int32_t *serdatalenp) { - struct iguana_info *coinbtc,*altcoin; + struct iguana_info *coinbtc,*altcoin; int32_t got_payment=1,bob_reclaimed=0; coinbtc = iguana_coinfind("BTC"); altcoin = iguana_coinfind(swap->mine.offer.base); strcpy(swap->waitfortx,"dep"); *serdatap = 0, *serdatalenp = 0; if ( instantdex_isbob(swap) == 0 ) { + // [BLOCKING: payfound] now Alice's turn to make sure payment is confrmed and send in claim or see bob's reclaim and reclaim + if ( got_payment != 0 ) + { + swap->privAm = swap->privkeys[swap->otherchoosei]; + // sign if/else payment + } + else if ( bob_reclaimed != 0 ) + { + + } } else { - + // [BLOCKING: privM] Bob waits for privM either from Alice or alt blockchain + if ( bits256_nonz(swap->privAm) != 0 ) + { + // a multisig tx for altcoin + } } return(newjson); }