Merge pull request #1435 from blackjok3rtt/FSM
Few small changes from LABS.
This commit is contained in:
@@ -1224,7 +1224,6 @@ uint64_t komodo_commission(const CBlock *pblock,int32_t height)
|
|||||||
return(0);
|
return(0);
|
||||||
|
|
||||||
int32_t i,j,n=0,txn_count; int64_t nSubsidy; uint64_t commission,total = 0;
|
int32_t i,j,n=0,txn_count; int64_t nSubsidy; uint64_t commission,total = 0;
|
||||||
txn_count = pblock->vtx.size();
|
|
||||||
if ( ASSETCHAINS_FOUNDERS != 0 )
|
if ( ASSETCHAINS_FOUNDERS != 0 )
|
||||||
{
|
{
|
||||||
nSubsidy = GetBlockSubsidy(height,Params().GetConsensus());
|
nSubsidy = GetBlockSubsidy(height,Params().GetConsensus());
|
||||||
@@ -1242,8 +1241,9 @@ uint64_t komodo_commission(const CBlock *pblock,int32_t height)
|
|||||||
else commission = 0;
|
else commission = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if ( pblock != 0 )
|
||||||
{
|
{
|
||||||
|
txn_count = pblock->vtx.size();
|
||||||
for (i=0; i<txn_count; i++)
|
for (i=0; i<txn_count; i++)
|
||||||
{
|
{
|
||||||
n = pblock->vtx[i].vout.size();
|
n = pblock->vtx[i].vout.size();
|
||||||
@@ -1855,7 +1855,7 @@ uint64_t komodo_notarypayamount(int32_t nHeight, int64_t notarycount)
|
|||||||
// Because of reorgs we cannot use the notarized height value.
|
// Because of reorgs we cannot use the notarized height value.
|
||||||
// We need to basically guess here and just pay some static amount.
|
// We need to basically guess here and just pay some static amount.
|
||||||
// Has the unwanted effect of varying coin emission, but cannot be helped.
|
// Has the unwanted effect of varying coin emission, but cannot be helped.
|
||||||
fprintf(stderr, "era.%i paying total of %lu\n",curEra, ASSETCHAINS_NOTARY_PAY[curEra]);
|
//fprintf(stderr, "era.%i paying total of %lu\n",curEra, ASSETCHAINS_NOTARY_PAY[curEra]);
|
||||||
ret = ASSETCHAINS_NOTARY_PAY[curEra] / notarycount;
|
ret = ASSETCHAINS_NOTARY_PAY[curEra] / notarycount;
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
@@ -1870,13 +1870,8 @@ int32_t komodo_getnotarizedheight(uint32_t timestamp,int32_t height, uint8_t *sc
|
|||||||
if ( len >= sizeof(uint32_t) && len <= sizeof(scriptbuf) )
|
if ( len >= sizeof(uint32_t) && len <= sizeof(scriptbuf) )
|
||||||
{
|
{
|
||||||
memcpy(scriptbuf,script,len);
|
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 ( komodo_voutupdate(true,&isratification,0,scriptbuf,len,height,uint256(),1,1,&voutmask,&specialtx,¬arizedheight,0,1,0,timestamp) != -2 )
|
||||||
{
|
{
|
||||||
fprintf(stderr, ">>>>>>VALID NOTARIZATION ht.%i\n",notarizedheight);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// This should no longer happen. Unless notaries are making actual invalid notarizations.
|
|
||||||
fprintf(stderr, "<<<<<<INVALID NOTARIZATION ht.%i\n",notarizedheight);
|
fprintf(stderr, "<<<<<<INVALID NOTARIZATION ht.%i\n",notarizedheight);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
@@ -2029,7 +2024,7 @@ uint64_t komodo_checknotarypay(CBlock *pblock,int32_t height)
|
|||||||
}
|
}
|
||||||
if ( matches != 0 && matches == NotarisationNotaries.size() && totalsats == total )
|
if ( matches != 0 && matches == NotarisationNotaries.size() && totalsats == total )
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Validated coinbase matches notarisation in tx position 1.\n" );
|
//fprintf(stderr, "Validated coinbase matches notarisation in tx position 1.\n" );
|
||||||
return(totalsats);
|
return(totalsats);
|
||||||
}
|
}
|
||||||
return(0);
|
return(0);
|
||||||
|
|||||||
@@ -3308,7 +3308,7 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin
|
|||||||
REJECT_INVALID, "bad-cb-amount");
|
REJECT_INVALID, "bad-cb-amount");
|
||||||
// calculate the notaries compensation and validate the amounts and pubkeys are correct.
|
// calculate the notaries compensation and validate the amounts and pubkeys are correct.
|
||||||
uint64_t notarypaycheque = komodo_checknotarypay((CBlock *)&block,(int32_t)pindex->GetHeight());
|
uint64_t notarypaycheque = komodo_checknotarypay((CBlock *)&block,(int32_t)pindex->GetHeight());
|
||||||
fprintf(stderr, "notarypaycheque.%lu\n", notarypaycheque);
|
//fprintf(stderr, "notarypaycheque.%lu\n", notarypaycheque);
|
||||||
if ( notarypaycheque > 0 )
|
if ( notarypaycheque > 0 )
|
||||||
blockReward += notarypaycheque;
|
blockReward += notarypaycheque;
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -371,7 +371,7 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32
|
|||||||
}
|
}
|
||||||
dPriority += (double)nValueIn * nConf;
|
dPriority += (double)nValueIn * nConf;
|
||||||
}
|
}
|
||||||
if ( numSN != 0 && TMP_NotarisationNotaries.size() >= numSN / 5 )
|
if ( numSN != 0 && notarypubkeys[0][0] != 0 && TMP_NotarisationNotaries.size() >= numSN / 5 )
|
||||||
{
|
{
|
||||||
// check a notary didnt sign twice (this would be an invalid notarisation later on and cause problems)
|
// check a notary didnt sign twice (this would be an invalid notarisation later on and cause problems)
|
||||||
std::set<int> checkdupes( TMP_NotarisationNotaries.begin(), TMP_NotarisationNotaries.end() );
|
std::set<int> checkdupes( TMP_NotarisationNotaries.begin(), TMP_NotarisationNotaries.end() );
|
||||||
@@ -418,7 +418,7 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32
|
|||||||
NotarisationNotaries = TMP_NotarisationNotaries;
|
NotarisationNotaries = TMP_NotarisationNotaries;
|
||||||
dPriority = 1e16;
|
dPriority = 1e16;
|
||||||
fNotarisationBlock = true;
|
fNotarisationBlock = true;
|
||||||
fprintf(stderr, "Notarisation %s set to maximum priority\n",hash.ToString().c_str());
|
//fprintf(stderr, "Notarisation %s set to maximum priority\n",hash.ToString().c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ static const char *iguanaSeeds[8][1] =
|
|||||||
static const int STAKED_ERA_GAP = 777;
|
static const int STAKED_ERA_GAP = 777;
|
||||||
|
|
||||||
static const int NUM_STAKED_ERAS = 4;
|
static const int NUM_STAKED_ERAS = 4;
|
||||||
static const int STAKED_NOTARIES_TIMESTAMP[NUM_STAKED_ERAS] = {1542964044, 1549188000, 1604233333, 1604244444};
|
static const int STAKED_NOTARIES_TIMESTAMP[NUM_STAKED_ERAS] = {1604244444, 1604244444, 1604244444, 1604244444};
|
||||||
static const int32_t num_notaries_STAKED[NUM_STAKED_ERAS] = { 17, 25, 19, 17 };
|
static const int32_t num_notaries_STAKED[NUM_STAKED_ERAS] = { 20, 25, 19, 17 };
|
||||||
|
|
||||||
// Era array of pubkeys.
|
// Era array of pubkeys.
|
||||||
static const char *notaries_STAKED[NUM_STAKED_ERAS][64][2] =
|
static const char *notaries_STAKED[NUM_STAKED_ERAS][64][2] =
|
||||||
@@ -33,20 +33,23 @@ static const char *notaries_STAKED[NUM_STAKED_ERAS][64][2] =
|
|||||||
{"blackjok3r", "021914947402d936a89fbdd1b12be49eb894a1568e5e17bb18c8a6cffbd3dc106e" }, // RTVti13NP4eeeZaCCmQxc2bnPdHxCJFP9x
|
{"blackjok3r", "021914947402d936a89fbdd1b12be49eb894a1568e5e17bb18c8a6cffbd3dc106e" }, // RTVti13NP4eeeZaCCmQxc2bnPdHxCJFP9x
|
||||||
{"alright", "0285657c689b903218c97f5f10fe1d10ace2ed6595112d9017f54fb42ea1c1dda8" }, //RXmXeQ8LfJK6Y1aTM97cRz9Gu5f6fmR3sg
|
{"alright", "0285657c689b903218c97f5f10fe1d10ace2ed6595112d9017f54fb42ea1c1dda8" }, //RXmXeQ8LfJK6Y1aTM97cRz9Gu5f6fmR3sg
|
||||||
{"webworker01", "031d1fb39ae4dca28965c3abdbd21faa0f685f6d7b87a60561afa7c448343fef6d" }, //RGsQiArk5sTmjXZV9UzGMW5njyvtSnsTN8
|
{"webworker01", "031d1fb39ae4dca28965c3abdbd21faa0f685f6d7b87a60561afa7c448343fef6d" }, //RGsQiArk5sTmjXZV9UzGMW5njyvtSnsTN8
|
||||||
{"CrisF", "03f87f1bccb744d90fdbf7fad1515a98e9fc7feb1800e460d2e7565b88c3971bf3" }, //RMwEpnaVe3cesWbMqqKYPPkaLcDkooTDgZ
|
{"CrisF", "024d19acf0d5de212cdd50326cd143292545d366a71b2b9c6df9f2110de2dfa1f2" }, // RKtAD2kyRRMx4EiG1eeTNprF5h2nmGbzzu
|
||||||
{"smk762", "02eacef682d2f86e0103c18f4da46116e17196f3fb8f73ed931acb78e81d8e1aa5" }, // RQVvzJ8gepCDVjhqCAc5Tia1kTmt8KDPL9
|
{"smk762", "029f6c1f38c4d6825acb3b4b5147f7992e943b617cdaa0f4f5f36187e239d52d5a" }, // RPy6Xj2LWrxNoEW9YyREDgBZDZZ5qURXBU
|
||||||
{"jorian", "02150c410a606b898bcab4f083e48e0f98a510e0d48d4db367d37f318d26ae72e3" }, // RFgzxZe2P4RWKx6E9QGPK3rx3TXeWxSqa8
|
{"jorian", "0288e682c1ac449f1b85c4acb2d0bcd216d5df34c15fd18b8a8dd5fa64b8ece8ef" }, // RR1yT5aB19VwFoUCGTW4q4pk4qmhHEEE4t
|
||||||
{"TonyL", "021a559101e355c907d9c553671044d619769a6e71d624f68bfec7d0afa6bd6a96" }, // RHq3JsvLxU45Z8ufYS6RsDpSG4wi6ucDev
|
{"TonyL", "021a559101e355c907d9c553671044d619769a6e71d624f68bfec7d0afa6bd6a96" }, // RHq3JsvLxU45Z8ufYS6RsDpSG4wi6ucDev
|
||||||
{"Emman", "038f642dcdacbdf510b7869d74544dbc6792548d9d1f8d73a999dd9f45f513c935" }, //RN2KsQGW36Ah4NorJDxLJp2xiYJJEzk9Y6
|
|
||||||
{"CHMEX", "03ed125d1beb118d12ff0a052bdb0cee32591386d718309b2924f2c36b4e7388e6" }, // RF4HiVeuYpaznRPs7fkRAKKYqT5tuxQQTL
|
{"CHMEX", "03ed125d1beb118d12ff0a052bdb0cee32591386d718309b2924f2c36b4e7388e6" }, // RF4HiVeuYpaznRPs7fkRAKKYqT5tuxQQTL
|
||||||
|
{"metaphilibert", "0344182c376f054e3755d712361672138660bda8005abb64067eb5aa98bdb40d10" }, // RG28QSnYFADBg1dAVkH1uPGYS6F8ioEUM2
|
||||||
|
{"greentea", "02054c14ae81838a063d22a75eaa3c961415f6825a57c8b8e4148d19dad64f128e" }, // REF7R76WpL1v7nSXjjiNHtRa2xYtq5qk1p
|
||||||
|
{"CMaurice", "025830ce81bd1301fb67d5872344efa7a9ff99ae85fe1234f18c085db9072b740f" }, // RX7pXUaV24xFn6DVKV8t3PrRF3gKw6TBjf
|
||||||
{"Bar_F1sh_Rel", "0395f2d9dd9ccb78caf74bff49b6d959afb95af746462e1b35f4a167d8e82b3666" }, // RBbLxJagCA9QHDazQvfnDZe874V1K4Gu8t
|
{"Bar_F1sh_Rel", "0395f2d9dd9ccb78caf74bff49b6d959afb95af746462e1b35f4a167d8e82b3666" }, // RBbLxJagCA9QHDazQvfnDZe874V1K4Gu8t
|
||||||
{"jusoaresf", "02dfb7ed72a23f6d07f0ea2f28192ee174733cc8412ec0f97b073007b78fab6346" }, // RBQGfE5Hxsjm1BPraTxbneRuNasPDuoLnu
|
{"zatJUM", "030fff499b6dc0215344b28a0b6b4becdfb00cd34cd1b36b983ec14f47965fd4bc" }, // RSoEDLBasth7anxS8gbkg6KgeGiz8rhqv1
|
||||||
|
{"dwy", "03669457b2934d98b5761121dd01b243aed336479625b293be9f8c43a6ae7aaeff" }, // RKhZMqRF361FSGFAzstP5AhozekPjoVh5q
|
||||||
|
{"gcharang", "03336ca9db27cb6e882830e20dc525884e27dc94d557a5e68b972a5cbf9e8c62a8" }, // RJYiWn3FRCSSLf9Pe5RJcbrKQYosaMburP
|
||||||
|
{"computergenie", "027313dabde94fb72f823231d0a1c59fc7baa2e5b3bb2af97ca7d70aae116026b9" }, // RLabsCGxTRqJcJvz6foKuXAB61puJ2x8yt
|
||||||
|
{"daemonfox", "0383484bdc745b2b953c85b5a0c496a1f27bc42ae971f15779ed1532421b3dd943" }, //
|
||||||
|
{"SHossain", "02791f5c215b8a19c143a98e3371ff03b5613df9ac430c4a331ca55fed5761c800" }, // RKdLoHkyeorXmMtj91B1AAnAGiwsdt9MdF
|
||||||
|
{"Nabob", "03ee91c20b6d26e3604022f42df6bb8de6f669da4591f93b568778cba13d9e9ddf" }, // RRwCLPZDzpHEFJnLev4phy51e2stHRUAaU
|
||||||
{"mylo", "03f6b7fcaf0b8b8ec432d0de839a76598b78418dadd50c8e5594c0e557d914ec09" }, // RXN4hoZkhUkkrnef9nTUDw3E3vVALAD8Kx
|
{"mylo", "03f6b7fcaf0b8b8ec432d0de839a76598b78418dadd50c8e5594c0e557d914ec09" }, // RXN4hoZkhUkkrnef9nTUDw3E3vVALAD8Kx
|
||||||
{"blackjok3r2", "02f7597468703c1c5c8465dd6d43acaae697df9df30bed21494d193412a1ea193e" }, // RWHGbrLSP89fTzNVF9U9xiekDYJqcibTca
|
|
||||||
{"blackjok3r3", "03c3e4c0206551dbf3a4b24d18e5d2737080541184211e3bfd2b1092177410b9c2" }, // RMMav2AVse5XHPvDfTzRpMbFhK3GqFmtSN
|
|
||||||
{"kmdkrazy", "02f7597468703c1c5c8465dd6d43acaae697df9df30bed21494d193412a1ea193e" }, // RWHGbrLSP89fTzNVF9U9xiekDYJqcibTca
|
|
||||||
{"alrighttest", "02e9dfe248f453b499315a90375e58a1c9ad79f5f3932ecb2205399a0f262d65fc" }, // RBevSstS8JtDXMEFNcJws4QTYN4PcE2VL5
|
|
||||||
{"alrighttest1", "03527c7ecd6a8c5db6d685a64e6e18c1edb49e2f057a434f56c3f1253a26e9c6a2" }, // RBw2jNU3dnGk86ZLqPMadJwRwg3NU8eC6s
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{"blackjok3r", "021914947402d936a89fbdd1b12be49eb894a1568e5e17bb18c8a6cffbd3dc106e" }, // RTVti13NP4eeeZaCCmQxc2bnPdHxCJFP9x
|
{"blackjok3r", "021914947402d936a89fbdd1b12be49eb894a1568e5e17bb18c8a6cffbd3dc106e" }, // RTVti13NP4eeeZaCCmQxc2bnPdHxCJFP9x
|
||||||
|
|||||||
@@ -49,8 +49,10 @@
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
#include "komodo_defs.h"
|
#include "komodo_defs.h"
|
||||||
extern int32_t ASSETCHAINS_FOUNDERS;
|
|
||||||
|
|
||||||
|
extern int32_t ASSETCHAINS_FOUNDERS;
|
||||||
|
uint64_t komodo_commission(const CBlock *pblock,int32_t height);
|
||||||
|
int32_t komodo_blockload(CBlock& block,CBlockIndex *pindex);
|
||||||
arith_uint256 komodo_PoWtarget(int32_t *percPoSp,arith_uint256 target,int32_t height,int32_t goalperc);
|
arith_uint256 komodo_PoWtarget(int32_t *percPoSp,arith_uint256 target,int32_t height,int32_t goalperc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1009,6 +1011,7 @@ UniValue getblocksubsidy(const UniValue& params, bool fHelp)
|
|||||||
"\nResult:\n"
|
"\nResult:\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" \"miner\" : x.xxx (numeric) The mining reward amount in KMD.\n"
|
" \"miner\" : x.xxx (numeric) The mining reward amount in KMD.\n"
|
||||||
|
" \"ac_pubkey\" : x.xxx (numeric) The mining reward amount in KMD.\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
"\nExamples:\n"
|
"\nExamples:\n"
|
||||||
+ HelpExampleCli("getblocksubsidy", "1000")
|
+ HelpExampleCli("getblocksubsidy", "1000")
|
||||||
@@ -1019,11 +1022,32 @@ UniValue getblocksubsidy(const UniValue& params, bool fHelp)
|
|||||||
int nHeight = (params.size()==1) ? params[0].get_int() : chainActive.Height();
|
int nHeight = (params.size()==1) ? params[0].get_int() : chainActive.Height();
|
||||||
if (nHeight < 0)
|
if (nHeight < 0)
|
||||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Block height out of range");
|
throw JSONRPCError(RPC_INVALID_PARAMETER, "Block height out of range");
|
||||||
|
|
||||||
|
CAmount nFoundersReward = 0;
|
||||||
CAmount nReward = GetBlockSubsidy(nHeight, Params().GetConsensus());
|
CAmount nReward = GetBlockSubsidy(nHeight, Params().GetConsensus());
|
||||||
UniValue result(UniValue::VOBJ);
|
UniValue result(UniValue::VOBJ);
|
||||||
result.push_back(Pair("miner", ValueFromAmount(nReward)));
|
result.push_back(Pair("miner", ValueFromAmount(nReward)));
|
||||||
//result.push_back(Pair("founders", ValueFromAmount(nFoundersReward)));
|
|
||||||
|
if ( strlen(ASSETCHAINS_OVERRIDE_PUBKEY.c_str()) == 66 || ASSETCHAINS_SCRIPTPUB.size() > 1 )
|
||||||
|
{
|
||||||
|
if ( ASSETCHAINS_FOUNDERS == 0 && ASSETCHAINS_COMMISSION != 0 )
|
||||||
|
{
|
||||||
|
// ac comission chains need the block to exist to calulate the reward.
|
||||||
|
if ( nHeight <= chainActive.Height() )
|
||||||
|
{
|
||||||
|
CBlockIndex* pblockIndex = chainActive[nHeight];
|
||||||
|
CBlock block;
|
||||||
|
if ( komodo_blockload(block, pblockIndex) == 0 )
|
||||||
|
nFoundersReward = komodo_commission(&block, nHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( ASSETCHAINS_FOUNDERS != 0 )
|
||||||
|
{
|
||||||
|
// Assetchains founders chains have a fixed reward so can be calculated at any given height.
|
||||||
|
nFoundersReward = komodo_commission(0, nHeight);
|
||||||
|
}
|
||||||
|
result.push_back(Pair("ac_pubkey", ValueFromAmount(nFoundersReward)));
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user