@@ -201,8 +201,7 @@ int32_t komodo_parsestatefile(struct komodo_state *sp,FILE *fp,char *symbol,char
|
|||||||
komodo_eventadd_pricefeed(sp,symbol,ht,pvals,numpvals);
|
komodo_eventadd_pricefeed(sp,symbol,ht,pvals,numpvals);
|
||||||
//printf("load pvals ht.%d numpvals.%d\n",ht,numpvals);
|
//printf("load pvals ht.%d numpvals.%d\n",ht,numpvals);
|
||||||
} else printf("error loading pvals[%d]\n",numpvals);
|
} else printf("error loading pvals[%d]\n",numpvals);
|
||||||
}
|
} // else printf("[%s] %s illegal func.(%d %c)\n",ASSETCHAINS_SYMBOL,symbol,func,func);
|
||||||
else printf("[%s] %s illegal func.(%d %c)\n",ASSETCHAINS_SYMBOL,symbol,func,func);
|
|
||||||
return(func);
|
return(func);
|
||||||
} else return(-1);
|
} else return(-1);
|
||||||
}
|
}
|
||||||
@@ -342,8 +341,7 @@ int32_t komodo_parsestatefiledata(struct komodo_state *sp,uint8_t *filedata,long
|
|||||||
komodo_eventadd_pricefeed(sp,symbol,ht,pvals,numpvals);
|
komodo_eventadd_pricefeed(sp,symbol,ht,pvals,numpvals);
|
||||||
//printf("load pvals ht.%d numpvals.%d\n",ht,numpvals);
|
//printf("load pvals ht.%d numpvals.%d\n",ht,numpvals);
|
||||||
} else printf("error loading pvals[%d]\n",numpvals);
|
} else printf("error loading pvals[%d]\n",numpvals);
|
||||||
}
|
} // else printf("[%s] %s illegal func.(%d %c)\n",ASSETCHAINS_SYMBOL,symbol,func,func);
|
||||||
else printf("[%s] %s illegal func.(%d %c)\n",ASSETCHAINS_SYMBOL,symbol,func,func);
|
|
||||||
*fposp = fpos;
|
*fposp = fpos;
|
||||||
return(func);
|
return(func);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1265,6 +1265,29 @@ int32_t komodo_is_PoSblock(int32_t slowflag,int32_t height,CBlock *pblock,arith_
|
|||||||
return(isPoS);
|
return(isPoS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t komodo_checkcommission(CBlock *pblock,int32_t height)
|
||||||
|
{
|
||||||
|
int64_t checktoshis=0; uint8_t *script;
|
||||||
|
if ( ASSETCHAINS_COMMISSION != 0 )
|
||||||
|
{
|
||||||
|
checktoshis = komodo_commission(pblock);
|
||||||
|
if ( checktoshis > 10000 && pblock->vtx[0].vout.size() != 2 )
|
||||||
|
return(-1);
|
||||||
|
else if ( checktoshis != 0 )
|
||||||
|
{
|
||||||
|
script = (uint8_t *)pblock->vtx[0].vout[1].scriptPubKey.data();
|
||||||
|
if ( script[0] != 33 || script[34] != OP_CHECKSIG || memcmp(script+1,ASSETCHAINS_OVERRIDE_PUBKEY33,33) != 0 )
|
||||||
|
return(-1);
|
||||||
|
if ( pblock->vtx[0].vout[1].nValue != checktoshis )
|
||||||
|
{
|
||||||
|
fprintf(stderr,"ht.%d checktoshis %.8f vs actual vout[1] %.8f\n",height,dstr(checktoshis),dstr(pblock->vtx[0].vout[1].nValue));
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(checktoshis);
|
||||||
|
}
|
||||||
|
|
||||||
int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height)
|
int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height)
|
||||||
{
|
{
|
||||||
uint256 hash; arith_uint256 bnTarget,bhash; bool fNegative,fOverflow; uint8_t *script,pubkey33[33],pubkeys[64][33]; int32_t i,possible,PoSperc,is_PoSblock=0,n,failed = 0,notaryid = -1; int64_t checktoshis,value; CBlockIndex *pprev;
|
uint256 hash; arith_uint256 bnTarget,bhash; bool fNegative,fOverflow; uint8_t *script,pubkey33[33],pubkeys[64][33]; int32_t i,possible,PoSperc,is_PoSblock=0,n,failed = 0,notaryid = -1; int64_t checktoshis,value; CBlockIndex *pprev;
|
||||||
@@ -1333,22 +1356,16 @@ int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height)
|
|||||||
} else if ( is_PoSblock < 0 )
|
} else if ( is_PoSblock < 0 )
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
if ( failed == 0 && ASSETCHAINS_OVERRIDE_PUBKEY33[0] != 0 && ASSETCHAINS_COMMISSION != 0 )
|
if ( failed == 0 && ASSETCHAINS_OVERRIDE_PUBKEY33[0] != 0 )
|
||||||
{
|
{
|
||||||
checktoshis = komodo_commission(pblock);
|
if ( height == 1 )
|
||||||
if ( checktoshis > 10000 && pblock->vtx[0].vout.size() != 2 )
|
|
||||||
return(-1);
|
|
||||||
else if ( checktoshis != 0 )
|
|
||||||
{
|
{
|
||||||
script = (uint8_t *)pblock->vtx[0].vout[1].scriptPubKey.data();
|
script = (uint8_t *)pblock->vtx[0].vout[0].scriptPubKey.data();
|
||||||
if ( script[0] != 33 || script[34] != OP_CHECKSIG || memcmp(script+1,ASSETCHAINS_OVERRIDE_PUBKEY33,33) != 0 )
|
if ( script[0] != 33 || script[34] != OP_CHECKSIG || memcmp(script+1,ASSETCHAINS_OVERRIDE_PUBKEY33,33) != 0 )
|
||||||
return(-1);
|
return(-1);
|
||||||
if ( pblock->vtx[0].vout[1].nValue != checktoshis )
|
|
||||||
{
|
|
||||||
fprintf(stderr,"checktoshis %.8f vs actual vout[1] %.8f\n",dstr(checktoshis),dstr(pblock->vtx[0].vout[1].nValue));
|
|
||||||
return(-1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if ( komodo_checkcommission(pblock,height) < 0 )
|
||||||
|
return(-1);
|
||||||
}
|
}
|
||||||
//fprintf(stderr,"komodo_checkPOW possible.%d slowflag.%d ht.%d notaryid.%d failed.%d\n",possible,slowflag,height,notaryid,failed);
|
//fprintf(stderr,"komodo_checkPOW possible.%d slowflag.%d ht.%d notaryid.%d failed.%d\n",possible,slowflag,height,notaryid,failed);
|
||||||
if ( failed != 0 && possible == 0 && notaryid < 0 )
|
if ( failed != 0 && possible == 0 && notaryid < 0 )
|
||||||
|
|||||||
@@ -653,7 +653,7 @@ void komodo_passport_iteration();
|
|||||||
int32_t komodo_check_deposit(int32_t height,const CBlock& block,uint32_t prevtime) // verify above block is valid pax pricing
|
int32_t komodo_check_deposit(int32_t height,const CBlock& block,uint32_t prevtime) // verify above block is valid pax pricing
|
||||||
{
|
{
|
||||||
static uint256 array[64]; static int32_t numbanned,indallvouts;
|
static uint256 array[64]; static int32_t numbanned,indallvouts;
|
||||||
int32_t i,j,k,n,ht,baseid,txn_count,activation,num,opretlen,offset=1,errs=0,notmatched=0,matched=0,kmdheights[256],otherheights[256]; uint256 hash,txids[256]; char symbol[KOMODO_ASSETCHAIN_MAXLEN],base[KOMODO_ASSETCHAIN_MAXLEN]; uint16_t vouts[256]; int8_t baseids[256]; uint8_t *script,opcode,rmd160s[256*20]; uint64_t total,subsidy,available,deposited,issued,withdrawn,approved,redeemed,checktoshis,seed; int64_t values[256],srcvalues[256]; struct pax_transaction *pax; struct komodo_state *sp; CTransaction tx;
|
int32_t i,j,k,n,ht,baseid,txn_count,activation,num,opretlen,offset=1,errs=0,notmatched=0,matched=0,kmdheights[256],otherheights[256]; uint256 hash,txids[256]; char symbol[KOMODO_ASSETCHAIN_MAXLEN],base[KOMODO_ASSETCHAIN_MAXLEN]; uint16_t vouts[256]; int8_t baseids[256]; uint8_t *script,opcode,rmd160s[256*20]; uint64_t total,subsidy,available,deposited,issued,withdrawn,approved,redeemed,seed; int64_t checktoshis,values[256],srcvalues[256]; struct pax_transaction *pax; struct komodo_state *sp; CTransaction tx;
|
||||||
activation = 235300;
|
activation = 235300;
|
||||||
if ( *(int32_t *)&array[0] == 0 )
|
if ( *(int32_t *)&array[0] == 0 )
|
||||||
numbanned = komodo_bannedset(&indallvouts,array,(int32_t)(sizeof(array)/sizeof(*array)));
|
numbanned = komodo_bannedset(&indallvouts,array,(int32_t)(sizeof(array)/sizeof(*array)));
|
||||||
@@ -743,11 +743,20 @@ int32_t komodo_check_deposit(int32_t height,const CBlock& block,uint32_t prevtim
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( overflow != 0 || total > 0 || strangeout != 0 )
|
checktoshis = 0;
|
||||||
|
if ( ASSETCHAINS_COMMISSION != 0 && height > 1 )
|
||||||
{
|
{
|
||||||
if ( strangeout != 0 )
|
if ( (checktoshis= komodo_checkcommission((CBlock *)&block,height)) < 0 )
|
||||||
fprintf(stderr,">>>>>>>>>>>>> %s DUST ht.%d strangout.%d notmatched.%d <<<<<<<<<\n",ASSETCHAINS_SYMBOL,height,strangeout,notmatched);
|
return(-1);
|
||||||
return(-1);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( overflow != 0 || total > checktoshis || strangeout != 0 )
|
||||||
|
{
|
||||||
|
if ( strangeout != 0 )
|
||||||
|
fprintf(stderr,">>>>>>>>>>>>> %s DUST ht.%d strangout.%d notmatched.%d <<<<<<<<<\n",ASSETCHAINS_SYMBOL,height,strangeout,notmatched);
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(0);
|
return(0);
|
||||||
|
|||||||
@@ -809,7 +809,7 @@ uint16_t komodo_calcport(char *name,uint64_t supply,uint64_t endsubsidy,uint64_t
|
|||||||
decay = 0;
|
decay = 0;
|
||||||
printf("decay cant be more than 100000000\n");
|
printf("decay cant be more than 100000000\n");
|
||||||
}
|
}
|
||||||
if ( endsubsidy != 0 || reward != 0 || halving != 0 || decay != 0 || commission != 0 || cc != 0 || staked != 0 )
|
if ( endsubsidy != 0 || reward != 0 || halving != 0 || decay != 0 || commission != 0 || cc != 0 || staked != 0 || ASSETCHAINS_OVERRIDE_PUBKEY33[0] != 0 )
|
||||||
{
|
{
|
||||||
//printf("end.%llu reward.%llu halving.%llu decay.%llu perc.%llu\n",(long long)endsubsidy,(long long)reward,(long long)halving,(long long)decay,(long long)commission);
|
//printf("end.%llu reward.%llu halving.%llu decay.%llu perc.%llu\n",(long long)endsubsidy,(long long)reward,(long long)halving,(long long)decay,(long long)commission);
|
||||||
extraptr = extrabuf;
|
extraptr = extrabuf;
|
||||||
|
|||||||
@@ -1559,7 +1559,7 @@ void komodo_args(char *argv0)
|
|||||||
ASSETCHAINS_DECAY = 0;
|
ASSETCHAINS_DECAY = 0;
|
||||||
printf("ASSETCHAINS_DECAY cant be more than 100000000\n");
|
printf("ASSETCHAINS_DECAY cant be more than 100000000\n");
|
||||||
}
|
}
|
||||||
if ( strlen(ASSETCHAINS_OVERRIDE_PUBKEY.c_str()) == 66 && ASSETCHAINS_COMMISSION > 0 && ASSETCHAINS_COMMISSION <= 100000000 )
|
if ( strlen(ASSETCHAINS_OVERRIDE_PUBKEY.c_str()) == 66 )
|
||||||
decode_hex(ASSETCHAINS_OVERRIDE_PUBKEY33,33,(char *)ASSETCHAINS_OVERRIDE_PUBKEY.c_str());
|
decode_hex(ASSETCHAINS_OVERRIDE_PUBKEY33,33,(char *)ASSETCHAINS_OVERRIDE_PUBKEY.c_str());
|
||||||
else if ( ASSETCHAINS_COMMISSION != 0 )
|
else if ( ASSETCHAINS_COMMISSION != 0 )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5147,10 +5147,11 @@ void static CheckBlockIndex()
|
|||||||
// Build forward-pointing map of the entire block tree.
|
// Build forward-pointing map of the entire block tree.
|
||||||
std::multimap<CBlockIndex*,CBlockIndex*> forward;
|
std::multimap<CBlockIndex*,CBlockIndex*> forward;
|
||||||
for (BlockMap::iterator it = mapBlockIndex.begin(); it != mapBlockIndex.end(); it++) {
|
for (BlockMap::iterator it = mapBlockIndex.begin(); it != mapBlockIndex.end(); it++) {
|
||||||
forward.insert(std::make_pair(it->second->pprev, it->second));
|
if ( it->second != 0 )
|
||||||
|
forward.insert(std::make_pair(it->second->pprev, it->second));
|
||||||
}
|
}
|
||||||
|
if ( Params().NetworkIDString() != "regtest" )
|
||||||
assert(forward.size() == mapBlockIndex.size());
|
assert(forward.size() == mapBlockIndex.size());
|
||||||
|
|
||||||
std::pair<std::multimap<CBlockIndex*,CBlockIndex*>::iterator,std::multimap<CBlockIndex*,CBlockIndex*>::iterator> rangeGenesis = forward.equal_range(NULL);
|
std::pair<std::multimap<CBlockIndex*,CBlockIndex*>::iterator,std::multimap<CBlockIndex*,CBlockIndex*>::iterator> rangeGenesis = forward.equal_range(NULL);
|
||||||
CBlockIndex *pindex = rangeGenesis.first->second;
|
CBlockIndex *pindex = rangeGenesis.first->second;
|
||||||
|
|||||||
@@ -108,7 +108,8 @@ void UpdateTime(CBlockHeader* pblock, const Consensus::Params& consensusParams,
|
|||||||
extern int32_t ASSETCHAINS_SEED,IS_KOMODO_NOTARY,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAIN_INIT,KOMODO_INITDONE,KOMODO_ON_DEMAND,KOMODO_INITDONE,KOMODO_PASSPORT_INITDONE;
|
extern int32_t ASSETCHAINS_SEED,IS_KOMODO_NOTARY,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAIN_INIT,KOMODO_INITDONE,KOMODO_ON_DEMAND,KOMODO_INITDONE,KOMODO_PASSPORT_INITDONE;
|
||||||
extern uint64_t ASSETCHAINS_REWARD,ASSETCHAINS_COMMISSION,ASSETCHAINS_STAKED;
|
extern uint64_t ASSETCHAINS_REWARD,ASSETCHAINS_COMMISSION,ASSETCHAINS_STAKED;
|
||||||
extern char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN];
|
extern char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN];
|
||||||
extern std::string NOTARY_PUBKEY;
|
extern std::string NOTARY_PUBKEY,ASSETCHAINS_OVERRIDE_PUBKEY;
|
||||||
|
|
||||||
extern uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33];
|
extern uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33];
|
||||||
uint32_t Mining_start,Mining_height;
|
uint32_t Mining_start,Mining_height;
|
||||||
int32_t komodo_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33,uint32_t timestamp);
|
int32_t komodo_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33,uint32_t timestamp);
|
||||||
@@ -439,7 +440,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn)
|
|||||||
txNew.vin[0].scriptSig = CScript() << nHeight << OP_0;
|
txNew.vin[0].scriptSig = CScript() << nHeight << OP_0;
|
||||||
|
|
||||||
pblock->vtx[0] = txNew;
|
pblock->vtx[0] = txNew;
|
||||||
if ( ASSETCHAINS_SYMBOL[0] != 0 && ASSETCHAINS_OVERRIDE_PUBKEY33[0] != 0 && ASSETCHAINS_COMMISSION != 0 && (commission= komodo_commission((CBlock*)&pblocktemplate->block)) != 0 )
|
if ( nHeight > 1 && ASSETCHAINS_SYMBOL[0] != 0 && ASSETCHAINS_OVERRIDE_PUBKEY33[0] != 0 && ASSETCHAINS_COMMISSION != 0 && (commission= komodo_commission((CBlock*)&pblocktemplate->block)) != 0 )
|
||||||
{
|
{
|
||||||
int32_t i; uint8_t *ptr;
|
int32_t i; uint8_t *ptr;
|
||||||
txNew.vout.resize(2);
|
txNew.vout.resize(2);
|
||||||
@@ -478,11 +479,13 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn)
|
|||||||
pblock->nTime = pindexPrev->nTime + 65;
|
pblock->nTime = pindexPrev->nTime + 65;
|
||||||
if ( komodo_notaryvin(txNotary,NOTARY_PUBKEY33) > 0 )
|
if ( komodo_notaryvin(txNotary,NOTARY_PUBKEY33) > 0 )
|
||||||
{
|
{
|
||||||
CAmount txfees = 0;
|
CAmount txfees = 5000;
|
||||||
pblock->vtx.push_back(txNotary);
|
pblock->vtx.push_back(txNotary);
|
||||||
pblocktemplate->vTxFees.push_back(txfees);
|
pblocktemplate->vTxFees.push_back(txfees);
|
||||||
pblocktemplate->vTxSigOps.push_back(GetLegacySigOpCount(txNotary));
|
pblocktemplate->vTxSigOps.push_back(GetLegacySigOpCount(txNotary));
|
||||||
nFees += txfees;
|
nFees += txfees;
|
||||||
|
pblocktemplate->vTxFees[0] = -nFees;
|
||||||
|
//*(uint64_t *)(&pblock->vtx[0].vout[0].nValue) += txfees;
|
||||||
//fprintf(stderr,"added notaryvin\n");
|
//fprintf(stderr,"added notaryvin\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -582,10 +585,14 @@ void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int&
|
|||||||
// Internal miner
|
// Internal miner
|
||||||
//
|
//
|
||||||
|
|
||||||
CBlockTemplate* CreateNewBlockWithKey(CReserveKey& reservekey)
|
CBlockTemplate* CreateNewBlockWithKey(CReserveKey& reservekey,int32_t nHeight)
|
||||||
{
|
{
|
||||||
CPubKey pubkey; CScript scriptPubKey; uint8_t *script,*ptr; int32_t i;
|
CPubKey pubkey; CScript scriptPubKey; uint8_t *script,*ptr; int32_t i;
|
||||||
if ( USE_EXTERNAL_PUBKEY != 0 )
|
if ( nHeight == 1 && ASSETCHAINS_OVERRIDE_PUBKEY33[0] != 0 )
|
||||||
|
{
|
||||||
|
scriptPubKey = CScript() << ParseHex(ASSETCHAINS_OVERRIDE_PUBKEY) << OP_CHECKSIG;
|
||||||
|
}
|
||||||
|
else if ( USE_EXTERNAL_PUBKEY != 0 )
|
||||||
{
|
{
|
||||||
//fprintf(stderr,"use notary pubkey\n");
|
//fprintf(stderr,"use notary pubkey\n");
|
||||||
scriptPubKey = CScript() << ParseHex(NOTARY_PUBKEY) << OP_CHECKSIG;
|
scriptPubKey = CScript() << ParseHex(NOTARY_PUBKEY) << OP_CHECKSIG;
|
||||||
@@ -787,7 +794,7 @@ void static BitcoinMiner()
|
|||||||
sleep(3);
|
sleep(3);
|
||||||
}
|
}
|
||||||
#ifdef ENABLE_WALLET
|
#ifdef ENABLE_WALLET
|
||||||
CBlockTemplate *ptr = CreateNewBlockWithKey(reservekey);
|
CBlockTemplate *ptr = CreateNewBlockWithKey(reservekey,pindexPrev->nHeight+1);
|
||||||
#else
|
#else
|
||||||
CBlockTemplate *ptr = CreateNewBlockWithKey();
|
CBlockTemplate *ptr = CreateNewBlockWithKey();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ struct CBlockTemplate
|
|||||||
CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn);
|
CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn);
|
||||||
#ifdef ENABLE_WALLET
|
#ifdef ENABLE_WALLET
|
||||||
boost::optional<CScript> GetMinerScriptPubKey(CReserveKey& reservekey);
|
boost::optional<CScript> GetMinerScriptPubKey(CReserveKey& reservekey);
|
||||||
CBlockTemplate* CreateNewBlockWithKey(CReserveKey& reservekey);
|
CBlockTemplate* CreateNewBlockWithKey(CReserveKey& reservekey,int32_t nHeight);
|
||||||
#else
|
#else
|
||||||
boost::optional<CScript> GetMinerScriptPubKey();
|
boost::optional<CScript> GetMinerScriptPubKey();
|
||||||
CBlockTemplate* CreateNewBlockWithKey();
|
CBlockTemplate* CreateNewBlockWithKey();
|
||||||
|
|||||||
@@ -86,6 +86,8 @@ bool CheckEquihashSolution(const CBlockHeader *pblock, const CChainParams& param
|
|||||||
unsigned int n = params.EquihashN();
|
unsigned int n = params.EquihashN();
|
||||||
unsigned int k = params.EquihashK();
|
unsigned int k = params.EquihashK();
|
||||||
|
|
||||||
|
if ( Params().NetworkIDString() == "regtest" )
|
||||||
|
return(true);
|
||||||
// Hash state
|
// Hash state
|
||||||
crypto_generichash_blake2b_state state;
|
crypto_generichash_blake2b_state state;
|
||||||
EhInitialiseState(n, k, state);
|
EhInitialiseState(n, k, state);
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ UniValue generate(const UniValue& params, bool fHelp)
|
|||||||
lastTime = GetTime();
|
lastTime = GetTime();
|
||||||
|
|
||||||
#ifdef ENABLE_WALLET
|
#ifdef ENABLE_WALLET
|
||||||
std::unique_ptr<CBlockTemplate> pblocktemplate(CreateNewBlockWithKey(reservekey));
|
std::unique_ptr<CBlockTemplate> pblocktemplate(CreateNewBlockWithKey(reservekey,nHeight));
|
||||||
#else
|
#else
|
||||||
std::unique_ptr<CBlockTemplate> pblocktemplate(CreateNewBlockWithKey());
|
std::unique_ptr<CBlockTemplate> pblocktemplate(CreateNewBlockWithKey());
|
||||||
#endif
|
#endif
|
||||||
@@ -639,7 +639,7 @@ UniValue getblocktemplate(const UniValue& params, bool fHelp)
|
|||||||
}
|
}
|
||||||
#ifdef ENABLE_WALLET
|
#ifdef ENABLE_WALLET
|
||||||
CReserveKey reservekey(pwalletMain);
|
CReserveKey reservekey(pwalletMain);
|
||||||
pblocktemplate = CreateNewBlockWithKey(reservekey);
|
pblocktemplate = CreateNewBlockWithKey(reservekey,chainActive.Tip()->nHeight+1);
|
||||||
#else
|
#else
|
||||||
pblocktemplate = CreateNewBlockWithKey();
|
pblocktemplate = CreateNewBlockWithKey();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -2696,6 +2696,7 @@ UniValue listunspent(const UniValue& params, bool fHelp)
|
|||||||
|
|
||||||
uint64_t komodo_interestsum()
|
uint64_t komodo_interestsum()
|
||||||
{
|
{
|
||||||
|
#ifdef ENABLE_WALLET
|
||||||
uint64_t interest,sum = 0; int32_t txheight; uint32_t locktime;
|
uint64_t interest,sum = 0; int32_t txheight; uint32_t locktime;
|
||||||
vector<COutput> vecOutputs;
|
vector<COutput> vecOutputs;
|
||||||
assert(pwalletMain != NULL);
|
assert(pwalletMain != NULL);
|
||||||
@@ -2719,6 +2720,9 @@ uint64_t komodo_interestsum()
|
|||||||
KOMODO_INTERESTSUM = sum;
|
KOMODO_INTERESTSUM = sum;
|
||||||
KOMODO_WALLETBALANCE = pwalletMain->GetBalance();
|
KOMODO_WALLETBALANCE = pwalletMain->GetBalance();
|
||||||
return(sum);
|
return(sum);
|
||||||
|
#else
|
||||||
|
return(0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
UniValue fundrawtransaction(const UniValue& params, bool fHelp)
|
UniValue fundrawtransaction(const UniValue& params, bool fHelp)
|
||||||
@@ -4519,7 +4523,7 @@ int32_t komodo_notaryvin(CMutableTransaction &txNew,uint8_t *notarypub33)
|
|||||||
|
|
||||||
txNew.vin.resize(1);
|
txNew.vin.resize(1);
|
||||||
txNew.vout.resize(1);
|
txNew.vout.resize(1);
|
||||||
txfee = utxovalue / 2;;
|
txfee = utxovalue / 2;
|
||||||
//for (i=0; i<32; i++)
|
//for (i=0; i<32; i++)
|
||||||
// ((uint8_t *)&revtxid)[i] = ((uint8_t *)&utxotxid)[31 - i];
|
// ((uint8_t *)&revtxid)[i] = ((uint8_t *)&utxotxid)[31 - i];
|
||||||
txNew.vin[0].prevout.hash = utxotxid; //revtxid;
|
txNew.vin[0].prevout.hash = utxotxid; //revtxid;
|
||||||
|
|||||||
Reference in New Issue
Block a user