Browse Source

Test

etomic
jl777 8 years ago
parent
commit
8ab3d34797
  1. 57
      iguana/exchanges/LP_unspents.c

57
iguana/exchanges/LP_unspents.c

@ -19,9 +19,21 @@ struct LP_peerinfo
} LP_peerinfos[1024]; } LP_peerinfos[1024];
int32_t LP_numpeers; int32_t LP_numpeers;
void LP_addutxo(char *coin,bits256 txid,int32_t vout,uint64_t satoshis,bits256 deposittxid,int32_t depositvout,uint64_t depositsatoshis,char *spendscript,char *coinaddr) void LP_addutxo(char *coin,bits256 txid,int32_t vout,uint64_t satoshis,bits256 deposittxid,int32_t depositvout,uint64_t depositsatoshis,char *spendscript,char *coinaddr,char *ipaddr,uint16_t port)
{ {
printf("LP_addutxo.(%.8f %.8f)\n",dstr(satoshis),dstr(depositsatoshis)); printf("%s:%u LP_addutxo.(%.8f %.8f)\n",ipaddr,port,dstr(satoshis),dstr(depositsatoshis));
}
struct LP_peerinfo *LP_peerfind(uint32_t ipbits,uint16_t port)
{
int32_t j;
for (j=0; j<LP_numpeers; j++)
if ( LP_peerinfos[j].ipbits == ipbits && LP_peerinfos[j].port == port )
{
//printf("(%s) already in slot.%d\n",argipaddr,j);
return(&LP_peerinfos[j]);
}
return(0);
} }
void _LP_addpeer(int32_t i,uint32_t ipbits,char *ipaddr,uint16_t port,uint32_t gotintro,uint32_t sentintro,double profitmargin) void _LP_addpeer(int32_t i,uint32_t ipbits,char *ipaddr,uint16_t port,uint32_t gotintro,uint32_t sentintro,double profitmargin)
@ -29,6 +41,7 @@ void _LP_addpeer(int32_t i,uint32_t ipbits,char *ipaddr,uint16_t port,uint32_t g
struct LP_peerinfo *peer; struct LP_peerinfo *peer;
if ( i == sizeof(LP_peerinfos)/sizeof(*LP_peerinfos) ) if ( i == sizeof(LP_peerinfos)/sizeof(*LP_peerinfos) )
i = (rand() % (sizeof(LP_peerinfos)/sizeof(*LP_peerinfos))); i = (rand() % (sizeof(LP_peerinfos)/sizeof(*LP_peerinfos)));
else LP_numpeers++;
peer = &LP_peerinfos[i]; peer = &LP_peerinfos[i];
memset(peer,0,sizeof(*peer)); memset(peer,0,sizeof(*peer));
peer->profitmargin = profitmargin; peer->profitmargin = profitmargin;
@ -37,14 +50,12 @@ void _LP_addpeer(int32_t i,uint32_t ipbits,char *ipaddr,uint16_t port,uint32_t g
peer->sentintro = sentintro; peer->sentintro = sentintro;
strcpy(peer->ipaddr,ipaddr); strcpy(peer->ipaddr,ipaddr);
peer->port = port; peer->port = port;
if ( i == LP_numpeers )
LP_numpeers++;
printf("_LPaddpeer %s -> i.%d numpeers.%d\n",ipaddr,i,LP_numpeers); printf("_LPaddpeer %s -> i.%d numpeers.%d\n",ipaddr,i,LP_numpeers);
} }
void LP_notify(struct LP_peerinfo *peer,char *ipaddr,uint16_t port,char *retstr) void LP_notify(struct LP_peerinfo *peer,char *ipaddr,uint16_t port,char *retstr)
{ {
char buf[1024],*argipaddr; uint32_t ipbits; cJSON *array,*item; int32_t i,j,n; uint16_t argport; double profit; char buf[1024],*argipaddr; uint32_t ipbits; cJSON *array,*item; int32_t i,n; uint16_t argport; double profit;
sprintf(buf,"http://%s:%u/api/stats/intro?ipaddr=%s&port=%u",peer->ipaddr,peer->port,ipaddr,port); sprintf(buf,"http://%s:%u/api/stats/intro?ipaddr=%s&port=%u",peer->ipaddr,peer->port,ipaddr,port);
if ( retstr != 0 || (retstr= issue_curl(buf)) != 0 ) if ( retstr != 0 || (retstr= issue_curl(buf)) != 0 )
{ {
@ -60,14 +71,8 @@ void LP_notify(struct LP_peerinfo *peer,char *ipaddr,uint16_t port,char *retstr)
{ {
argport = juint(item,"port"); argport = juint(item,"port");
ipbits = (uint32_t)calc_ipbits(argipaddr); ipbits = (uint32_t)calc_ipbits(argipaddr);
for (j=0; j<LP_numpeers; j++) if ( LP_peerfind(ipbits,argport) == 0 )
if ( LP_peerinfos[j].ipbits == ipbits && LP_peerinfos[j].port == argport ) _LP_addpeer(LP_numpeers,ipbits,argipaddr,argport,0,0,profit);
{
//printf("(%s) already in slot.%d\n",argipaddr,j);
break;
}
if ( j == LP_numpeers )
_LP_addpeer(j,ipbits,argipaddr,argport,0,0,profit);
} }
} }
} }
@ -97,40 +102,36 @@ char *LP_peers()
char *LP_addpeer(char *ipaddr,uint16_t port,uint32_t gotintro,uint32_t sentintro,double profitmargin) char *LP_addpeer(char *ipaddr,uint16_t port,uint32_t gotintro,uint32_t sentintro,double profitmargin)
{ {
uint32_t i,j,ipbits; char checkip[64]; struct LP_peerinfo *peer; uint32_t j,ipbits; char checkip[64]; struct LP_peerinfo *peer;
ipbits = (uint32_t)calc_ipbits(ipaddr); ipbits = (uint32_t)calc_ipbits(ipaddr);
expand_ipbits(checkip,ipbits); expand_ipbits(checkip,ipbits);
if ( strcmp(checkip,ipaddr) == 0 ) if ( strcmp(checkip,ipaddr) == 0 )
{ {
//printf("LPaddpeer %s\n",ipaddr); //printf("LPaddpeer %s\n",ipaddr);
for (i=0; i<LP_numpeers; i++) if ( (peer= LP_peerfind(ipbits,port)) != 0 )
{
if ( LP_peerinfos[i].ipbits == ipbits && LP_peerinfos[i].port == port )
{ {
if ( gotintro != 0 ) if ( gotintro != 0 )
LP_peerinfos[i].gotintro = gotintro; peer->gotintro = gotintro;
break; if ( peer->errors == 0 )
}
}
if ( i == LP_numpeers )
{
for (j=0; j<LP_numpeers; j++)
{ {
j = rand() % LP_numpeers;
peer = &LP_peerinfos[j]; peer = &LP_peerinfos[j];
//printf("queue notify (%s) from (%s)\n",peer->ipaddr,ipaddr); //printf("queue notify (%s) from (%s)\n",peer->ipaddr,ipaddr);
peer->notify_port = port; peer->notify_port = port;
strcpy(peer->notify_ipaddr,ipaddr); strcpy(peer->notify_ipaddr,ipaddr);
} }
_LP_addpeer(i,ipbits,ipaddr,port,gotintro,sentintro,profitmargin);
} }
else if ( LP_numpeers > 0 ) else
{
for (j=0; j<LP_numpeers; j++)
{ {
j = rand() % LP_numpeers;
peer = &LP_peerinfos[j]; peer = &LP_peerinfos[j];
//printf("queue notify (%s) from (%s)\n",peer->ipaddr,ipaddr); //printf("queue notify (%s) from (%s)\n",peer->ipaddr,ipaddr);
peer->notify_port = port; peer->notify_port = port;
strcpy(peer->notify_ipaddr,ipaddr); strcpy(peer->notify_ipaddr,ipaddr);
} }
_LP_addpeer(LP_numpeers,ipbits,ipaddr,port,gotintro,sentintro,profitmargin);
}
} }
return(LP_peers()); return(LP_peers());
} }
@ -218,7 +219,7 @@ uint64_t LP_privkey_init(char *coin,uint8_t addrtype,char *passphrase,char *wifs
{ {
value = values[i]; value = values[i];
values[i] = 0, used++; values[i] = 0, used++;
LP_addutxo(coin,txid,vout,value,deposittxid,depositvout,depositval,script,coinaddr); LP_addutxo(coin,txid,vout,value,deposittxid,depositvout,depositval,script,coinaddr,LP_peerinfos[0].ipaddr,LP_peerinfos[0].port);
total += value; total += value;
} }
} }

Loading…
Cancel
Save