Browse Source

Test

etomic
jl777 8 years ago
parent
commit
973fa0bbe7
  1. 12
      basilisk/basilisk_MSG.c
  2. 51
      basilisk/basilisk_swap.c
  3. 2
      basilisk/jumblr.c
  4. 2
      iguana/dPoW.h
  5. 26
      iguana/dpow/dpow_network.c
  6. 2
      iguana/main.c

12
basilisk/basilisk_MSG.c

@ -263,6 +263,18 @@ char *basilisk_respond_MSG(struct supernet_info *myinfo,char *CMD,void *addr,cha
return(retstr);
}
cJSON *dpow_getmessage(struct supernet_info *myinfo,char *jsonstr)
{
cJSON *valsobj,*retjson = 0; char *retstr;
if ( (valsobj= cJSON_Parse(jsonstr)) != 0 )
{
retstr = basilisk_iterate_MSG(myinfo,juint(valsobj,"channel"),juint(valsobj,"msgid"),jbits256(valsobj,"srchash"),jbits256(valsobj,"desthash"),juint(valsobj,"width"));
retjson = cJSON_Parse(retstr);
free(retstr);
}
return(retjson);
}
#include "../includes/iguana_apidefs.h"
#include "../includes/iguana_apideclares.h"

51
basilisk/basilisk_swap.c

