Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
35f4822425
  1. 20
      basilisk/basilisk.c
  2. 28
      gecko/gecko.c
  3. 16
      gecko/gecko_blocks.c
  4. 2
      iguana/iguana_peers.c
  5. 2
      iguana/main.c

20
basilisk/basilisk.c

@ -86,7 +86,7 @@ uint8_t *basilisk_jsondata(int32_t extraoffset,uint8_t **ptrp,uint8_t *space,int
if ( (hexstr= jstr(sendjson,"data")) != 0 )
{
hexdata = get_dataptr(0,&allocptr,&hexlen,hexspace,sizeof(hexspace),hexstr);
printf("delete data.%s from sendjson\n",hexstr);
//printf("delete data.%s from sendjson\n",hexstr);
jdelete(sendjson,"data");
}
*ptrp = 0;
@ -409,24 +409,6 @@ char *basilisk_standardservice(char *CMD,struct supernet_info *myinfo,bits256 ha
return(jprint(retjson,1));
}
int32_t basilisk_blocksubmit(struct supernet_info *myinfo,struct iguana_info *btcd,struct iguana_info *virt,char *blockstr,bits256 hash2)
{
int32_t datalen; uint8_t *data,space[16384],*allocptr; cJSON *valsobj; char *str;
if ( (data= get_dataptr(sizeof(struct iguana_msghdr) + BASILISK_HDROFFSET,&allocptr,&datalen,space,sizeof(space),blockstr)) != 0 )
{
gecko_blockarrived(myinfo,virt,"127.0.0.1",data,datalen,hash2);
valsobj = cJSON_CreateObject();
jaddnum(valsobj,"fanout",-1);
jaddstr(valsobj,"symbol",virt->symbol);
if ( (str= basilisk_standardservice("BLK",myinfo,hash2,valsobj,blockstr,0)) != 0 )
free(str);
free_json(valsobj);
}
if ( allocptr != 0 )
free(allocptr);
return(0);
}
#include "basilisk_bitcoin.c"
#include "basilisk_nxt.c"
#include "basilisk_ether.c"

28
gecko/gecko.c

@ -39,6 +39,34 @@
#include "gecko_miner.c"
#include "gecko_blocks.c"
int32_t basilisk_blocksubmit(struct supernet_info *myinfo,struct iguana_info *btcd,struct iguana_info *virt,char *blockstr,bits256 hash2)
{
int32_t datalen; uint8_t *data,space[16384],*allocptr; cJSON *valsobj=0,*retjson; char *str,*str2;
if ( (data= get_dataptr(sizeof(struct iguana_msghdr) + BASILISK_HDROFFSET,&allocptr,&datalen,space,sizeof(space),blockstr)) != 0 )
{
if ( (str= gecko_blockarrived(myinfo,virt,"127.0.0.1",data,datalen,hash2)) != 0 )
{
if ( (retjson= cJSON_Parse(str)) != 0 )
{
if ( jobj(retjson,"error") == 0 )
{
valsobj = cJSON_CreateObject();
jaddnum(valsobj,"fanout",-1);
jaddstr(valsobj,"symbol",virt->symbol);
if ( (str2= basilisk_standardservice("BLK",myinfo,hash2,valsobj,blockstr,0)) != 0 )
free(str2);
free_json(valsobj);
}
free_json(retjson);
}
free(str);
}
}
if ( allocptr != 0 )
free(allocptr);
return(0);
}
int32_t iguana_ROallocsize(struct iguana_info *virt)
{
return(virt->chain->zcash != 0 ? sizeof(struct iguana_zblock) : sizeof(struct iguana_block));

16
gecko/gecko_blocks.c

@ -169,7 +169,7 @@ char *gecko_blockarrived(struct supernet_info *myinfo,struct iguana_info *virt,c
{
printf("gecko_blockarrived: duplicate.[%d] txid.%s\n",i,bits256_str(str,txid));
return(clonestr("{\"error\":\"gecko block duplicate txid\"}"));
}
} else printf("%s is new txid\n",bits256_str(str,txid));
}
txdata.zblock.RO.allocsize = iguana_ROallocsize(virt);
if ( iguana_blockvalidate(virt,&valid,(struct iguana_block *)&txdata.zblock,1) < 0 )
@ -213,20 +213,24 @@ char *gecko_blockarrived(struct supernet_info *myinfo,struct iguana_info *virt,c
}
}
prev = block;
for (j=0; j<=i; j++)
for (j=0; j<=i+1; j++)
{
if ( (prev= iguana_blockfind("geckoprev",virt,prev->RO.prev_block)) == 0 )
return(clonestr("{\"error\":\"gecko block mainchain link error\"}"));
if ( prev->protected == 0 || prev->height == (adjacent + 1 - j) )
{
prev->mainchain = 1;
prev->height = (adjacent + 1 - j);
if ( prev->mainchain != 1 )
prev->mainchain = 1;
if ( prev->height != (adjacent + 1 - j) )
prev->height = (adjacent + 1 - j);
if ( prev->height == 0 )
break;
}
else
{
printf("REJECT block: cant change height of protected block: ht.%d vs %d\n",adjacent + 1 - j, prev->height);
return(clonestr("{\"error\":\"gecko block cant override protected block's height\"}"));
}
if ( (prev= iguana_blockfind("geckoprev",virt,prev->RO.prev_block)) == 0 )
return(clonestr("{\"error\":\"gecko block mainchain link error\"}"));
}
txdata.zblock.height = block->height;
txdata.zblock.mainchain = block->mainchain = 1;

