|
@ -108,7 +108,7 @@ void iguana_addinputs(struct iguana_info *coin,struct bitcoin_spend *spend,cJSON |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
struct bitcoin_statetx *instantdex_signtx(struct supernet_info *myinfo,struct iguana_info *coin,uint32_t locktime,char *scriptstr,int64_t satoshis,int64_t txfee,int32_t minconf,int32_t myside) |
|
|
struct bitcoin_statetx *instantdex_signtx(char *str,struct supernet_info *myinfo,struct iguana_info *coin,uint32_t locktime,char *scriptstr,int64_t satoshis,int64_t txfee,int32_t minconf,int32_t myside) |
|
|
{ |
|
|
{ |
|
|
struct iguana_waddress *waddr; struct iguana_waccount *wacct; struct bitcoin_statetx *tx=0; uint8_t pubkey33[33]; char coinaddr[64],wifstr[64]; char *rawtx,*signedtx,*retstr; bits256 signedtxid; uint32_t rawtxtag; int32_t flag,completed; cJSON *valsobj,*vins,*retjson=0,*privkey,*argjson,*addresses; |
|
|
struct iguana_waddress *waddr; struct iguana_waccount *wacct; struct bitcoin_statetx *tx=0; uint8_t pubkey33[33]; char coinaddr[64],wifstr[64]; char *rawtx,*signedtx,*retstr; bits256 signedtxid; uint32_t rawtxtag; int32_t flag,completed; cJSON *valsobj,*vins,*retjson=0,*privkey,*argjson,*addresses; |
|
|
if ( (waddr= iguana_getaccountaddress(myinfo,coin,0,0,coin->changeaddr,"change")) == 0 ) |
|
|
if ( (waddr= iguana_getaccountaddress(myinfo,coin,0,0,coin->changeaddr,"change")) == 0 ) |
|
@ -163,7 +163,7 @@ struct bitcoin_statetx *instantdex_signtx(struct supernet_info *myinfo,struct ig |
|
|
tx = calloc(1,sizeof(*tx) + strlen(signedtx) + 1); |
|
|
tx = calloc(1,sizeof(*tx) + strlen(signedtx) + 1); |
|
|
strcpy(tx->txbytes,signedtx); |
|
|
strcpy(tx->txbytes,signedtx); |
|
|
tx->txid = signedtxid; |
|
|
tx->txid = signedtxid; |
|
|
printf("%s feetx.%s\n",myside != 0 ? "BOB" : "ALICE",signedtx); |
|
|
printf("%s %s.%s\n",myside != 0 ? "BOB" : "ALICE",str,signedtx); |
|
|
free(signedtx); |
|
|
free(signedtx); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -189,7 +189,7 @@ struct bitcoin_statetx *instantdex_feetx(struct supernet_info *myinfo,struct ins |
|
|
n = instantdex_outputinsurance(coinaddr,coin->chain->pubtype,paymentscript,swap->insurance,r,r * (strcmp("BTC",coin->symbol) == 0)); |
|
|
n = instantdex_outputinsurance(coinaddr,coin->chain->pubtype,paymentscript,swap->insurance,r,r * (strcmp("BTC",coin->symbol) == 0)); |
|
|
init_hexbytes_noT(scriptstr,paymentscript,n); |
|
|
init_hexbytes_noT(scriptstr,paymentscript,n); |
|
|
printf("instantdex_feetx %s %.8f (%s)\n",coin->symbol,dstr(swap->insurance),scriptstr); |
|
|
printf("instantdex_feetx %s %.8f (%s)\n",coin->symbol,dstr(swap->insurance),scriptstr); |
|
|
if ( (ptr= instantdex_signtx(myinfo,coin,0,scriptstr,swap->insurance,coin->txfee,0,A->offer.myside)) != 0 ) |
|
|
if ( (ptr= instantdex_signtx("feetx",myinfo,coin,0,scriptstr,swap->insurance,coin->txfee,0,A->offer.myside)) != 0 ) |
|
|
strcpy(ptr->destaddr,coinaddr); |
|
|
strcpy(ptr->destaddr,coinaddr); |
|
|
return(ptr); |
|
|
return(ptr); |
|
|
} |
|
|
} |
|
@ -248,7 +248,7 @@ struct bitcoin_statetx *instantdex_bobtx(struct supernet_info *myinfo,struct bit |
|
|
n = instantdex_bobscript(script,0,&secretstart,locktime,pub1,secret,pub2); |
|
|
n = instantdex_bobscript(script,0,&secretstart,locktime,pub1,secret,pub2); |
|
|
satoshis = amount + depositflag*swap->insurance*100; |
|
|
satoshis = amount + depositflag*swap->insurance*100; |
|
|
init_hexbytes_noT(scriptstr,script,n); |
|
|
init_hexbytes_noT(scriptstr,script,n); |
|
|
if ( (ptr= instantdex_signtx(myinfo,coin,locktime,scriptstr,satoshis,coin->txfee,swap->mine.minconfirms,swap->mine.offer.myside)) != 0 ) |
|
|
if ( (ptr= instantdex_signtx(depositflag != 0 ? "deposit" : "payment",myinfo,coin,locktime,scriptstr,satoshis,coin->txfee,swap->mine.minconfirms,swap->mine.offer.myside)) != 0 ) |
|
|
{ |
|
|
{ |
|
|
bitcoin_address(ptr->destaddr,coin->chain->p2shtype,script,n); |
|
|
bitcoin_address(ptr->destaddr,coin->chain->p2shtype,script,n); |
|
|
printf("BOBTX.%d (%s) -> %s\n",depositflag,ptr->txbytes,ptr->destaddr); |
|
|
printf("BOBTX.%d (%s) -> %s\n",depositflag,ptr->txbytes,ptr->destaddr); |
|
@ -343,7 +343,7 @@ struct bitcoin_statetx *instantdex_alicetx(struct supernet_info *myinfo,struct i |
|
|
} |
|
|
} |
|
|
n = instantdex_alicescript(script,0,msigaddr,altcoin->chain->p2shtype,pubAm,pubBn); |
|
|
n = instantdex_alicescript(script,0,msigaddr,altcoin->chain->p2shtype,pubAm,pubBn); |
|
|
init_hexbytes_noT(scriptstr,script,n); |
|
|
init_hexbytes_noT(scriptstr,script,n); |
|
|
if ( (ptr= instantdex_signtx(myinfo,altcoin,0,scriptstr,amount,altcoin->txfee,swap->mine.minconfirms,swap->mine.offer.myside)) != 0 ) |
|
|
if ( (ptr= instantdex_signtx("altpayment",myinfo,altcoin,0,scriptstr,amount,altcoin->txfee,swap->mine.minconfirms,swap->mine.offer.myside)) != 0 ) |
|
|
{ |
|
|
{ |
|
|
strcpy(ptr->destaddr,msigaddr); |
|
|
strcpy(ptr->destaddr,msigaddr); |
|
|
printf("ALICETX (%s) -> %s\n",ptr->txbytes,ptr->destaddr); |
|
|
printf("ALICETX (%s) -> %s\n",ptr->txbytes,ptr->destaddr); |
|
@ -639,7 +639,7 @@ cJSON *instantdex_parseargjson(struct supernet_info *myinfo,struct exchange_info |
|
|
swap->otherverifiedcut = 1; |
|
|
swap->otherverifiedcut = 1; |
|
|
if ( juint(argjson,"have") != 0 ) |
|
|
if ( juint(argjson,"have") != 0 ) |
|
|
swap->otherhavestate |= juint(argjson,"have"); |
|
|
swap->otherhavestate |= juint(argjson,"have"); |
|
|
//printf("got other.%x myhave.%x\n",swap->otherhavestate,swap->havestate);
|
|
|
printf("got other.%x myhave.%x\n",swap->otherhavestate,swap->havestate); |
|
|
jaddnum(newjson,"verified",swap->otherverifiedcut); |
|
|
jaddnum(newjson,"verified",swap->otherverifiedcut); |
|
|
if ( instantdex_pubkeyargs(myinfo,swap,newjson,2 + deckflag*INSTANTDEX_DECKSIZE,myinfo->persistent_priv,swap->myorderhash,0x02+instantdex_isbob(swap)) != 2 + deckflag*INSTANTDEX_DECKSIZE ) |
|
|
if ( instantdex_pubkeyargs(myinfo,swap,newjson,2 + deckflag*INSTANTDEX_DECKSIZE,myinfo->persistent_priv,swap->myorderhash,0x02+instantdex_isbob(swap)) != 2 + deckflag*INSTANTDEX_DECKSIZE ) |
|
|
printf("ERROR: couldnt generate pubkeys deckflag.%d\n",deckflag); |
|
|
printf("ERROR: couldnt generate pubkeys deckflag.%d\n",deckflag); |
|
@ -1085,7 +1085,7 @@ char *instantdex_statemachine(struct instantdex_stateinfo *states,int32_t numsta |
|
|
printf("state.%s btc.%p altcoin.%p (%s)\n",state->name,coinbtc,altcoin,swap->mine.offer.base); |
|
|
printf("state.%s btc.%p altcoin.%p (%s)\n",state->name,coinbtc,altcoin,swap->mine.offer.base); |
|
|
return(clonestr("{\"error\":\"instantdex_BTCswap missing coin info\"}")); |
|
|
return(clonestr("{\"error\":\"instantdex_BTCswap missing coin info\"}")); |
|
|
} |
|
|
} |
|
|
printf("%llu/%llu cmd.(%s) state.(%s) newlen.%d isbob.%d wait.%s have.%x\n",(long long)swap->mine.orderid,(long long)swap->other.orderid,cmdstr,swap->state->name,(int32_t)strlen(jprint(newjson,0)),instantdex_isbob(swap),swap->waitfortx,juint(argjson,"have")); |
|
|
printf("%llu/%llu cmd.(%s) state.(%s) newlen.%d isbob.%d wait.%s have.%x myhave.%x myfee.%p\n",(long long)swap->mine.orderid,(long long)swap->other.orderid,cmdstr,swap->state->name,(int32_t)strlen(jprint(newjson,0)),instantdex_isbob(swap),swap->waitfortx,juint(argjson,"have"),swap->havestate,swap->myfee); |
|
|
if ( jobj(argjson,"have") != 0 ) |
|
|
if ( jobj(argjson,"have") != 0 ) |
|
|
swap->otherhavestate |= juint(argjson,"have"); |
|
|
swap->otherhavestate |= juint(argjson,"have"); |
|
|
if ( swap->state->name[0] == 0 || (swap->expiration != 0 && time(NULL) > swap->expiration) ) |
|
|
if ( swap->state->name[0] == 0 || (swap->expiration != 0 && time(NULL) > swap->expiration) ) |
|
|