.
This commit is contained in:
@@ -669,7 +669,7 @@ uint16_t hush_userpass(char *userpass,char *symbol)
|
||||
|
||||
#define is_cJSON_True(json) ((json) != 0 && ((json)->type & 0xff) == cJSON_True)
|
||||
|
||||
char *komodo_issuemethod(char *userpass,char *method,char *params,uint16_t port)
|
||||
char *hush_issuemethod(char *userpass,char *method,char *params,uint16_t port)
|
||||
{
|
||||
//static void *cHandle;
|
||||
char url[512],*retstr=0,*retstr2=0,postdata[8192];
|
||||
@@ -691,7 +691,7 @@ int32_t games_sendrawtransaction(char *rawtx)
|
||||
char *params,*retstr,*hexstr; cJSON *retjson,*resobj; int32_t retval = -1;
|
||||
params = (char *)malloc(strlen(rawtx) + 16);
|
||||
sprintf(params,"[\"%s\"]",rawtx);
|
||||
if ( (retstr= komodo_issuemethod(USERPASS,(char *)"sendrawtransaction",params,GAMES_PORT)) != 0 )
|
||||
if ( (retstr= hush_issuemethod(USERPASS,(char *)"sendrawtransaction",params,GAMES_PORT)) != 0 )
|
||||
{
|
||||
if ( 0 ) // causes 4th level crash
|
||||
{
|
||||
@@ -768,7 +768,7 @@ int32_t games_progress(struct games_state *rs,int32_t waitflag,uint64_t seed,gam
|
||||
if ( fp == 0 )
|
||||
fp = fopen("keystrokes.log","a");
|
||||
sprintf(params,"[\"keystrokes\",\"17\",\"[%%22%s%%22,%%22%s%%22]\"]",Gametxidstr,hexstr);
|
||||
if ( (retstr= komodo_issuemethod(USERPASS,(char *)"cclib",params,GAMES_PORT)) != 0 )
|
||||
if ( (retstr= hush_issuemethod(USERPASS,(char *)"cclib",params,GAMES_PORT)) != 0 )
|
||||
{
|
||||
if ( fp != 0 )
|
||||
{
|
||||
@@ -978,7 +978,7 @@ int32_t games_setplayerdata(struct games_state *rs,char *gametxidstr)
|
||||
else
|
||||
{
|
||||
sprintf(params,"[\"gameinfo\",\"17\",\"[%%22%s%%22]\"]",gametxidstr);
|
||||
filestr = komodo_issuemethod(USERPASS,(char *)"cclib",params,GAMES_PORT);
|
||||
filestr = hush_issuemethod(USERPASS,(char *)"cclib",params,GAMES_PORT);
|
||||
}
|
||||
if ( filestr != 0 )
|
||||
{
|
||||
|
||||
@@ -206,7 +206,7 @@ int32_t issue_games_events(struct games_state *rs,char *gametxidstr,uint32_t eve
|
||||
sprintf(params,"[\"events\",\"17\",\"[%%22%08x%%22,%%22%s%%22,%u]\"]",(uint32_t)c&0xffffffff,gametxidstr,eventid);
|
||||
else if ( sizeof(c) == 8 )
|
||||
sprintf(params,"[\"events\",\"17\",\"[%%22%016llx%%22,%%22%s%%22,%u]\"]",(long long)c,gametxidstr,eventid);
|
||||
if ( (retstr= komodo_issuemethod(USERPASS,(char *)"cclib",params,GAMES_PORT)) != 0 )
|
||||
if ( (retstr= hush_issuemethod(USERPASS,(char *)"cclib",params,GAMES_PORT)) != 0 )
|
||||
{
|
||||
if ( (retjson= cJSON_Parse(retstr)) != 0 )
|
||||
{
|
||||
@@ -237,7 +237,7 @@ int32_t issue_bet(struct games_state *rs,int64_t x,int64_t betsize)
|
||||
x >>= 8;
|
||||
}
|
||||
sprintf(params,"[\"bet\",\"17\",\"[%.8f,%%22%s%%22]\"]",dstr(betsize),hexstr);
|
||||
if ( (retstr= komodo_issuemethod(USERPASS,(char *)"cclib",params,GAMES_PORT)) != 0 )
|
||||
if ( (retstr= hush_issuemethod(USERPASS,(char *)"cclib",params,GAMES_PORT)) != 0 )
|
||||
{
|
||||
if ( (retjson= cJSON_Parse(retstr)) != 0 )
|
||||
{
|
||||
|
||||
@@ -822,7 +822,7 @@ int32_t issue_games_events(struct games_state *rs,char *gametxidstr,uint32_t eve
|
||||
sprintf(params,"[\"events\",\"17\",\"[%%22%08x%%22,%%22%s%%22,%u]\"]",(uint32_t)c&0xffffffff,gametxidstr,eventid);
|
||||
else if ( sizeof(c) == 8 )
|
||||
sprintf(params,"[\"events\",\"17\",\"[%%22%016llx%%22,%%22%s%%22,%u]\"]",(long long)c,gametxidstr,eventid);
|
||||
if ( (retstr= komodo_issuemethod(USERPASS,(char *)"cclib",params,GAMES_PORT)) != 0 )
|
||||
if ( (retstr= hush_issuemethod(USERPASS,(char *)"cclib",params,GAMES_PORT)) != 0 )
|
||||
{
|
||||
if ( (retjson= cJSON_Parse(retstr)) != 0 )
|
||||
{
|
||||
|
||||
@@ -716,7 +716,7 @@ uint16_t hush_userpass(char *userpass,char *symbol)
|
||||
|
||||
#define is_cJSON_True(json) ((json) != 0 && ((json)->type & 0xff) == cJSON_True)
|
||||
|
||||
char *komodo_issuemethod(char *userpass,char *method,char *params,uint16_t port)
|
||||
char *hush_issuemethod(char *userpass,char *method,char *params,uint16_t port)
|
||||
{
|
||||
//static void *cHandle;
|
||||
char url[512],*retstr=0,*retstr2=0,postdata[8192];
|
||||
@@ -740,7 +740,7 @@ int32_t rogue_sendrawtransaction(char *rawtx)
|
||||
char *params,*retstr,*hexstr; cJSON *retjson,*resobj; int32_t retval = -1;
|
||||
params = (char *)malloc(strlen(rawtx) + 16);
|
||||
sprintf(params,"[\"%s\"]",rawtx);
|
||||
if ( (retstr= komodo_issuemethod(USERPASS,"sendrawtransaction",params,ROGUE_PORT)) != 0 )
|
||||
if ( (retstr= hush_issuemethod(USERPASS,"sendrawtransaction",params,ROGUE_PORT)) != 0 )
|
||||
{
|
||||
if ( 0 ) // causes 4th level crash
|
||||
{
|
||||
@@ -805,7 +805,7 @@ int32_t rogue_progress(struct rogue_state *rs,int32_t waitflag,uint64_t seed,cha
|
||||
if ( 0 && (pastkeys= rogue_keystrokesload(&numpastkeys,seed,1)) != 0 )
|
||||
{
|
||||
sprintf(params,"[\"extract\",\"17\",\"[%%22%s%%22]\"]",Gametxidstr);
|
||||
if ( (retstr= komodo_issuemethod(USERPASS,"cclib",params,ROGUE_PORT)) != 0 )
|
||||
if ( (retstr= hush_issuemethod(USERPASS,"cclib",params,ROGUE_PORT)) != 0 )
|
||||
{
|
||||
if ( (retjson= cJSON_Parse(retstr)) != 0 )
|
||||
{
|
||||
@@ -847,7 +847,7 @@ int32_t rogue_progress(struct rogue_state *rs,int32_t waitflag,uint64_t seed,cha
|
||||
if ( fp == 0 )
|
||||
fp = fopen("keystrokes.log","a");
|
||||
sprintf(params,"[\"keystrokes\",\"17\",\"[%%22%s%%22,%%22%s%%22]\"]",Gametxidstr,hexstr);
|
||||
if ( (retstr= komodo_issuemethod(USERPASS,"cclib",params,ROGUE_PORT)) != 0 )
|
||||
if ( (retstr= hush_issuemethod(USERPASS,"cclib",params,ROGUE_PORT)) != 0 )
|
||||
{
|
||||
if ( fp != 0 )
|
||||
{
|
||||
@@ -905,7 +905,7 @@ int32_t rogue_setplayerdata(struct rogue_state *rs,char *gametxidstr)
|
||||
else
|
||||
{
|
||||
sprintf(params,"[\"gameinfo\",\"17\",\"[%%22%s%%22]\"]",gametxidstr);
|
||||
filestr = komodo_issuemethod(USERPASS,"cclib",params,ROGUE_PORT);
|
||||
filestr = hush_issuemethod(USERPASS,"cclib",params,ROGUE_PORT);
|
||||
}
|
||||
if ( filestr != 0 )
|
||||
{
|
||||
|
||||
20
src/hush.h
20
src/hush.h
@@ -510,7 +510,7 @@ void hush_stateupdate(int32_t height,uint8_t notarypubs[][33],uint8_t numnotarie
|
||||
}
|
||||
}
|
||||
|
||||
int32_t komodo_validate_chain(uint256 srchash,int32_t notarized_height)
|
||||
int32_t hush_validate_chain(uint256 srchash,int32_t notarized_height)
|
||||
{
|
||||
static int32_t last_rewind; int32_t rewindtarget; CBlockIndex *pindex; struct hush_state *sp; char symbol[HUSH_SMART_CHAIN_MAXLEN],dest[HUSH_SMART_CHAIN_MAXLEN];
|
||||
if ( (sp= hush_stateptr(symbol,dest)) == 0 )
|
||||
@@ -535,7 +535,7 @@ int32_t komodo_validate_chain(uint256 srchash,int32_t notarized_height)
|
||||
} else return(1);
|
||||
}
|
||||
|
||||
int32_t komodo_voutupdate(bool fJustCheck,int32_t *isratificationp,int32_t notaryid,uint8_t *scriptbuf,int32_t scriptlen,int32_t height,uint256 txhash,int32_t i,int32_t j,uint64_t *voutmaskp,int32_t *specialtxp,int32_t *notarizedheightp,uint64_t value,int32_t notarized,uint64_t signedmask,uint32_t timestamp)
|
||||
int32_t hush_voutupdate(bool fJustCheck,int32_t *isratificationp,int32_t notaryid,uint8_t *scriptbuf,int32_t scriptlen,int32_t height,uint256 txhash,int32_t i,int32_t j,uint64_t *voutmaskp,int32_t *specialtxp,int32_t *notarizedheightp,uint64_t value,int32_t notarized,uint64_t signedmask,uint32_t timestamp)
|
||||
{
|
||||
static uint256 zero; static FILE *signedfp;
|
||||
int32_t opretlen,nid,offset,k,MoMdepth,matched,len = 0; uint256 MoM,srchash,desttxid; uint8_t crypto555[33]; struct hush_state *sp; char symbol[HUSH_SMART_CHAIN_MAXLEN],dest[HUSH_SMART_CHAIN_MAXLEN];
|
||||
@@ -598,11 +598,7 @@ int32_t komodo_voutupdate(bool fJustCheck,int32_t *isratificationp,int32_t notar
|
||||
matched = 0;
|
||||
if ( SMART_CHAIN_SYMBOL[0] == 0 )
|
||||
{
|
||||
if ( strcmp("KMD",(char *)&scriptbuf[len+32 * 2 + 4]) == 0 )
|
||||
matched = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
if ( scriptbuf[len] == 'K' )
|
||||
{
|
||||
//fprintf(stderr,"i.%d j.%d KV OPRET len.%d %.8f\n",i,j,opretlen,dstr(value));
|
||||
@@ -631,7 +627,7 @@ int32_t komodo_voutupdate(bool fJustCheck,int32_t *isratificationp,int32_t notar
|
||||
if ( matched != 0 )
|
||||
len += dragon_rwbignum(0,&scriptbuf[len],32,(uint8_t *)&desttxid);
|
||||
if ( matched != 0 )
|
||||
validated = komodo_validate_chain(srchash,*notarizedheightp);
|
||||
validated = hush_validate_chain(srchash,*notarizedheightp);
|
||||
else validated = 1;
|
||||
// Any notarization that is matched and has a decodable op_return is enough to pay notaries. Otherwise bugs!
|
||||
if ( fJustCheck && matched != 0 )
|
||||
@@ -775,12 +771,6 @@ int32_t komodo_voutupdate(bool fJustCheck,int32_t *isratificationp,int32_t notar
|
||||
return(notaryid);
|
||||
}
|
||||
|
||||
/*int32_t komodo_isratify(int32_t isspecial,int32_t numvalid)
|
||||
{
|
||||
if ( isspecial != 0 && numvalid >= HUSH_MINRATIFY )
|
||||
return(1);
|
||||
else return(0);
|
||||
}*/
|
||||
|
||||
// Special tx have vout[0] -> CRYPTO555 address
|
||||
// with more than HUSH_MINRATIFY pay2pubkey outputs -> ratify
|
||||
@@ -938,7 +928,7 @@ int32_t hush_connectblock(bool fJustCheck, CBlockIndex *pindex,CBlock& block)
|
||||
if ( len >= sizeof(uint32_t) && len <= sizeof(scriptbuf) )
|
||||
{
|
||||
memcpy(scriptbuf,(uint8_t *)&block.vtx[i].vout[j].scriptPubKey[0],len);
|
||||
notaryid = komodo_voutupdate(fJustCheck,&isratification,notaryid,scriptbuf,len,height,txhash,i,j,&voutmask,&specialtx,¬arizedheight,(uint64_t)block.vtx[i].vout[j].nValue,notarized,signedmask,(uint32_t)chainActive.LastTip()->GetBlockTime());
|
||||
notaryid = hush_voutupdate(fJustCheck,&isratification,notaryid,scriptbuf,len,height,txhash,i,j,&voutmask,&specialtx,¬arizedheight,(uint64_t)block.vtx[i].vout[j].nValue,notarized,signedmask,(uint32_t)chainActive.LastTip()->GetBlockTime());
|
||||
if ( fJustCheck && notaryid == -2 )
|
||||
{
|
||||
// We see a valid notarisation here, save its location.
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
#include "sietch.h"
|
||||
|
||||
int32_t hush_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestamp);
|
||||
int32_t komodo_electednotary(int32_t *numnotariesp,uint8_t *pubkey33,int32_t height,uint32_t timestamp);
|
||||
int32_t komodo_voutupdate(bool fJustCheck,int32_t *isratificationp,int32_t notaryid,uint8_t *scriptbuf,int32_t scriptlen,int32_t height,uint256 txhash,int32_t i,int32_t j,uint64_t *voutmaskp,int32_t *specialtxp,int32_t *notarizedheightp,uint64_t value,int32_t notarized,uint64_t signedmask,uint32_t timestamp);
|
||||
int32_t hush_electednotary(int32_t *numnotariesp,uint8_t *pubkey33,int32_t height,uint32_t timestamp);
|
||||
int32_t hush_voutupdate(bool fJustCheck,int32_t *isratificationp,int32_t notaryid,uint8_t *scriptbuf,int32_t scriptlen,int32_t height,uint256 txhash,int32_t i,int32_t j,uint64_t *voutmaskp,int32_t *specialtxp,int32_t *notarizedheightp,uint64_t value,int32_t notarized,uint64_t signedmask,uint32_t timestamp);
|
||||
bool EnsureWalletIsAvailable(bool avoidException);
|
||||
extern bool fRequestShutdown;
|
||||
extern CScript HUSH_EARLYTXID_SCRIPTPUB;
|
||||
@@ -367,9 +367,8 @@ char *curl_post(CURL **cHandlep,char *url,char *userpass,char *postfields,char *
|
||||
return(chunk.memory);
|
||||
}
|
||||
|
||||
char *komodo_issuemethod(char *userpass,char *method,char *params,uint16_t port)
|
||||
char *hush_issuemethod(char *userpass,char *method,char *params,uint16_t port)
|
||||
{
|
||||
//static void *cHandle;
|
||||
char url[512],*retstr=0,*retstr2=0,postdata[8192];
|
||||
if ( params == 0 || params[0] == 0 )
|
||||
params = (char *)"[]";
|
||||
@@ -401,7 +400,7 @@ int32_t notarizedtxid_height(char *dest,char *txidstr,int32_t *hushnotarized_hei
|
||||
}
|
||||
if ( userpass[0] != 0 )
|
||||
{
|
||||
if ( (jsonstr= komodo_issuemethod(userpass,(char *)"getinfo",params,port)) != 0 )
|
||||
if ( (jsonstr= hush_issuemethod(userpass,(char *)"getinfo",params,port)) != 0 )
|
||||
{
|
||||
//printf("(%s)\n",jsonstr);
|
||||
if ( (json= cJSON_Parse(jsonstr)) != 0 )
|
||||
@@ -416,7 +415,7 @@ int32_t notarizedtxid_height(char *dest,char *txidstr,int32_t *hushnotarized_hei
|
||||
free(jsonstr);
|
||||
}
|
||||
sprintf(params,"[\"%s\", 1]",txidstr);
|
||||
if ( (jsonstr= komodo_issuemethod(userpass,(char *)"getrawtransaction",params,port)) != 0 )
|
||||
if ( (jsonstr= hush_issuemethod(userpass,(char *)"getrawtransaction",params,port)) != 0 )
|
||||
{
|
||||
//printf("(%s)\n",jsonstr);
|
||||
if ( (json= cJSON_Parse(jsonstr)) != 0 )
|
||||
@@ -437,7 +436,7 @@ int32_t notarizedtxid_height(char *dest,char *txidstr,int32_t *hushnotarized_hei
|
||||
return(txid_height);
|
||||
}
|
||||
|
||||
int32_t komodo_verifynotarizedscript(int32_t height,uint8_t *script,int32_t len,uint256 NOTARIZED_HASH)
|
||||
int32_t hush_verifynotarizedscript(int32_t height,uint8_t *script,int32_t len,uint256 NOTARIZED_HASH)
|
||||
{
|
||||
int32_t i; uint256 hash; char params[256];
|
||||
for (i=0; i<32; i++)
|
||||
@@ -457,7 +456,7 @@ void hush_reconsiderblock(uint256 blockhash)
|
||||
{
|
||||
char params[256],*jsonstr,*hexstr;
|
||||
sprintf(params,"[\"%s\"]",blockhash.ToString().c_str());
|
||||
if ( (jsonstr= komodo_issuemethod(ASSETCHAINS_USERPASS,(char *)"reconsiderblock",params,ASSETCHAINS_RPCPORT)) != 0 )
|
||||
if ( (jsonstr= hush_issuemethod(ASSETCHAINS_USERPASS,(char *)"reconsiderblock",params,ASSETCHAINS_RPCPORT)) != 0 )
|
||||
{
|
||||
//fprintf(stderr,"hush_reconsiderblock.(%s) (%s %u) -> (%s)\n",params,ASSETCHAINS_USERPASS,ASSETCHAINS_RPCPORT,jsonstr);
|
||||
free(jsonstr);
|
||||
@@ -475,34 +474,30 @@ int32_t hush_verifynotarization(char *symbol,char *dest,int32_t height,int32_t N
|
||||
sprintf(¶ms[i*2 + 2],"%02x",((uint8_t *)&NOTARIZED_DESTTXID)[31-i]);
|
||||
strcat(params,"\", 1]");*/
|
||||
sprintf(params,"[\"%s\", 1]",NOTARIZED_DESTTXID.ToString().c_str());
|
||||
if ( strcmp(symbol,SMART_CHAIN_SYMBOL[0]==0?(char *)"KMD":SMART_CHAIN_SYMBOL) != 0 )
|
||||
if ( strcmp(symbol,SMART_CHAIN_SYMBOL[0]==0?(char *)"HUSH3":SMART_CHAIN_SYMBOL) != 0 )
|
||||
return(0);
|
||||
if ( 0 && SMART_CHAIN_SYMBOL[0] != 0 )
|
||||
printf("[%s] src.%s dest.%s params.[%s] ht.%d notarized.%d\n",SMART_CHAIN_SYMBOL,symbol,dest,params,height,NOTARIZED_HEIGHT);
|
||||
if ( strcmp(dest,"KMD") == 0 )
|
||||
if ( strcmp(dest,"HUSH3") == 0 )
|
||||
{
|
||||
if ( HUSHUSERPASS[0] != 0 )
|
||||
{
|
||||
if ( SMART_CHAIN_SYMBOL[0] != 0 )
|
||||
{
|
||||
jsonstr = komodo_issuemethod(HUSHUSERPASS,(char *)"getrawtransaction",params,HUSH3_PORT);
|
||||
jsonstr = hush_issuemethod(HUSHUSERPASS,(char *)"getrawtransaction",params,HUSH3_PORT);
|
||||
//printf("userpass.(%s) got (%s)\n",HUSHUSERPASS,jsonstr);
|
||||
}
|
||||
}//else jsonstr = _dex_getrawtransaction();
|
||||
else return(0); // need universal way to issue DEX* API, since notaries mine most blocks, this ok
|
||||
}
|
||||
else if ( strcmp(dest,"BTC") == 0 )
|
||||
{
|
||||
} else if ( strcmp(dest,"BTC") == 0 ) {
|
||||
if ( BTCUSERPASS[0] != 0 )
|
||||
{
|
||||
//printf("BTCUSERPASS.(%s)\n",BTCUSERPASS);
|
||||
jsonstr = komodo_issuemethod(BTCUSERPASS,(char *)"getrawtransaction",params,8332);
|
||||
jsonstr = hush_issuemethod(BTCUSERPASS,(char *)"getrawtransaction",params,8332);
|
||||
}
|
||||
//else jsonstr = _dex_getrawtransaction();
|
||||
else return(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
printf("[%s] verifynotarization error unexpected dest.(%s)\n",SMART_CHAIN_SYMBOL,dest);
|
||||
return(-1);
|
||||
}
|
||||
@@ -532,7 +527,7 @@ int32_t hush_verifynotarization(char *symbol,char *dest,int32_t height,int32_t N
|
||||
script += 2;
|
||||
len -= 2;
|
||||
}
|
||||
retval = komodo_verifynotarizedscript(height,script,len,NOTARIZED_HASH);
|
||||
retval = hush_verifynotarizedscript(height,script,len,NOTARIZED_HASH);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -560,7 +555,7 @@ CScript hush_makeopret(CBlock *pblock, bool fNew)
|
||||
uint256 hash; char params[128],*hexstr,*jsonstr; cJSON *result; int32_t i; uint8_t revbuf[32];
|
||||
memset(&hash,0,sizeof(hash));
|
||||
sprintf(params,"[%d]",height);
|
||||
if ( (jsonstr= komodo_issuemethod(HUSHUSERPASS,(char *)"getblockhash",params,BITCOIND_RPCPORT)) != 0 )
|
||||
if ( (jsonstr= hush_issuemethod(HUSHUSERPASS,(char *)"getblockhash",params,BITCOIND_RPCPORT)) != 0 )
|
||||
{
|
||||
if ( (result= cJSON_Parse(jsonstr)) != 0 )
|
||||
{
|
||||
@@ -613,7 +608,7 @@ uint64_t komodo_seed(int32_t height)
|
||||
return(seed);
|
||||
}
|
||||
|
||||
uint32_t komodo_txtime(CScript &opret,uint64_t *valuep,uint256 hash, int32_t n, char *destaddr)
|
||||
uint32_t hush_txtime(CScript &opret,uint64_t *valuep,uint256 hash, int32_t n, char *destaddr)
|
||||
{
|
||||
CTxDestination address; CTransaction tx; uint256 hashBlock; int32_t numvouts;
|
||||
*valuep = 0;
|
||||
@@ -644,32 +639,6 @@ CBlockIndex *hush_getblockindex(uint256 hash)
|
||||
return((it != mapBlockIndex.end()) ? it->second : NULL);
|
||||
}
|
||||
|
||||
uint32_t komodo_txtime2(uint64_t *valuep,uint256 hash,int32_t n,char *destaddr)
|
||||
{
|
||||
CTxDestination address; CBlockIndex *pindex; CTransaction tx; uint256 hashBlock; uint32_t txtime = 0;
|
||||
*valuep = 0;
|
||||
if (!GetTransaction(hash, tx,
|
||||
#ifndef HUSH_ZCASH
|
||||
Params().GetConsensus(),
|
||||
#endif
|
||||
hashBlock, true))
|
||||
{
|
||||
//fprintf(stderr,"ERROR: %s/v%d locktime.%u\n",hash.ToString().c_str(),n,(uint32_t)tx.nLockTime);
|
||||
return(0);
|
||||
}
|
||||
if ( (pindex= hush_getblockindex(hashBlock)) != 0 )
|
||||
txtime = pindex->nTime;
|
||||
else txtime = tx.nLockTime;
|
||||
//fprintf(stderr,"%s/v%d locktime.%u\n",hash.ToString().c_str(),n,(uint32_t)tx.nLockTime);
|
||||
if ( n < tx.vout.size() )
|
||||
{
|
||||
*valuep = tx.vout[n].nValue;
|
||||
if (ExtractDestination(tx.vout[n].scriptPubKey, address))
|
||||
strcpy(destaddr,CBitcoinAddress(address).ToString().c_str());
|
||||
}
|
||||
return(txtime);
|
||||
}
|
||||
|
||||
bool hush_checkopret(CBlock *pblock, CScript &merkleroot)
|
||||
{
|
||||
merkleroot = pblock->vtx.back().vout.back().scriptPubKey;
|
||||
@@ -913,7 +882,7 @@ void komodo_index2pubkey33(uint8_t *pubkey33,CBlockIndex *pindex,int32_t height)
|
||||
}
|
||||
}
|
||||
fprintf(stderr,"komodo_minerid height.%d null pindex\n",height);
|
||||
return(komodo_electednotary(&numnotaries,pubkey33,height,timestamp));
|
||||
return(hush_electednotary(&numnotaries,pubkey33,height,timestamp));
|
||||
}*/
|
||||
|
||||
int32_t komodo_eligiblenotary(uint8_t pubkeys[66][33],int32_t *mids,uint32_t blocktimes[66],int32_t *nonzpkeysp,int32_t height)
|
||||
@@ -1029,7 +998,7 @@ int32_t hush_checkpoint(int32_t *notarized_heightp,int32_t nHeight,uint256 hash)
|
||||
int32_t notarized_height,MoMdepth; uint256 MoM,notarized_hash,notarized_desttxid; CBlockIndex *notary,*pindex;
|
||||
if ( (pindex= chainActive.LastTip()) == 0 )
|
||||
return(-1);
|
||||
notarized_height = komodo_notarizeddata(pindex->GetHeight(),¬arized_hash,¬arized_desttxid);
|
||||
notarized_height = hush_notarizeddata(pindex->GetHeight(),¬arized_hash,¬arized_desttxid);
|
||||
*notarized_heightp = notarized_height;
|
||||
BlockMap::const_iterator it;
|
||||
if ( notarized_height >= 0 && notarized_height <= pindex->GetHeight() && (it = mapBlockIndex.find(notarized_hash)) != mapBlockIndex.end() && (notary = it->second) != NULL )
|
||||
@@ -1282,7 +1251,7 @@ int8_t hush_segid(int32_t nocache,int32_t height)
|
||||
{
|
||||
txid = block.vtx[txn_count-1].vin[0].prevout.hash;
|
||||
vout = block.vtx[txn_count-1].vin[0].prevout.n;
|
||||
txtime = komodo_txtime(opret,&value,txid,vout,destaddr);
|
||||
txtime = hush_txtime(opret,&value,txid,vout,destaddr);
|
||||
if ( ExtractDestination(block.vtx[txn_count-1].vout[0].scriptPubKey,voutaddress) )
|
||||
{
|
||||
strcpy(voutaddr,CBitcoinAddress(voutaddress).ToString().c_str());
|
||||
@@ -1493,7 +1462,7 @@ int32_t hush_getnotarizedheight(uint32_t timestamp,int32_t height, uint8_t *scri
|
||||
if ( len >= sizeof(uint32_t) && len <= sizeof(scriptbuf) )
|
||||
{
|
||||
memcpy(scriptbuf,script,len);
|
||||
if ( komodo_voutupdate(true,&isratification,0,scriptbuf,len,height,uint256(),1,1,&voutmask,&specialtx,¬arizedheight,0,1,0,timestamp) != -2 )
|
||||
if ( hush_voutupdate(true,&isratification,0,scriptbuf,len,height,uint256(),1,1,&voutmask,&specialtx,¬arizedheight,0,1,0,timestamp) != -2 )
|
||||
{
|
||||
fprintf(stderr, "<<<<<<INVALID NOTARIZATION ht.%i\n",notarizedheight);
|
||||
return(0);
|
||||
|
||||
@@ -556,7 +556,7 @@ uint32_t hush_heightstamp(int32_t height);
|
||||
int64_t komodo_pricemult(int32_t ind);
|
||||
int32_t komodo_priceget(int64_t *buf64,int32_t ind,int32_t height,int32_t numblocks);
|
||||
int32_t hush_currentheight();
|
||||
int32_t komodo_notarized_bracket(struct notarized_checkpoint *nps[2],int32_t height);
|
||||
int32_t hush_notarized_bracket(struct notarized_checkpoint *nps[2],int32_t height);
|
||||
arith_uint256 komodo_adaptivepow_target(int32_t height,arith_uint256 bnTarget,uint32_t nTime);
|
||||
bool hush_hardfork_active(uint32_t time);
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ struct hush_event *hush_eventadd(struct hush_state *sp,int32_t height,char *symb
|
||||
struct hush_event *ep=0; uint16_t len = (uint16_t)(sizeof(*ep) + datalen);
|
||||
if ( sp != 0 && SMART_CHAIN_SYMBOL[0] != 0 )
|
||||
{
|
||||
portable_mutex_lock(&komodo_mutex);
|
||||
portable_mutex_lock(&hush_mutex);
|
||||
ep = (struct hush_event *)calloc(1,len);
|
||||
ep->len = len;
|
||||
ep->height = height;
|
||||
@@ -35,7 +35,7 @@ struct hush_event *hush_eventadd(struct hush_state *sp,int32_t height,char *symb
|
||||
memcpy(ep->space,data,datalen);
|
||||
sp->Hush_events = (struct hush_event **)realloc(sp->Hush_events,(1 + sp->Hush_numeventss) * sizeof(*sp->Hush_events));
|
||||
sp->Hush_events[sp->Hush_numeventss++] = ep;
|
||||
portable_mutex_unlock(&komodo_mutex);
|
||||
portable_mutex_unlock(&hush_mutex);
|
||||
}
|
||||
return(ep);
|
||||
}
|
||||
@@ -62,7 +62,7 @@ void hush_eventadd_notarized(struct hush_state *sp,char *symbol,int32_t height,c
|
||||
strncpy(N.dest,dest,sizeof(N.dest)-1);
|
||||
hush_eventadd(sp,height,symbol,HUSH_EVENT_NOTARIZED,(uint8_t *)&N,sizeof(N));
|
||||
if ( sp != 0 )
|
||||
komodo_notarized_update(sp,height,notarizedheight,notarized_hash,notarized_desttxid,MoM,MoMdepth);
|
||||
hush_notarized_update(sp,height,notarizedheight,notarized_hash,notarized_desttxid,MoM,MoMdepth);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ void hush_eventadd_pubkeys(struct hush_state *sp,char *symbol,int32_t height,uin
|
||||
memcpy(P.pubkeys,pubkeys,33 * num);
|
||||
hush_eventadd(sp,height,symbol,HUSH_EVENT_RATIFY,(uint8_t *)&P,(int32_t)(sizeof(P.num) + 33 * num));
|
||||
if ( sp != 0 )
|
||||
komodo_notarysinit(height,pubkeys,num);
|
||||
hush_notarysinit(height,pubkeys,num);
|
||||
}
|
||||
|
||||
void hush_eventadd_pricefeed(struct hush_state *sp,char *symbol,int32_t height,uint32_t *prices,uint8_t num)
|
||||
|
||||
@@ -65,10 +65,10 @@ void pax_keyset(uint8_t *buf,uint256 txid,uint16_t vout,uint8_t type)
|
||||
struct pax_transaction *komodo_paxfind(uint256 txid,uint16_t vout,uint8_t type)
|
||||
{
|
||||
struct pax_transaction *pax; uint8_t buf[35];
|
||||
pthread_mutex_lock(&komodo_mutex);
|
||||
pthread_mutex_lock(&hush_mutex);
|
||||
pax_keyset(buf,txid,vout,type);
|
||||
HASH_FIND(hh,PAX,buf,sizeof(buf),pax);
|
||||
pthread_mutex_unlock(&komodo_mutex);
|
||||
pthread_mutex_unlock(&hush_mutex);
|
||||
return(pax);
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ struct pax_transaction *komodo_paxfinds(uint256 txid,uint16_t vout)
|
||||
struct pax_transaction *komodo_paxmark(int32_t height,uint256 txid,uint16_t vout,uint8_t type,int32_t mark)
|
||||
{
|
||||
struct pax_transaction *pax; uint8_t buf[35];
|
||||
pthread_mutex_lock(&komodo_mutex);
|
||||
pthread_mutex_lock(&hush_mutex);
|
||||
pax_keyset(buf,txid,vout,type);
|
||||
HASH_FIND(hh,PAX,buf,sizeof(buf),pax);
|
||||
if ( pax == 0 )
|
||||
@@ -104,16 +104,16 @@ struct pax_transaction *komodo_paxmark(int32_t height,uint256 txid,uint16_t vout
|
||||
// printf("mark ht.%d %.8f %.8f\n",pax->height,dstr(pax->komodoshis),dstr(pax->fiatoshis));
|
||||
|
||||
}
|
||||
pthread_mutex_unlock(&komodo_mutex);
|
||||
pthread_mutex_unlock(&hush_mutex);
|
||||
return(pax);
|
||||
}
|
||||
|
||||
void komodo_paxdelete(struct pax_transaction *pax)
|
||||
{
|
||||
return; // breaks when out of order
|
||||
pthread_mutex_lock(&komodo_mutex);
|
||||
pthread_mutex_lock(&hush_mutex);
|
||||
HASH_DELETE(hh,PAX,pax);
|
||||
pthread_mutex_unlock(&komodo_mutex);
|
||||
pthread_mutex_unlock(&hush_mutex);
|
||||
}
|
||||
|
||||
void komodo_gateway_deposit(char *coinaddr,uint64_t value,char *symbol,uint64_t fiatoshis,uint8_t *rmd160,uint256 txid,uint16_t vout,uint8_t type,int32_t height,int32_t otherheight,char *source,int32_t approved) // assetchain context
|
||||
@@ -124,7 +124,7 @@ void komodo_gateway_deposit(char *coinaddr,uint64_t value,char *symbol,uint64_t
|
||||
//if ( strcmp(symbol,SMART_CHAIN_SYMBOL) != 0 )
|
||||
// return;
|
||||
sp = hush_stateptr(str,dest);
|
||||
pthread_mutex_lock(&komodo_mutex);
|
||||
pthread_mutex_lock(&hush_mutex);
|
||||
pax_keyset(buf,txid,vout,type);
|
||||
HASH_FIND(hh,PAX,buf,sizeof(buf),pax);
|
||||
if ( pax == 0 )
|
||||
@@ -143,7 +143,7 @@ void komodo_gateway_deposit(char *coinaddr,uint64_t value,char *symbol,uint64_t
|
||||
printf(" v.%d [%s] kht.%d ht.%d create pax.%p symbol.%s source.%s\n",vout,SMART_CHAIN_SYMBOL,height,otherheight,pax,symbol,source);
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&komodo_mutex);
|
||||
pthread_mutex_unlock(&hush_mutex);
|
||||
if ( coinaddr != 0 )
|
||||
{
|
||||
strcpy(pax->coinaddr,coinaddr);
|
||||
@@ -791,12 +791,12 @@ int32_t hush_check_deposit(int32_t height,const CBlock& block,uint32_t prevtime)
|
||||
else if ( height > 814000 )
|
||||
{
|
||||
script = (uint8_t *)&block.vtx[0].vout[0].scriptPubKey[0];
|
||||
//int32_t notary = komodo_electednotary(&num,script+1,height,0);
|
||||
//if ( (-1 * (komodo_electednotary(&num,script+1,height,0) >= 0) * (height > 1000000)) < 0 )
|
||||
//int32_t notary = hush_electednotary(&num,script+1,height,0);
|
||||
//if ( (-1 * (hush_electednotary(&num,script+1,height,0) >= 0) * (height > 1000000)) < 0 )
|
||||
// fprintf(stderr, ">>>>>>> FAILED BLOCK.%d notary.%d insync.%d\n",height,notary,HUSH_INSYNC);
|
||||
//else
|
||||
// fprintf(stderr, "<<<<<<< VALID BLOCK.%d notary.%d insync.%d\n",height,notary,HUSH_INSYNC);
|
||||
return(-1 * (komodo_electednotary(&num,script+1,height,0) >= 0) * (height > 1000000));
|
||||
return(-1 * (hush_electednotary(&num,script+1,height,0) >= 0) * (height > 1000000));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -22,8 +22,8 @@ uint32_t hush_heightstamp(int32_t height);
|
||||
void hush_stateupdate(int32_t height,uint8_t notarypubs[][33],uint8_t numnotaries,uint8_t notaryid,uint256 txhash,uint64_t voutmask,uint8_t numvouts,uint32_t *pvals,uint8_t numpvals,int32_t kheight,uint32_t ktime,uint64_t opretvalue,uint8_t *opretbuf,uint16_t opretlen,uint16_t vout,uint256 MoM,int32_t MoMdepth);
|
||||
void hush_init(int32_t height);
|
||||
int32_t hush_MoMdata(int32_t *notarized_htp,uint256 *MoMp,uint256 *kmdtxidp,int32_t nHeight,uint256 *MoMoMp,int32_t *MoMoMoffsetp,int32_t *MoMoMdepthp,int32_t *kmdstartip,int32_t *kmdendip);
|
||||
int32_t komodo_notarizeddata(int32_t nHeight,uint256 *notarized_hashp,uint256 *notarized_desttxidp);
|
||||
char *komodo_issuemethod(char *userpass,char *method,char *params,uint16_t port);
|
||||
int32_t hush_notarizeddata(int32_t nHeight,uint256 *notarized_hashp,uint256 *notarized_desttxidp);
|
||||
char *hush_issuemethod(char *userpass,char *method,char *params,uint16_t port);
|
||||
void hush_init(int32_t height);
|
||||
int32_t hush_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33,uint32_t timestamp);
|
||||
int32_t komodo_isrealtime(int32_t *kmdheightp);
|
||||
@@ -32,7 +32,7 @@ int32_t hush_longestchain();
|
||||
uint64_t komodo_maxallowed(int32_t baseid);
|
||||
int32_t komodo_bannedset(int32_t *indallvoutsp,uint256 *array,int32_t max);
|
||||
int32_t hush_checkvout(int32_t vout,int32_t k,int32_t indallvouts);
|
||||
pthread_mutex_t komodo_mutex,staked_mutex;
|
||||
pthread_mutex_t hush_mutex;
|
||||
|
||||
#define KOMODO_ELECTION_GAP 2000 //((SMART_CHAIN_SYMBOL[0] == 0) ? 2000 : 100)
|
||||
#define HUSH_SMART_CHAIN_MAXLEN 65
|
||||
|
||||
@@ -120,7 +120,7 @@ int32_t hush_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestamp)
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int32_t komodo_electednotary(int32_t *numnotariesp,uint8_t *pubkey33,int32_t height,uint32_t timestamp)
|
||||
int32_t hush_electednotary(int32_t *numnotariesp,uint8_t *pubkey33,int32_t height,uint32_t timestamp)
|
||||
{
|
||||
int32_t i,n; uint8_t pubkeys[64][33];
|
||||
n = hush_notaries(pubkeys,height,timestamp);
|
||||
@@ -133,22 +133,7 @@ int32_t komodo_electednotary(int32_t *numnotariesp,uint8_t *pubkey33,int32_t hei
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int32_t komodo_ratify_threshold(int32_t height,uint64_t signedmask)
|
||||
{
|
||||
int32_t htind,numnotaries,i,wt = 0;
|
||||
htind = height / KOMODO_ELECTION_GAP;
|
||||
if ( htind >= HUSH_MAXBLOCKS / KOMODO_ELECTION_GAP )
|
||||
htind = (HUSH_MAXBLOCKS / KOMODO_ELECTION_GAP) - 1;
|
||||
numnotaries = Pubkeys[htind].numnotaries;
|
||||
for (i=0; i<numnotaries; i++)
|
||||
if ( ((1LL << i) & signedmask) != 0 )
|
||||
wt++;
|
||||
if ( wt > (numnotaries >> 1) || (wt > 7 && (signedmask & 1) != 0) )
|
||||
return(1);
|
||||
else return(0);
|
||||
}
|
||||
|
||||
void komodo_notarysinit(int32_t origheight,uint8_t pubkeys[64][33],int32_t num)
|
||||
void hush_notarysinit(int32_t origheight,uint8_t pubkeys[64][33],int32_t num)
|
||||
{
|
||||
static int32_t hwmheight;
|
||||
int32_t k,i,htind,height; struct knotary_entry *kp; struct knotaries_entry N;
|
||||
@@ -165,7 +150,7 @@ void komodo_notarysinit(int32_t origheight,uint8_t pubkeys[64][33],int32_t num)
|
||||
htind = (HUSH_MAXBLOCKS / KOMODO_ELECTION_GAP) - 1;
|
||||
//printf("htind.%d activation %d from %d vs %d | hwmheight.%d %s\n",htind,height,origheight,(((origheight+KOMODO_ELECTION_GAP/2)/KOMODO_ELECTION_GAP)+1)*KOMODO_ELECTION_GAP,hwmheight,SMART_CHAIN_SYMBOL);
|
||||
} else htind = 0;
|
||||
pthread_mutex_lock(&komodo_mutex);
|
||||
pthread_mutex_lock(&hush_mutex);
|
||||
for (k=0; k<num; k++)
|
||||
{
|
||||
kp = (struct knotary_entry *)calloc(1,sizeof(*kp));
|
||||
@@ -190,7 +175,7 @@ void komodo_notarysinit(int32_t origheight,uint8_t pubkeys[64][33],int32_t num)
|
||||
Pubkeys[i] = N;
|
||||
Pubkeys[i].height = i * KOMODO_ELECTION_GAP;
|
||||
}
|
||||
pthread_mutex_unlock(&komodo_mutex);
|
||||
pthread_mutex_unlock(&hush_mutex);
|
||||
if ( origheight > hwmheight )
|
||||
hwmheight = origheight;
|
||||
}
|
||||
@@ -207,7 +192,7 @@ int32_t hush_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33,ui
|
||||
}
|
||||
if ( height >= HUSH_NOTARIES_HARDCODED || SMART_CHAIN_SYMBOL[0] != 0 )
|
||||
{
|
||||
if ( (*notaryidp= komodo_electednotary(&numnotaries,pubkey33,height,timestamp)) >= 0 && numnotaries != 0 )
|
||||
if ( (*notaryidp= hush_electednotary(&numnotaries,pubkey33,height,timestamp)) >= 0 && numnotaries != 0 )
|
||||
{
|
||||
modval = ((height % numnotaries) == *notaryidp);
|
||||
return(modval);
|
||||
@@ -220,9 +205,9 @@ int32_t hush_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33,ui
|
||||
htind = height / KOMODO_ELECTION_GAP;
|
||||
if ( htind >= HUSH_MAXBLOCKS / KOMODO_ELECTION_GAP )
|
||||
htind = (HUSH_MAXBLOCKS / KOMODO_ELECTION_GAP) - 1;
|
||||
pthread_mutex_lock(&komodo_mutex);
|
||||
pthread_mutex_lock(&hush_mutex);
|
||||
HASH_FIND(hh,Pubkeys[htind].Notaries,pubkey33,33,kp);
|
||||
pthread_mutex_unlock(&komodo_mutex);
|
||||
pthread_mutex_unlock(&hush_mutex);
|
||||
if ( kp != 0 )
|
||||
{
|
||||
if ( (numnotaries= Pubkeys[htind].numnotaries) > 0 )
|
||||
@@ -355,7 +340,7 @@ int32_t hush_MoMdata(int32_t *notarized_htp,uint256 *MoMp,uint256 *kmdtxidp,int3
|
||||
return(0);
|
||||
}
|
||||
|
||||
int32_t komodo_notarizeddata(int32_t nHeight,uint256 *notarized_hashp,uint256 *notarized_desttxidp)
|
||||
int32_t hush_notarizeddata(int32_t nHeight,uint256 *notarized_hashp,uint256 *notarized_desttxidp)
|
||||
{
|
||||
struct notarized_checkpoint *np = 0; int32_t i=0,flag = 0; char symbol[HUSH_SMART_CHAIN_MAXLEN],dest[HUSH_SMART_CHAIN_MAXLEN]; struct hush_state *sp;
|
||||
if ( (sp= hush_stateptr(symbol,dest)) != 0 )
|
||||
@@ -411,17 +396,17 @@ int32_t komodo_notarizeddata(int32_t nHeight,uint256 *notarized_hashp,uint256 *n
|
||||
return(0);
|
||||
}
|
||||
|
||||
void komodo_notarized_update(struct hush_state *sp,int32_t nHeight,int32_t notarized_height,uint256 notarized_hash,uint256 notarized_desttxid,uint256 MoM,int32_t MoMdepth)
|
||||
void hush_notarized_update(struct hush_state *sp,int32_t nHeight,int32_t notarized_height,uint256 notarized_hash,uint256 notarized_desttxid,uint256 MoM,int32_t MoMdepth)
|
||||
{
|
||||
struct notarized_checkpoint *np;
|
||||
if ( notarized_height >= nHeight )
|
||||
{
|
||||
fprintf(stderr,"komodo_notarized_update REJECT notarized_height %d > %d nHeight\n",notarized_height,nHeight);
|
||||
fprintf(stderr,"hush_notarized_update REJECT notarized_height %d > %d nHeight\n",notarized_height,nHeight);
|
||||
return;
|
||||
}
|
||||
if ( 0 && SMART_CHAIN_SYMBOL[0] != 0 )
|
||||
fprintf(stderr,"[%s] komodo_notarized_update nHeight.%d notarized_height.%d\n",SMART_CHAIN_SYMBOL,nHeight,notarized_height);
|
||||
portable_mutex_lock(&komodo_mutex);
|
||||
fprintf(stderr,"[%s] hush_notarized_update nHeight.%d notarized_height.%d\n",SMART_CHAIN_SYMBOL,nHeight,notarized_height);
|
||||
portable_mutex_lock(&hush_mutex);
|
||||
sp->NPOINTS = (struct notarized_checkpoint *)realloc(sp->NPOINTS,(sp->NUM_NPOINTS+1) * sizeof(*sp->NPOINTS));
|
||||
np = &sp->NPOINTS[sp->NUM_NPOINTS++];
|
||||
memset(np,0,sizeof(*np));
|
||||
@@ -431,7 +416,7 @@ void komodo_notarized_update(struct hush_state *sp,int32_t nHeight,int32_t notar
|
||||
sp->NOTARIZED_DESTTXID = np->notarized_desttxid = notarized_desttxid;
|
||||
sp->MoM = np->MoM = MoM;
|
||||
sp->MoMdepth = np->MoMdepth = MoMdepth;
|
||||
portable_mutex_unlock(&komodo_mutex);
|
||||
portable_mutex_unlock(&hush_mutex);
|
||||
}
|
||||
|
||||
void hush_init(int32_t height)
|
||||
@@ -442,7 +427,7 @@ void hush_init(int32_t height)
|
||||
memset(&zero,0,sizeof(zero));
|
||||
if ( didinit == 0 )
|
||||
{
|
||||
pthread_mutex_init(&komodo_mutex,NULL);
|
||||
pthread_mutex_init(&hush_mutex,NULL);
|
||||
decode_hex(NOTARY_PUBKEY33,33,(char *)NOTARY_PUBKEY.c_str());
|
||||
if ( height >= 0 )
|
||||
{
|
||||
@@ -453,7 +438,7 @@ void hush_init(int32_t height)
|
||||
break;
|
||||
decode_hex(pubkeys[k],33,(char *)Notaries_genesis[k][1]);
|
||||
}
|
||||
komodo_notarysinit(0,pubkeys,k);
|
||||
hush_notarysinit(0,pubkeys,k);
|
||||
}
|
||||
//for (i=0; i<sizeof(Minerids); i++)
|
||||
// Minerids[i] = -2;
|
||||
|
||||
@@ -349,12 +349,12 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals)
|
||||
KMDBTC = ((double)kmdbtc / (1000000000. * 1000.));
|
||||
BTCUSD = PAX_BTCUSD(height,btcusd);
|
||||
CNYUSD = ((double)cnyusd / 1000000000.);
|
||||
portable_mutex_lock(&komodo_mutex);
|
||||
portable_mutex_lock(&hush_mutex);
|
||||
PVALS = (uint32_t *)realloc(PVALS,(NUM_PRICES+1) * sizeof(*PVALS) * 36);
|
||||
PVALS[36 * NUM_PRICES] = height;
|
||||
memcpy(&PVALS[36 * NUM_PRICES + 1],pvals,sizeof(*pvals) * 35);
|
||||
NUM_PRICES++;
|
||||
portable_mutex_unlock(&komodo_mutex);
|
||||
portable_mutex_unlock(&hush_mutex);
|
||||
if ( 0 )
|
||||
printf("OP_RETURN.%d KMD %.8f BTC %.6f CNY %.6f NUM_PRICES.%d (%llu %llu %llu)\n",height,KMDBTC,BTCUSD,CNYUSD,NUM_PRICES,(long long)kmdbtc,(long long)btcusd,(long long)cnyusd);
|
||||
}
|
||||
@@ -504,7 +504,7 @@ uint64_t _komodo_paxprice(uint64_t *kmdbtcp,uint64_t *btcusdp,int32_t height,cha
|
||||
height -= 10;
|
||||
if ( (baseid= hush_baseid(base)) >= 0 && (relid= hush_baseid(rel)) >= 0 )
|
||||
{
|
||||
//portable_mutex_lock(&komodo_mutex);
|
||||
//portable_mutex_lock(&hush_mutex);
|
||||
for (i=NUM_PRICES-1; i>=0; i--)
|
||||
{
|
||||
ptr = &PVALS[36 * i];
|
||||
@@ -516,13 +516,13 @@ uint64_t _komodo_paxprice(uint64_t *kmdbtcp,uint64_t *btcusdp,int32_t height,cha
|
||||
*kmdbtcp = pvals[MAX_CURRENCIES] / 539;
|
||||
*btcusdp = pvals[MAX_CURRENCIES + 1] / 539;
|
||||
}
|
||||
//portable_mutex_unlock(&komodo_mutex);
|
||||
//portable_mutex_unlock(&hush_mutex);
|
||||
if ( kmdbtc != 0 && btcusd != 0 )
|
||||
return(komodo_paxcalc(height,pvals,baseid,relid,basevolume,kmdbtc,btcusd));
|
||||
else return(0);
|
||||
}
|
||||
}
|
||||
//portable_mutex_unlock(&komodo_mutex);
|
||||
//portable_mutex_unlock(&hush_mutex);
|
||||
} //else printf("paxprice invalid base.%s %d, rel.%s %d\n",base,baseid,rel,relid);
|
||||
return(0);
|
||||
}
|
||||
@@ -651,7 +651,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin
|
||||
return(0);
|
||||
}
|
||||
*seedp = komodo_seed(height);
|
||||
portable_mutex_lock(&komodo_mutex);
|
||||
portable_mutex_lock(&hush_mutex);
|
||||
for (i=0; i<17; i++)
|
||||
{
|
||||
if ( (price= komodo_paxpriceB(*seedp,height-i,base,rel,basevolume)) != 0 )
|
||||
@@ -682,7 +682,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin
|
||||
if ( height < 165000 || height > 236000 )
|
||||
break;
|
||||
}
|
||||
portable_mutex_unlock(&komodo_mutex);
|
||||
portable_mutex_unlock(&hush_mutex);
|
||||
if ( nonz != 0 )
|
||||
sum /= nonz;
|
||||
//printf("-> %lld %s/%s i.%d ht.%d\n",(long long)sum,base,rel,i,height);
|
||||
|
||||
@@ -487,21 +487,7 @@ std::vector<uint256> CTxMemPool::removeExpired(unsigned int nBlockHeight)
|
||||
// Remove expired txs from the mempool
|
||||
LOCK(cs);
|
||||
list<CTransaction> transactionsToRemove;
|
||||
for (indexed_transaction_set::const_iterator it = mapTx.begin(); it != mapTx.end(); it++)
|
||||
{
|
||||
const CTransaction& tx = it->GetTx();
|
||||
tipindex = chainActive.LastTip();
|
||||
|
||||
/*
|
||||
bool fInterestNotValidated = SMART_CHAIN_SYMBOL[0] == 0 && tipindex != 0 && komodo_validate_interest(tx,tipindex->GetHeight()+1,tipindex->GetMedianTimePast() + 777,0) < 0;
|
||||
if (IsExpiredTx(tx, nBlockHeight) || fInterestNotValidated)
|
||||
{
|
||||
if (fInterestNotValidated && tipindex != 0)
|
||||
LogPrintf("Removing interest violate txid.%s nHeight.%d nTime.%u vs locktime.%u\n",tx.GetHash().ToString(),tipindex->GetHeight()+1,tipindex->GetMedianTimePast() + 777,tx.nLockTime);
|
||||
transactionsToRemove.push_back(tx);
|
||||
}
|
||||
*/
|
||||
}
|
||||
std::vector<uint256> ids;
|
||||
for (const CTransaction& tx : transactionsToRemove) {
|
||||
list<CTransaction> removed;
|
||||
|
||||
Reference in New Issue
Block a user