2
iguana/iguana_peers.c

@ -463,7 +463,7 @@ int32_t iguana_send(struct iguana_info *coin,struct iguana_peer *addr,uint8_t *s
remains = len;
if ( strncmp(cmdstr+1,"uperNET",strlen("uperNET")) == 0 || strncmp(cmdstr+1,"uperNet",strlen("uperNet")) == 0 )
{
printf(" >>>>>>> send.(%s) %d bytes to %s:%u supernet.%d\n",cmdstr,len,addr->ipaddr,addr->A.port,addr->supernet);
printf(" >>>>>>> send.(%s) crc.%x %d bytes to %s:%u supernet.%d\n",cmdstr,calc_crc32(0,serialized,len),len,addr->ipaddr,addr->A.port,addr->supernet);
}
else if ( addr->msgcounts.verack == 0 && (strcmp(cmdstr,"version") != 0 && strcmp(cmdstr,"ConnectTo") != 0 && strcmp(cmdstr,"verack") != 0) != 0 )
{

2
iguana/main.c

@ -1150,7 +1150,7 @@ void iguana_appletests(struct supernet_info *myinfo)
bitcoin_sharedsecret(myinfo->ctx,hash2,pubkey,33);
printf("secp256k1 elapsed %.3f for %d iterations\n",OS_milliseconds() - startmillis,i);
getchar();**/
if ( 1 && (str= SuperNET_JSON(myinfo,cJSON_Parse("{\"protover\":70002,\"RELAY\":0,\"VALIDATE\":0,\"portp2p\":14631,\"rpc\":14632,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":64,\"endpend\":64,\"services\":129,\"maxpeers\":128,\"newcoin\":\"BTCD\",\"active\":1,\"numhelpers\":4,\"poll\":1}"),0,myinfo->rpcport)) != 0 )
if ( 1 && (str= SuperNET_JSON(myinfo,cJSON_Parse("{\"protover\":70002,\"RELAY\":1,\"VALIDATE\":0,\"portp2p\":14631,\"rpc\":14632,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":64,\"endpend\":64,\"services\":129,\"maxpeers\":128,\"newcoin\":\"BTCD\",\"active\":1,\"numhelpers\":4,\"poll\":1}"),0,myinfo->rpcport)) != 0 )
{
free(str);
if ( 0 && (str= SuperNET_JSON(myinfo,cJSON_Parse("{\"portp2p\":8333,\"RELAY\":0,\"VALIDATE\":0,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":1,\"endpend\":1,\"services\":128,\"maxpeers\":64,\"newcoin\":\"BTC\",\"active\":0,\"numhelpers\":4,\"poll\":100}"),0,myinfo->rpcport)) != 0 )

Loading…
Cancel
Save