Browse Source

test

release/v0.1
jl777 8 years ago
parent
commit
35511e153b
  1. 2
      basilisk/basilisk.c
  2. 36
      basilisk/basilisk_swap.c

2
basilisk/basilisk.c

@ -290,7 +290,9 @@ struct basilisk_item *basilisk_issueremote(struct supernet_info *myinfo,struct i
}
else
{
valsobj = jduplicate(valsobj);
data = basilisk_jsondata(sizeof(struct iguana_msghdr),&allocptr,space,sizeof(space),&datalen,symbol,valsobj,basilisktag);
free_json(valsobj), valsobj = 0;
*numsentp = pending->numsent = basilisk_sendcmd(myinfo,addr != 0 ? addr->ipaddr : 0,CMD,&pending->basilisktag,encryptflag,delaymillis,data,datalen,fanout,pending->nBits);
if ( blockflag != 0 )
{

36
basilisk/basilisk_swap.c

@ -119,14 +119,14 @@ int32_t instantdex_pubkeyargs(struct supernet_info *myinfo,struct basilisk_swap
int32_t basilisk_rawtx_gen(char *str,struct supernet_info *myinfo,struct basilisk_swap *swap,int32_t lockinputs,struct basilisk_rawtx *rawtx,uint32_t locktime,uint8_t *script,int32_t scriptlen,int64_t txfee,int32_t minconf)
{
struct iguana_waddress *waddr; struct iguana_waccount *wacct; char coinaddr[64],wifstr[64],*txbytes=0,*signedtx,*retstr,scriptstr[1024]; bits256 signedtxid; uint32_t basilisktag; int32_t flag,completed,retval = -1; cJSON *valsobj,*vins=0,*retjson=0,*privkey,*addresses;
struct iguana_waddress *waddr; struct iguana_waccount *wacct; char coinaddr[64],wifstr[64],*txbytes=0,*signedtx,*retstr,scriptstr[1024]; bits256 signedtxid; uint32_t basilisktag; int32_t flag,completed,retval = -1; cJSON *valsobj,*vins=0,*retjson=0,*privkeyarray,*addresses;
if ( (waddr= iguana_getaccountaddress(myinfo,rawtx->coin,0,0,rawtx->coin->changeaddr,"change")) == 0 )
{
printf("no change addr error\n");
return(-1);
}
init_hexbytes_noT(scriptstr,script,scriptlen);
privkey = cJSON_CreateArray();
privkeyarray = cJSON_CreateArray();
addresses = cJSON_CreateArray();
if ( rawtx->coin->changeaddr[0] == 0 )
bitcoin_address(rawtx->coin->changeaddr,rawtx->coin->chain->pubtype,waddr->rmd160,20);
@ -136,7 +136,7 @@ int32_t basilisk_rawtx_gen(char *str,struct supernet_info *myinfo,struct basilis
if ( (waddr= iguana_waddresssearch(myinfo,&wacct,coinaddr)) != 0 )
{
bitcoin_priv2wif(wifstr,waddr->privkey,rawtx->coin->chain->wiftype);
jaddistr(privkey,waddr->wifstr);
jaddistr(privkeyarray,waddr->wifstr);
}
basilisktag = (uint32_t)rand();
jaddistr(addresses,coinaddr);
@ -160,10 +160,10 @@ int32_t basilisk_rawtx_gen(char *str,struct supernet_info *myinfo,struct basilis
flag = 1;
else printf("missing rawtx.%p or vins.%p (%s)\n",txbytes,vins,retstr);
} else printf("error parsing.(%s)\n",retstr);
if ( flag != 0 && vins != 0 )
if ( txbytes != 0 && vins != 0 )
{
//printf("vins.(%s)\n",jprint(vins,0));
if ( (signedtx= iguana_signrawtx(myinfo,rawtx->coin,&signedtxid,&completed,vins,txbytes,privkey)) != 0 )
if ( (signedtx= iguana_signrawtx(myinfo,rawtx->coin,&signedtxid,&completed,vins,txbytes,privkeyarray)) != 0 )
{
if ( lockinputs != 0 )
iguana_unspentslock(myinfo,rawtx->coin,vins);
@ -177,15 +177,10 @@ int32_t basilisk_rawtx_gen(char *str,struct supernet_info *myinfo,struct basilis
}
if ( retjson != 0 )
free_json(retjson);
if ( flag == 2 )
{
free_json(vins);
printf("Free rawtx\n");
free(txbytes);
}
free(retstr);
} else printf("error creating %s feetx\n",swap->iambob != 0 ? "BOB" : "ALICE");
free_json(valsobj);
free_json(privkeyarray);
return(retval);
}
@ -212,7 +207,7 @@ void basilisk_rawtx_setparms(struct supernet_info *myinfo,struct basilisk_swap *
if ( rawtx->vouttype <= 1 && rawtx->destaddr[0] != 0 )
{
rawtx->spendlen = bitcoin_standardspend(rawtx->spendscript,0,rawtx->rmd160);
if ( vintype == 0 && basilisk_rawtx_gen("setparms",myinfo,swap,1,rawtx,0,rawtx->spendscript,rawtx->spendlen,coin->chain->txfee,1) < 0 )
if ( 0 && vintype == 0 && basilisk_rawtx_gen("setparms",myinfo,swap,1,rawtx,0,rawtx->spendscript,rawtx->spendlen,coin->chain->txfee,1) < 0 )
printf("error generating vintype.%d vouttype.%d -> %s\n",vintype,vouttype,rawtx->destaddr);
}
}
@ -543,12 +538,12 @@ void basilisk_swaploop(void *_swap)
else if ( (swap->statebits & 0x04) == 0 ) // send choosei
{
iguana_rwnum(1,data,sizeof(swap->choosei),&swap->choosei);
swap->statebits |= basilisk_swapsend(myinfo,swap,0x04,data,datalen,0x08);
swap->statebits |= basilisk_swapsend(myinfo,swap,0x08,data,datalen,0x04);
}
else if ( (swap->statebits & 0x08) == 0 ) // wait for choosei
{
if ( basilisk_swapget(myinfo,swap,0x04,data,maxlen,basilisk_verify_choosei) == 0 )
swap->statebits |= 0x04;
if ( basilisk_swapget(myinfo,swap,0x08,data,maxlen,basilisk_verify_choosei) == 0 )
swap->statebits |= 0x08;
}
else if ( (swap->statebits & 0x10) == 0 ) // send all but one privkeys
{
@ -557,15 +552,18 @@ void basilisk_swaploop(void *_swap)
for (j=0; j<32; j++)
data[datalen++] = (i == swap->otherchoosei) ? 0 : swap->privkeys[i].bytes[j];
}
swap->statebits |= basilisk_swapsend(myinfo,swap,0x10,data,datalen,0x20);
swap->statebits |= basilisk_swapsend(myinfo,swap,0x20,data,datalen,0x10);
}
else if ( (swap->statebits & 0x20) == 0 ) // wait for all but one privkeys
{
if ( basilisk_swapget(myinfo,swap,0x10,data,maxlen,basilisk_verify_privkeys) == 0 )
swap->statebits |= 0x10;
if ( basilisk_swapget(myinfo,swap,0x20,data,maxlen,basilisk_verify_privkeys) == 0 )
swap->statebits |= 0x20;
}
else if ( (swap->statebits & 0x40) == 0 ) // send fee
swap->statebits |= basilisk_swapdata_rawtxsend(myinfo,swap,0x80,data,maxlen,&swap->myfee,0x40);
{
if ( swap->myfee.txbytes != 0 || basilisk_rawtx_gen("setparms",myinfo,swap,1,&swap->myfee,0,swap->myfee.spendscript,swap->myfee.spendlen,swap->myfee.coin->chain->txfee,1) == 0 )
swap->statebits |= basilisk_swapdata_rawtxsend(myinfo,swap,0x80,data,maxlen,&swap->myfee,0x40);
}
else if ( (swap->statebits & 0x80) == 0 ) // wait for fee
{
if ( basilisk_swapget(myinfo,swap,0x80,data,maxlen,basilisk_verify_otherfee) == 0 )

Loading…
Cancel
Save