Browse Source

Happy happy joy joy

master
Duke Leto 4 years ago
parent
commit
3cb75357a7
  1. 2
      dragon/dragon.h
  2. 31
      dragon/dragon_scripts.c
  3. 34
      dragon/dragon_unspents.c
  4. 5
      dragon/dragon_wallet.c
  5. 2
      dragon/m_stats
  6. 4
      includes/dragon_structs.h

2
dragon/dragon.h

@ -122,7 +122,7 @@ struct supernet_info
uint8_t *pingbuf;
FILE *dexfp;
struct dpow_info *DPOWS[8192]; int32_t numdpows,dpowsock,dexsock,pubsock,repsock,subsock,reqsock;
struct delayedPoW_info dPoW;
//struct delayedPoW_info dPoW;
char bindaddr[64];
char blocktrail_apikey[256];
struct peggy_info *PEGS;

31
dragon/dragon_scripts.c

@ -15,7 +15,6 @@
******************************************************************************/
#include "dragon.h"
#include "exchanges/bitcoin.h"
int32_t bitcoin_pubkeyspend(uint8_t *script,int32_t n,uint8_t pubkey[66])
{
@ -1054,35 +1053,5 @@ uint8_t *dragon_ramchain_scriptdecode(int32_t *metalenp,int32_t *scriptlenp,uint
return(&Kspace[uoffset]);
} else return(0);
}
/*origoffset = ramchain->H.scriptoffset;
if ( type != DRAGON_SCRIPT_STRANGE && type != DRAGON_SCRIPT_DATA && type != DRAGON_SCRIPT_OPRETURN && scriptlen > 0 && script != 0 )
{
if ( Kspace != 0 && ramchain->H.scriptoffset+scriptlen+3 <= rdata->scriptspace-ramchain->H.stacksize )
{
if ( (u->scriptoffset= dragon_ramchain_scriptencode(coin,Kspace,&ramchain->H.scriptoffset,type,script,scriptlen,&pubkeyoffset)) > 0 || type == DRAGON_SCRIPT_76AC )
{
fprintf(stderr,"new offset.%d from scriptlen.%d pubkeyoffset.%d\n",ramchain->H.scriptoffset,scriptlen,pubkeyoffset);
}
//printf("[%d] u%d offset.%u len.%d\n",hdrsi,unspentind,u->scriptoffset,scriptlen);
} else printf("[%d] u%d Kspace.%p scriptspace overflow! %d + %d vs space.%d - stack.%d\n",hdrsi,unspentind,Kspace,ramchain->H.scriptoffset,scriptlen,rdata->scriptspace,ramchain->H.stacksize);
checkscript = dragon_ramchain_scriptdecode(&metalen,&checklen,Kspace,u->type,_script,u->scriptoffset,P[pkind].pubkeyoffset < ramchain->H.scriptoffset ? P[pkind].pubkeyoffset : 0);
if ( checklen != scriptlen || (script != 0 && checkscript != 0 && memcmp(checkscript,script,scriptlen) != 0) )
{
//printf("create script mismatch len.%d vs %d or cmp error.%d\n",scriptlen,checklen,(script!=0&&checkscript!=0)?memcmp(checkscript,script,scriptlen):0);
type = DRAGON_SCRIPT_STRANGE;
} //else printf("RO spendscript match.%d\n",scriptlen);
}
if ( type == DRAGON_SCRIPT_DATA || type == DRAGON_SCRIPT_OPRETURN || type == DRAGON_SCRIPT_STRANGE )
{
if ( script != 0 && scriptlen > 0 )
{
u->scriptoffset = origoffset;
origoffset += dragon_rwvarint32(1,&Kspace[origoffset],(void *)&scriptlen);
memcpy(&Kspace[origoffset],script,scriptlen);
ramchain->H.scriptoffset = origoffset + scriptlen;
}
}
else if ( type == DRAGON_SCRIPT_76AC && pubkeyoffset != 0 && P[pkind].pubkeyoffset == 0 )
P[pkind].pubkeyoffset = pubkeyoffset;*/
#endif

34
dragon/dragon_unspents.c

