From b03eaac7a7fda04c5c9dbc5f1bedb5b05f7f11d6 Mon Sep 17 00:00:00 2001 From: Craig Donnachie Date: Sat, 6 Apr 2024 16:16:32 -0400 Subject: [PATCH 1/2] Update for fees - Cummmunity/Dev 9% - Data mining 7% - MN 50% - Miner 25% Add fees to GBT --- src/chainparams.cpp | 26 +++++++++++++++++-------- src/consensus/params.h | 1 + src/fund_payment.cpp | 2 +- src/miner.cpp | 3 +++ src/primitives/block.h | 2 ++ src/rpc/mining.cpp | 43 +++++++++++++++++++++++++++++++++++++++++- src/rpc/server.cpp | 16 ++++++++++++++++ 7 files changed, 83 insertions(+), 10 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 02fb014..c7ea9de 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -198,16 +198,19 @@ class CMainParams : public CChainParams { consensus.nStartCollateralChange = 75000; - std::vector rewardStructures = { {INT_MAX, 10} }; // 10% dev/community fee forever + std::vector rewardStructures = { {165000, 10}, {INT_MAX, 9} }; // 9% dev/community fee forever + std::vector rewardStructuresDataMining = { {INT_MAX, 7} }; // 7% data mining fee forever consensus.nDevelopmentFundPayment = FundPayment(rewardStructures, 30, "KWTco92wURX5Jwu3mMdWrs36j574meAvew"); consensus.nCommunityFundPayment = FundPayment(rewardStructures, 30,"KDW8CeScVpWFzekvZm4f37qs5GxByEGSKE"); + consensus.nDataMiningFundPayment = FundPayment(rewardStructuresDataMining, 165000,"KVibEVgfWA8qtiwdNNfH9n7tW3uL1ZFcRj"); + consensus.nCollaterals = CMasternodeCollaterals( { {75000, 1000 * COIN}, // Block 0 - 74999 Collateral 1000 {125000, 2500 * COIN}, // Block 75000 - 124999 Collateral 2500 {175000, 3000 * COIN}, // Block 125000 - 174999 Collateral 3000 {INT_MAX, 4000 * COIN} // Block 175000 - Infinity Collateral 4000 }, - { {INT_MAX, 60} } + { {165000, 60},{INT_MAX, 50} } ); consensus.nStartBlacklist = 29399; @@ -517,16 +520,18 @@ class CTestNetParams : public CChainParams { consensus.nStartCollateralChange = 50; - std::vector rewardStructures = { {INT_MAX, 10} }; // 10% dev/community fee forever + std::vector rewardStructures = { {250, 10}, {INT_MAX, 9} }; // 9% dev/community fee forever + std::vector rewardStructuresDataMining = { { INT_MAX, 7} }; // 7% data mining fee forever consensus.nDevelopmentFundPayment = FundPayment(rewardStructures, 1, "TWDxLLKsFp6qcV1LL4U2uNmW4HwMcapmMU"); consensus.nCommunityFundPayment = FundPayment(rewardStructures, 1,"TCkC4uoErEyCB4MK3d6ouyJELoXnuyqe9L"); + consensus.nDataMiningFundPayment = FundPayment(rewardStructuresDataMining, 250,"TCkC4uoErEyCB4MK3d6ouyJELoXnuyqe9L"); consensus.nCollaterals = CMasternodeCollaterals( { {250, 50 * COIN}, {450, 150 * COIN}, {650, 250 * COIN}, {INT_MAX, 400 * COIN} }, - { {250, 60}, {INT_MAX, 62} } + { {250, 60}, {INT_MAX, 50} } ); consensus.nStartBlacklist = 0; @@ -796,14 +801,17 @@ class CDevNetParams : public CChainParams { consensus.nStartCollateralChange = 200; - std::vector rewardStructures = { {INT_MAX, 10} }; // 10% dev/community fee forever + std::vector rewardStructures = { {200, 10}, {INT_MAX, 9} }; // 9% dev/community fee forever + std::vector rewardStructuresDataMining = { {INT_MAX, 7} }; // 7% Data Mining fee forever + consensus.nDevelopmentFundPayment = FundPayment(rewardStructures, 30, "TepVKkmUo1N6sazuM2wWwV7aiG4m1BUShU"); consensus.nCommunityFundPayment = FundPayment(rewardStructures, 30,"TZpbhfvQE61USHsxd55XdPpWBqu3SXB1EP"); + consensus.nDataMiningFundPayment = FundPayment(rewardStructuresDataMining, 200,"TZpbhfvQE61USHsxd55XdPpWBqu3SXB1EP"); consensus.nCollaterals = CMasternodeCollaterals( { {200, 1000 * COIN}, {INT_MAX, 5000 * COIN} }, - { {200, 60}, {INT_MAX, 62} } + { {200, 60}, {INT_MAX, 50} } ); consensus.nStartBlacklist = 0; @@ -1037,14 +1045,16 @@ class CRegTestParams : public CChainParams { consensus.nStartCollateralChange = 200; - std::vector rewardStructures = { {INT_MAX, 10} }; // 10% dev/community fee forever + std::vector rewardStructures = { {200, 10}, {INT_MAX, 9} }; // 10% dev/community fee forever + std::vector rewardStructuresDataMining = { {INT_MAX, 7} }; // 7% Data Mining fee forever consensus.nDevelopmentFundPayment = FundPayment(rewardStructures, 1, "TGEGf26GwyUBE2P2o2beBAfE9Y438dCp5t"); consensus.nCommunityFundPayment = FundPayment(rewardStructures, 1,"TJmPzeJF4DECrBwUftc265U7rTPxKmpa4F"); + consensus.nDataMiningFundPayment = FundPayment(rewardStructuresDataMining, 200,"TZpbhfvQE61USHsxd55XdPpWBqu3SXB1EP"); consensus.nCollaterals = CMasternodeCollaterals( { {200, 1000 * COIN}, {INT_MAX, 5000 * COIN} }, - { {200, 60}, {INT_MAX, 62} } + { {200, 60}, {INT_MAX, 50} } ); consensus.nMajorityEnforceBlockUpgrade = 750; diff --git a/src/consensus/params.h b/src/consensus/params.h index 8aa97c7..a6bd084 100644 --- a/src/consensus/params.h +++ b/src/consensus/params.h @@ -170,6 +170,7 @@ struct Params { FundPayment nDevelopmentFundPayment; FundPayment nCommunityFundPayment; + FundPayment nDataMiningFundPayment; CMasternodeCollaterals nCollaterals; int nStartDuplicationCheck; diff --git a/src/fund_payment.cpp b/src/fund_payment.cpp index bc7c593..b76b8cb 100644 --- a/src/fund_payment.cpp +++ b/src/fund_payment.cpp @@ -23,7 +23,7 @@ CAmount FundPayment::getFundPaymentAmount(int blockHeight, CAmount blockReward) } for(int i = 0; i < rewardStructures.size(); i++) { FundRewardStructure rewardStructure = rewardStructures[i]; - if(rewardStructure.blockHeight == INT_MAX || blockHeight <= rewardStructure.blockHeight) { + if(rewardStructure.blockHeight == INT_MAX || blockHeight < rewardStructure.blockHeight) { return blockReward * rewardStructure.rewardPercentage / 100; } } diff --git a/src/miner.cpp b/src/miner.cpp index 9a80f55..7c43dc8 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -816,6 +816,9 @@ void BlockAssembler::FillFoundersReward(CMutableTransaction &coinbaseTx, bool fM FundPayment communityFundPayment = params.nCommunityFundPayment; communityFundPayment.FillFundPayment(coinbaseTx, nHeight, nAmount,pblock->txoutCommunity); + + FundPayment dataMiningFundPayment = params.nDataMiningFundPayment; + dataMiningFundPayment.FillFundPayment(coinbaseTx, nHeight, nAmount,pblock->txoutDataMining); } else { // Stage 2 diff --git a/src/primitives/block.h b/src/primitives/block.h index 7877a46..bf6ee21 100644 --- a/src/primitives/block.h +++ b/src/primitives/block.h @@ -282,6 +282,7 @@ class CBlock : public CBlockHeader // memory only mutable CTxOut txoutCommunity; // community payment mutable CTxOut txoutDevelopment; // development payment + mutable CTxOut txoutDataMining; // data mining payment mutable CTxOut txoutZnode; // znode payment mutable std::vector voutSuperblock; // superblock payment mutable bool fChecked; @@ -324,6 +325,7 @@ class CBlock : public CBlockHeader vtx.clear(); txoutCommunity = CTxOut(); txoutDevelopment = CTxOut(); + txoutDataMining = CTxOut(); txoutZnode = CTxOut(); voutSuperblock.clear(); fChecked = false; diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index 131cae8..20d99ee 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -571,7 +571,8 @@ UniValue getblocktemplate(const JSONRPCRequest& request) throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Peer-to-peer functionality missing or disabled"); if (g_connman->GetNodeCount(CConnman::CONNECTIONS_ALL) == 0) - throw JSONRPCError(RPC_CLIENT_NOT_CONNECTED, "Kiirocoin is not connected!"); + if(Params().NetworkIDString() == "main") + throw JSONRPCError(RPC_CLIENT_NOT_CONNECTED, "Kiirocoin is not connected!"); if (IsInitialBlockDownload()) throw JSONRPCError(RPC_CLIENT_IN_INITIAL_DOWNLOAD, "Kiirocoin is downloading blocks..."); @@ -848,6 +849,46 @@ UniValue getblocktemplate(const JSONRPCRequest& request) result.push_back(Pair("znode_payments_started", true)); result.push_back(Pair("znode_payments_enforced", true)); + + UniValue communityObj(UniValue::VOBJ); + FundPayment communityFundPayment = Params().GetConsensus().nCommunityFundPayment; + if(pblock->txoutCommunity != CTxOut()) { + CTxDestination address; + ExtractDestination(pblock->txoutCommunity.scriptPubKey, address); + CBitcoinAddress address2(address); + communityObj.push_back(Pair("payee", address2.ToString().c_str())); + communityObj.push_back(Pair("script", HexStr(pblock->txoutCommunity.scriptPubKey.begin(), pblock->txoutCommunity.scriptPubKey.end()))); + communityObj.push_back(Pair("amount", pblock->txoutCommunity.nValue)); + } + result.push_back(Pair("community", communityObj)); + result.push_back(Pair("community_payments_started", pindexPrev->nHeight + 1 >= communityFundPayment.getStartBlock())); + + UniValue developmentObj(UniValue::VOBJ); + FundPayment developmentFundPayment = Params().GetConsensus().nCommunityFundPayment; + if(pblock->txoutDevelopment != CTxOut()) { + CTxDestination address; + ExtractDestination(pblock->txoutDevelopment.scriptPubKey, address); + CBitcoinAddress address2(address); + developmentObj.push_back(Pair("payee", address2.ToString().c_str())); + developmentObj.push_back(Pair("script", HexStr(pblock->txoutDevelopment.scriptPubKey.begin(), pblock->txoutDevelopment.scriptPubKey.end()))); + developmentObj.push_back(Pair("amount", pblock->txoutDevelopment.nValue)); + } + result.push_back(Pair("developer", developmentObj)); + result.push_back(Pair("developer_payments_started", pindexPrev->nHeight + 1 >= communityFundPayment.getStartBlock())); + + UniValue dataMiningtObj(UniValue::VOBJ); + FundPayment dataMiningFundPayment = Params().GetConsensus().nDataMiningFundPayment; + if(pblock->txoutDataMining != CTxOut()) { + CTxDestination address; + ExtractDestination(pblock->txoutDataMining.scriptPubKey, address); + CBitcoinAddress address2(address); + dataMiningtObj.push_back(Pair("payee", address2.ToString().c_str())); + dataMiningtObj.push_back(Pair("script", HexStr(pblock->txoutDataMining.scriptPubKey.begin(), pblock->txoutDataMining.scriptPubKey.end()))); + dataMiningtObj.push_back(Pair("amount", pblock->txoutDataMining.nValue)); + } + result.push_back(Pair("datamining", dataMiningtObj)); + result.push_back(Pair("datamining_payments_started", pindexPrev->nHeight + 1 >= dataMiningFundPayment.getStartBlock())); + if (pindexPrev->nHeight+1 >= Params().GetConsensus().DIP0003Height) { result.push_back(Pair("coinbase_payload", HexStr(pblock->vtx[0]->vExtraPayload))); } diff --git a/src/rpc/server.cpp b/src/rpc/server.cpp index e510099..323c8ad 100644 --- a/src/rpc/server.cpp +++ b/src/rpc/server.cpp @@ -316,6 +316,22 @@ UniValue stop(const JSONRPCRequest& jsonRequest) return "Kiirocoin server stopping"; } +UniValue uptime(const JSONRPCRequest& jsonRequest) +{ + if (jsonRequest.fHelp || jsonRequest.params.size() > 1) + throw std::runtime_error( + "uptime\n" + "\nReturns the total uptime of the server.\n" + "\nResult:\n" + "ttt (numeric) The number of seconds that the server has been running\n" + "\nExamples:\n" + + HelpExampleCli("uptime", "") + + HelpExampleRpc("uptime", "") + ); + + return GetTime() - GetStartupTime(); +} + /** * Call Table */ From e7fe974e2bfa53d756441b81ef028d1095ffeb4e Mon Sep 17 00:00:00 2001 From: KiiroDev Date: Sun, 12 May 2024 08:31:20 -0400 Subject: [PATCH 2/2] Bump data mining block to 190000 --- src/chainparams.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index c7ea9de..9b5fc1d 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -202,7 +202,7 @@ class CMainParams : public CChainParams { std::vector rewardStructuresDataMining = { {INT_MAX, 7} }; // 7% data mining fee forever consensus.nDevelopmentFundPayment = FundPayment(rewardStructures, 30, "KWTco92wURX5Jwu3mMdWrs36j574meAvew"); consensus.nCommunityFundPayment = FundPayment(rewardStructures, 30,"KDW8CeScVpWFzekvZm4f37qs5GxByEGSKE"); - consensus.nDataMiningFundPayment = FundPayment(rewardStructuresDataMining, 165000,"KVibEVgfWA8qtiwdNNfH9n7tW3uL1ZFcRj"); + consensus.nDataMiningFundPayment = FundPayment(rewardStructuresDataMining, 190000,"KVibEVgfWA8qtiwdNNfH9n7tW3uL1ZFcRj"); consensus.nCollaterals = CMasternodeCollaterals( { {75000, 1000 * COIN}, // Block 0 - 74999 Collateral 1000