diff --git a/src/rpcclient.cpp b/src/rpcclient.cpp index fe7903ad0..d8fc89014 100644 --- a/src/rpcclient.cpp +++ b/src/rpcclient.cpp @@ -95,7 +95,8 @@ static const CRPCConvertParam vRPCConvertParams[] = { "zcrawpour", 2 }, { "zcrawpour", 3 }, { "zcrawpour", 4 }, - { "zcbenchmark", 1 } + { "zcbenchmark", 1 }, + { "getblocksubsidy", 0} }; class CRPCConvertTable diff --git a/src/rpcmining.cpp b/src/rpcmining.cpp index a8f400271..c7092db74 100644 --- a/src/rpcmining.cpp +++ b/src/rpcmining.cpp @@ -766,3 +766,27 @@ Value estimatepriority(const Array& params, bool fHelp) return mempool.estimatePriority(nBlocks); } + +Value getblocksubsidy(const Array& params, bool fHelp) +{ + if (fHelp || params.size() != 1) + throw runtime_error( + "getblocksubsidy index\n" + "\nReturns block subsidy reward, taking into account the mining slow start, of block at index provided.\n" + "\nArguments:\n" + "1. index (numeric, required) The block index\n" + "\nResult:\n" + "amount (numeric) The block reward amount in ZEC.\n" + "\nExamples:\n" + + HelpExampleCli("getblocksubsidy", "1000") + + HelpExampleRpc("getblockubsidy", "1000") + ); + + LOCK(cs_main); + int nHeight = params[0].get_int(); + if (nHeight < 0 || nHeight > chainActive.Height()) + throw JSONRPCError(RPC_INVALID_PARAMETER, "Block height out of range"); + + CAmount nReward = GetBlockSubsidy(nHeight, Params().GetConsensus()); + return ValueFromAmount(nReward); +} diff --git a/src/rpcserver.cpp b/src/rpcserver.cpp index e042db37f..528e2e0ee 100644 --- a/src/rpcserver.cpp +++ b/src/rpcserver.cpp @@ -304,6 +304,7 @@ static const CRPCCommand vRPCCommands[] = { "mining", "getnetworkhashps", &getnetworkhashps, true }, { "mining", "prioritisetransaction", &prioritisetransaction, true }, { "mining", "submitblock", &submitblock, true }, + { "mining", "getblocksubsidy", &getblocksubsidy, true }, #ifdef ENABLE_WALLET /* Coin generation */ diff --git a/src/rpcserver.h b/src/rpcserver.h index aa64e0252..843736098 100644 --- a/src/rpcserver.h +++ b/src/rpcserver.h @@ -240,6 +240,8 @@ extern json_spirit::Value getchaintips(const json_spirit::Array& params, bool fH extern json_spirit::Value invalidateblock(const json_spirit::Array& params, bool fHelp); extern json_spirit::Value reconsiderblock(const json_spirit::Array& params, bool fHelp); +extern json_spirit::Value getblocksubsidy(const json_spirit::Array& params, bool fHelp); + // in rest.cpp extern bool HTTPReq_REST(AcceptedConnection *conn, const std::string& strURI,