@ -429,39 +429,7 @@ int32_t dragon_outpt_set(struct dragon_info *coin,struct dragon_outpoint *outpt,
int32_t dragon_datachain_scan(struct supernet_info *myinfo,struct dragon_info *coin,uint8_t rmd160[20])
{
uint64_t deposits,crypto555_payment; struct dragon_outpoint lastpt; uint32_t unspentind; int32_t i,j,num,uheight; struct dragon_bundle *bp; struct dragon_ramchain *ramchain; struct dragon_ramchaindata *rdata; struct dragon_pkhash *P,p; struct dragon_unspent *U,*u; struct dragon_txid *T,*tx;
for (i=num=0; i<coin->bundlescount&&i*coin->chain->bundlesize<coin->firstRTheight; i++)
{
if ( (bp= coin->bundles[i]) != 0 )
{
ramchain = 0;
memset(&lastpt,0,sizeof(lastpt));
if ( dragon_pkhashfind(coin,&ramchain,&deposits,&lastpt,&p,rmd160,i,i) != 0 )
{
if ( ramchain != 0 && (rdata= ramchain->H.data) != 0 )
{
unspentind = lastpt.unspentind;
U = RAMCHAIN_PTR(rdata,Uoffset);
T = RAMCHAIN_PTR(rdata,Toffset);
P = RAMCHAIN_PTR(rdata,Poffset);
while ( unspentind > 0 )
{
tx = &T[U[unspentind].txidind];
u = &U[tx->firstvout];
uheight = dragon_uheight(coin,ramchain->height,T,rdata->numtxids,u);
for (crypto555_payment=j=0; j<tx->numvouts; j++,u++)
{
crypto555_payment = datachain_update(myinfo,0,coin,tx->timestamp,bp,P[u->pkind].rmd160,crypto555_payment,u->type,uheight,(((uint64_t)bp->hdrsi << 32) | unspentind),u->value,u->fileid,u->scriptpos,u->scriptlen,tx->txid,j);
}
num++;
unspentind = U[unspentind].prevunspentind;
}
}
}
}
}
// do a RT scan here
return(num);
return 0;
}
int32_t dragon_RTscanunspents(struct supernet_info *myinfo,struct dragon_info *coin,char *remoteaddr,cJSON *array,uint64_t *spentp,uint64_t *depositsp,struct dragon_outpoint *unspents,int32_t max,uint8_t *rmd160,char *coinaddr,uint8_t *pubkey33,struct dragon_outpoint lastpt,int32_t lastheight)

5
dragon/dragon_wallet.c

@ -1181,7 +1181,9 @@ cJSON *dragon_getinfo(struct supernet_info *myinfo,struct dragon_info *coin)
ZERO_ARGS(bitcoinrpc,getinfo)
{
struct basilisk_item Lptr,*ptr; int32_t incr,i,j,m,n,longest; cJSON *valsobj,*getinfoobj=0,*array,*item,*fullnodes;
//struct basilisk_item Lptr,*ptr; int32_t incr,i,j,m,n,longest; cJSON *valsobj,*getinfoobj=0,*array,*item,*fullnodes;
return(clonestr("{\"error\":\"basilisk_getinfo disabled\"}"));
/*
if ( remoteaddr != 0 )
return(clonestr("{\"error\":\"no remote\"}"));
if ( coin->FULLNODE > 0 || coin->VALIDATENODE > 0 || coin->notarychain >= 0 )
@ -1250,6 +1252,7 @@ ZERO_ARGS(bitcoinrpc,getinfo)
}
}
return(clonestr("{\"error\":\"null basilisk_getinfo\"}"));
*/
}
TWO_STRINGS(bitcoinrpc,setaccount,address,account)

2
dragon/m_stats

@ -1,4 +1,4 @@
#!/bin/sh
# Copyright © 2018-2020 The Hush Developers
gcc -g -o DEXstats -I../crypto555 exchanges/stats.c ../crypto555/cJSON.c ../agents/libcrypto555.a -lcurl -lpthread -lm
$(CC) -g -o DEXstats -I../crypto555 exchanges/stats.c ../crypto555/cJSON.c ../agents/libcrypto555.a -lcurl -lpthread -lm

4
includes/dragon_structs.h

@ -540,7 +540,7 @@ struct dragon_info
double txidfind_totalmillis,txidfind_num,spendtxid_totalmillis,spendtxid_num;
struct dragon_monitorinfo monitoring[256];
int32_t notarychain,didaddresses;
struct datachain_info dPoW;
//struct datachain_info dPoW;
struct dragon_zblock newblock; char *newblockstr;
int32_t relay_RTheights[BASILISK_MAXRELAYS];
struct dragon_blocks blocks; void *mempool; void *mempools[BASILISK_MAXRELAYS];
@ -554,7 +554,7 @@ struct dragon_info
uint64_t estimatedfee;
char seedipaddr[64];
uint32_t lastbesthashtime; bits256 lastbesthash; int32_t lastbestheight;
struct DEXcoin_info DEXinfo;
//struct DEXcoin_info DEXinfo;
struct dragon_block *RTblocks[65536]; uint8_t *RTrawdata[65536]; int32_t RTrecvlens[65536],RTnumtx[65536];
struct dragon_RTtxid *RTdataset; struct dragon_RTaddr *RTaddrs;
struct hashstr_item *alladdresses;

Loading…
Cancel
Save