@ -414,7 +414,7 @@ int32_t basilisk_verify_otherfee(struct supernet_info *myinfo,void *ptr,uint8_t
return(0);
}
int32_t basilisk_rawtx_spendscript(struct supernet_info *myinfo,struct basilisk_swap *swap,int32_t height,struct basilisk_rawtx *rawtx,int32_t v,uint8_t *recvbuf,int32_t recvlen,int32_t suppress_pubkeys)
int32_t basilisk_rawtx_spendscript(struct basilisk_swap *swap,int32_t height,struct basilisk_rawtx *rawtx,int32_t v,uint8_t *recvbuf,int32_t recvlen,int32_t suppress_pubkeys)
{
int32_t datalen=0,retval=-1,hexlen,n; uint8_t *data; cJSON *txobj,*skey,*vouts,*vout; char *hexstr;
datalen = recvbuf[0];
@ -495,7 +495,7 @@ int32_t basilisk_swapuserdata(struct basilisk_swap *swap,uint8_t *userdata,bits2
int32_t basilisk_verify_bobdeposit(struct supernet_info *myinfo,void *ptr,uint8_t *data,int32_t datalen)
{
uint8_t userdata[512]; int32_t i,retval,len = 0; static bits256 zero; struct basilisk_swap *swap = ptr;
if ( basilisk_rawtx_spendscript(&swap->myinfo,swap,swap->bobcoin->blocks.hwmchain.height,&swap->bobdeposit,0,data,datalen,0) == 0 )
if ( basilisk_rawtx_spendscript(swap,swap->bobcoin->blocks.hwmchain.height,&swap->bobdeposit,0,data,datalen,0) == 0 )
{
len = basilisk_swapuserdata(swap,userdata,zero,1,swap->I.myprivs[0],swap->bobdeposit.redeemscript,swap->bobdeposit.I.redeemlen);
if ( (retval= basilisk_rawtx_sign(&swap->myinfo,swap->bobcoin->blocks.hwmchain.height,swap,&swap->aliceclaim,&swap->bobdeposit,swap->I.myprivs[0],0,userdata,len,1)) == 0 )
@ -556,7 +556,7 @@ int32_t basilisk_verify_bobpaid(struct supernet_info *myinfo,void *ptr,uint8_t *
{
uint8_t userdata[512]; int32_t i,retval,len = 0; bits256 revAm; struct basilisk_swap *swap = ptr;
memset(revAm.bytes,0,sizeof(revAm));
if ( basilisk_rawtx_spendscript(&swap->myinfo,swap,swap->bobcoin->blocks.hwmchain.height,&swap->bobpayment,0,data,datalen,0) == 0 )
if ( basilisk_rawtx_spendscript(swap,swap->bobcoin->blocks.hwmchain.height,&swap->bobpayment,0,data,datalen,0) == 0 )
{
for (i=0; i<32; i++)
revAm.bytes[i] = swap->I.privAm.bytes[31-i];
@ -598,7 +598,7 @@ int32_t basilisk_alicepayment_spend(struct supernet_info *myinfo,struct basilisk
int32_t basilisk_verify_alicepaid(struct supernet_info *myinfo,void *ptr,uint8_t *data,int32_t datalen)
{
struct basilisk_swap *swap = ptr;
if ( basilisk_rawtx_spendscript(&swap->myinfo,swap,swap->alicecoin->blocks.hwmchain.height,&swap->alicepayment,0,data,datalen,0) == 0 )
if ( basilisk_rawtx_spendscript(swap,swap->alicecoin->blocks.hwmchain.height,&swap->alicepayment,0,data,datalen,0) == 0 )
return(0);
else return(-1);
}
@ -881,16 +881,43 @@ int32_t basilisk_process_swapverify(struct supernet_info *myinfo,void *ptr,int32
int32_t basilisk_swapget(struct supernet_info *myinfo,struct basilisk_swap *swap,uint32_t msgbits,uint8_t *data,int32_t maxlen,int32_t (*basilisk_verify_func)(struct supernet_info *myinfo,void *ptr,uint8_t *data,int32_t datalen))
{
int32_t datalen; uint32_t crc;
if ( (crc= basilisk_crcrecv(&swap->myinfo,0,swap->verifybuf,sizeof(swap->verifybuf),&datalen,swap->I.otherhash,swap->I.myhash,swap->I.req.quoteid,msgbits)) != 0 )
{
if ( datalen > 0 && datalen < maxlen )
cJSON *valsobj,*array,*item; int32_t i,n,datalen,retval = -1; char *retstr,*hexstr=0;
//int32_t datalen; uint32_t crc;
//if ( (crc= basilisk_crcrecv(&swap->myinfo,0,swap->verifybuf,sizeof(swap->verifybuf),&datalen,swap->I.otherhash,swap->I.myhash,swap->I.req.quoteid,msgbits)) != 0 )
valsobj = cJSON_CreateObject();
jaddnum(valsobj,"channel",swap->I.req.quoteid);
jaddnum(valsobj,"msgid",msgbits);
jaddbits256(valsobj,"srchash",swap->I.otherhash);
jaddbits256(valsobj,"desthash",swap->I.myhash);
jaddnum(valsobj,"width",0);
if ( (retstr= _dex_getmessage(myinfo,jprint(valsobj,1))) != 0 )
{
if ( (array= cJSON_Parse(retstr)) != 0 )
{
memcpy(data,swap->verifybuf,datalen);
return((*basilisk_verify_func)(&swap->myinfo,swap,data,datalen));
if ( (n= cJSON_GetArraySize(array)) > 0 )
{
for (i=0; i<n; i++)
{
item = jitem(array,i);
if ( (hexstr= jstr(item,"data")) != 0 )
{
datalen = (int32_t)strlen(hexstr) >> 1;
if ( datalen > 0 && datalen < maxlen )
{
decode_hex(data,datalen,hexstr);
if ( (retval= (*basilisk_verify_func)(&swap->myinfo,swap,data,datalen)) == 0 )
{
break;
}
}
}
}
}
free_json(array);
}
free(retstr);
}
return(-1);
return(retval);
}
uint32_t basilisk_swapsend(struct supernet_info *myinfo,struct basilisk_swap *swap,uint32_t msgbits,uint8_t *data,int32_t datalen,uint32_t nextbits,uint32_t crcs[2])
@ -1949,7 +1976,7 @@ struct basilisk_swap *basilisk_thread_start(struct supernet_info *myinfo,bits256
swap = calloc(1,sizeof(*swap));
vcalc_sha256(0,swap->I.orderhash.bytes,(uint8_t *)rp,sizeof(*rp));
swap->I.req = *rp;
//swap->myinfo = myinfo;
swap->myinfo = *myinfo;
swap->myinfo.ctx = myinfo->ctx;
bitcoin_pubkey33(myinfo->ctx,pubkey33,privkey);
pubkey25519 = curve25519(privkey,curve25519_basepoint9());

2
basilisk/jumblr.c

@ -413,7 +413,7 @@ void jumblr_iteration(struct supernet_info *myinfo,struct iguana_info *coin,int3
}
fee = JUMBLR_INCR * JUMBLR_FEE;
OS_randombytes(&r,sizeof(r));
r = 0;
//r = 0;
if ( strcmp(coin->symbol,"KMD") == 0 && coin->FULLNODE < 0 )
{
//printf("JUMBLR selector.%d modval.%d r.%d\n",selector,modval,r&7);

2
iguana/dPoW.h

@ -167,6 +167,7 @@ char *dpow_alladdresses(struct supernet_info *myinfo,struct iguana_info *coin);
cJSON *dpow_kvupdate(struct supernet_info *myinfo,struct iguana_info *coin,char *key,char *value,int32_t flags);
cJSON *dpow_kvsearch(struct supernet_info *myinfo,struct iguana_info *coin,char *key);
void init_alladdresses(struct supernet_info *myinfo,struct iguana_info *coin);
cJSON *dpow_getmessage(struct supernet_info *myinfo,char *jsonstr);
char *_dex_getinfo(struct supernet_info *myinfo,char *symbol);
char *_dex_getrawtransaction(struct supernet_info *myinfo,char *symbol,bits256 txid);
@ -178,6 +179,7 @@ char *_dex_gettxout(struct supernet_info *myinfo,char *symbol,bits256 txid,int32
char *_dex_gettxin(struct supernet_info *myinfo,char *symbol,bits256 txid,int32_t vout);
char *_dex_importaddress(struct supernet_info *myinfo,char *symbol,char *address);
char *_dex_validateaddress(struct supernet_info *myinfo,char *symbol,char *address);
char *_dex_getmessage(struct supernet_info *myinfo,char *jsonstr);
char *_dex_listunspent(struct supernet_info *myinfo,char *symbol,char *address);
char *_dex_listunspent2(struct supernet_info *myinfo,char *symbol,char *address);
char *_dex_listspent(struct supernet_info *myinfo,char *symbol,char *address);

26
iguana/dpow/dpow_network.c

@ -416,14 +416,14 @@ char *_dex_reqsend(struct supernet_info *myinfo,char *handler,uint8_t *key,int32
printf("%d: subscribe connect (%s)\n",myinfo->numdexipbits,str);
}
}
//#ifndef __APPLE__
#ifndef __APPLE__
if ( (rand() % 100) < 40 )
{
nanomsg_tcpname(0,str,ipaddr,REP_SOCK);
nn_connect(myinfo->reqsock,str);
printf("%d: req connect (%s)\n",myinfo->numdexipbits,str);
}
//#endif
#endif
}
}
if ( freeptr != 0 )
@ -644,6 +644,14 @@ char *dex_response(int32_t *broadcastflagp,struct supernet_info *myinfo,struct d
retstr = jprint(retjson,1);
}
}
else if ( dexreq.func == 'M' )
{
if ( (retjson= dpow_getmessage(myinfo,(char *)&dexp->packet[datalen])) != 0 )
{
dpow_randipbits(myinfo,coin,retjson);
retstr = jprint(retjson,1);
}
}
else if ( dexreq.func == 'N' )
{
uint8_t pubkeys[64][33]; char str[128]; int32_t numnotaries; cJSON *array,*item;
@ -993,6 +1001,15 @@ char *_dex_validateaddress(struct supernet_info *myinfo,char *symbol,char *addre
return(_dex_sendrequeststr(myinfo,&dexreq,address,0,1,""));
}
char *_dex_getmessage(struct supernet_info *myinfo,char *jsonstr)
{
struct dex_request dexreq;
memset(&dexreq,0,sizeof(dexreq));
safecopy(dexreq.name,"KMD",sizeof(dexreq.name));
dexreq.func = 'M';
return(_dex_sendrequeststr(myinfo,&dexreq,jsonstr,0,1,""));
}
char *_dex_listunspentarg(struct supernet_info *myinfo,char *symbol,char *address,uint8_t arg)
{
struct dex_request dexreq; char *retstr;
@ -1992,8 +2009,9 @@ int32_t dpow_nanomsg_update(struct supernet_info *myinfo)
free(retstr);
if ( broadcastflag != 0 )
{
//printf("BROADCAST dexp request.[%d]\n",size);
printf("BROADCAST dexp request.[%d]\n",size);
signed_nn_send(myinfo,myinfo->ctx,myinfo->persistent_priv,myinfo->dexsock,dexp,size);
signed_nn_send(myinfo,myinfo->ctx,myinfo->persistent_priv,myinfo->pubsock,dexp,size);
}
}
else
@ -2007,7 +2025,7 @@ int32_t dpow_nanomsg_update(struct supernet_info *myinfo)
if ( dex_packetcheck(myinfo,dexp,size) == 0 )
{
signed_nn_send(myinfo,myinfo->ctx,myinfo->persistent_priv,myinfo->dexsock,dexp,size);
signed_nn_send(myinfo,myinfo->ctx,myinfo->persistent_priv,myinfo->pubsock,dexp,size);
//signed_nn_send(myinfo,myinfo->ctx,myinfo->persistent_priv,myinfo->pubsock,dexp,size);
//printf("REP.%08x -> dexbus and pub, t.%d lag.%d\n",dexp->crc32,dexp->timestamp,(int32_t)(time(NULL)-dexp->timestamp));
dex_packet(myinfo,dexp,size);
} //else printf("failed dexpacketcheck\n");

2
iguana/main.c

@ -747,7 +747,7 @@ void iguana_urlinit(struct supernet_info *myinfo,int32_t ismainnet,int32_t usess
void jumblr_loop(void *ptr)
{
struct iguana_info *coin; uint32_t t; struct supernet_info *myinfo = ptr; int32_t mult = 1;
struct iguana_info *coin; uint32_t t; struct supernet_info *myinfo = ptr; int32_t mult = 10;
printf("JUMBLR loop\n");
while ( 1 )
{

Loading…
Cancel
Save