Browse Source

Fixes

pull/4/head
jl777 5 years ago
parent
commit
1f8591b0e9
  1. 8
      src/cc/dilithium.c
  2. 9
      src/cc/rogue_rpc.cpp
  3. 18
      src/komodo_globals.h
  4. 7
      src/komodo_utils.h

8
src/cc/dilithium.c

@ -3276,9 +3276,9 @@ UniValue dilithium_spend(uint64_t txfee,struct CCcontract_info *cp,cJSON *params
} else return(cclib_error(result,"need to have exactly 2 params sendtxid, scriptPubKey"));
}
int64_t dilithium_inputs(struct CCcontract_info *cp,CMutableTransaction &mtx,CPubKey pk,int64_t total,int32_t maxinputs,char *cmpaddr)
int64_t dilithium_inputs(struct CCcontract_info *cp,CMutableTransaction &mtx,CPubKey pk,uint256 pubtxid,int64_t total,int32_t maxinputs,char *cmpaddr)
{
char coinaddr[64]; int64_t threshold,nValue,price,totalinputs = 0; uint256 tmptxid,txid,hashBlock; std::vector<uint8_t> origpubkey,tmpsig; CTransaction vintx; int32_t vout,numvouts,n = 0; std::vector<uint256> voutpubtxids;
char coinaddr[64]; int64_t threshold,nValue,price,totalinputs = 0; uint256 checktxid,txid,hashBlock; std::vector<uint8_t> origpubkey,tmpsig; CTransaction vintx; int32_t vout,numvouts,n = 0; std::vector<uint256> voutpubtxids;
std::vector<std::pair<CAddressUnspentKey, CAddressUnspentValue> > unspentOutputs;
GetCCaddress(cp,coinaddr,pk);
SetCCunspents(unspentOutputs,coinaddr);
@ -3294,7 +3294,7 @@ int64_t dilithium_inputs(struct CCcontract_info *cp,CMutableTransaction &mtx,CPu
{
if ( (nValue= IsCClibvout(cp,vintx,vout,cmpaddr)) > DILITHIUM_TXFEE && myIsutxo_spentinmempool(ignoretxid,ignorevin,txid,vout) == 0 )
{
if ( dilithium_Qsendopretdecode(tmptxid,tmpsig,voutpubtxids,vintx.vout[numvouts-1].scriptPubKey) == 'Q' || dilithium_sendopretdecode(tmptxid,vintx.vout[numvouts-1].scriptPubKey) == 'x' )
if ( (dilithium_Qsendopretdecode(checktxid,tmpsig,voutpubtxids,vintx.vout[numvouts-1].scriptPubKey) == 'Q' || dilithium_sendopretdecode(checktxid,vintx.vout[numvouts-1].scriptPubKey) == 'x') && desttxid == checktxid )
{
if ( total != 0 && maxinputs != 0 )
mtx.vin.push_back(CTxIn(txid,vout,CScript()));
@ -3358,7 +3358,7 @@ UniValue dilithium_Qsend(uint64_t txfee,struct CCcontract_info *cp,cJSON *params
}
outputsum += amount;
}
if ( (inputsum= dilithium_inputs(cp,mtx,mypk,outputsum+txfee,64,myCCaddr)) >= outputsum+txfee )
if ( (inputsum= dilithium_inputs(cp,mtx,mypk,mypubtxid,outputsum+txfee,64,myCCaddr)) >= outputsum+txfee )
{
change = (inputsum - outputsum - txfee);
if ( change >= txfee )

9
src/cc/rogue_rpc.cpp

@ -593,16 +593,19 @@ int32_t rogue_playersalive(int32_t &openslots,int32_t &numplayers,uint256 gametx
numplayers = openslots = 0;
if ( komodo_nextheight() <= gameht+ROGUE_MAXKEYSTROKESGAP )
registration_open = 1;
fprintf(stderr,"players alive\n");
for (i=0; i<maxplayers; i++)
{
fprintf(stderr,"players alive %d\n",i);
if ( CCgettxout(gametxid,1+i,1,0) < 0 )
{
numplayers++;
fprintf(stderr,"players alive %d spent baton\n",i);
if ( CCgettxout(gametxid,1+maxplayers+i,1,0) == txfee )
{
txid = gametxid;
vout = 1+i;
//fprintf(stderr,"scan forward active.%s spenttxid.%s\n",gametxid.GetHex().c_str(),txid.GetHex().c_str());
fprintf(stderr,"rogue_playersalive scan forward active.%s spenttxid.%s\n",gametxid.GetHex().c_str(),txid.GetHex().c_str());
n = 0;
while ( CCgettxout(txid,vout,1,0) < 0 )
{
@ -617,14 +620,16 @@ int32_t rogue_playersalive(int32_t &openslots,int32_t &numplayers,uint256 gametx
}
txid = spenttxid;
vout = 0;
//fprintf(stderr,"n.%d next txid.%s/v%d\n",n,txid.GetHex().c_str(),spentvini);
fprintf(stderr,"n.%d next txid.%s/v%d\n",n,txid.GetHex().c_str(),spentvini);
if ( spentvini != 0 )
break;
if ( n++ > ROGUE_MAXITERATIONS )
break;
}
fprintf(stderr,"out of while\n");
if ( txid != zeroid )
{
fprintf(stderr,"get height of %s\n",txid.GetHex().c_str());
if ( myGetTransaction(txid,tx,hashBlock) != 0 && (pindex= komodo_blockindex(hashBlock)) != 0 )
{
if ( pindex->GetHeight() <= gameht+ROGUE_MAXKEYSTROKESGAP )

18
src/komodo_globals.h

@ -129,7 +129,7 @@ int32_t komodo_baseid(char *origbase)
#ifndef SATOSHIDEN
#define SATOSHIDEN ((uint64_t)100000000L)
#endif
int64_t komodo_current_supply(uint32_t nHeight)
uint64_t komodo_current_supply(uint32_t nHeight)
{
uint64_t cur_money;
int32_t baseid;
@ -264,5 +264,19 @@ int64_t komodo_current_supply(uint32_t nHeight)
}
}
}
return((int64_t)(cur_money + (cur_money * ASSETCHAINS_COMMISSION)));
#define KOMODO_MAXNVALUE (((uint64_t)1 << 63) - 1)
#define KOMODO_BIT63SET(x) ((x) & ((uint64_t)1 << 63))
if ( KOMODO_BIT63SET(cur_money) != 0 )
return(KOMODO_MAXNVALUE);
if ( ASSETCHAINS_COMMISSION != 0 )
{
uint64_t newval = (cur_money + (cur_money * ASSETCHAINS_COMMISSION));
if ( KOMODO_BIT63SET(newval) != 0 )
return(KOMODO_MAXNVALUE);
else if ( newval < curval ) // check for underflow
return(KOMODO_MAXNVALUE);
return(newvalue)
}
return(cur_money);
}

7
src/komodo_utils.h

@ -1562,7 +1562,7 @@ char *argv0names[] =
(char *)"MNZ", (char *)"MNZ", (char *)"MNZ", (char *)"MNZ", (char *)"BTCH", (char *)"BTCH", (char *)"BTCH", (char *)"BTCH"
};
int64_t komodo_max_money()
uint64_t komodo_max_money()
{
return komodo_current_supply(10000000);
}
@ -1787,6 +1787,11 @@ void komodo_args(char *argv0)
ASSETCHAINS_FOUNDERS = GetArg("-ac_founders",0);// & 1;
ASSETCHAINS_FOUNDERS_REWARD = GetArg("-ac_founders_reward",0);
ASSETCHAINS_SUPPLY = GetArg("-ac_supply",10);
if ( ASSETCHAINS_SUPPLY > (uint64_t)90*1000*1000000 )
{
fprintf(stderr,"-ac_supply must be less than 90 billion\n");
exit(0);
}
ASSETCHAINS_COMMISSION = GetArg("-ac_perc",0);
ASSETCHAINS_OVERRIDE_PUBKEY = GetArg("-ac_pubkey","");
ASSETCHAINS_SCRIPTPUB = GetArg("-ac_script","");

Loading…
Cancel
Save