Merge branch 'getblockmerkletree' into dev
This commit is contained in:
@@ -856,6 +856,39 @@ UniValue gettxoutsetinfo(const UniValue& params, bool fHelp, const CPubKey& mypk
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UniValue getblockmerkletree(const UniValue& params, bool fHelp, const CPubKey& mypk)
|
||||||
|
{
|
||||||
|
if (fHelp || params.size() != 1 )
|
||||||
|
throw runtime_error(
|
||||||
|
"getblockmerkletree height\n"
|
||||||
|
"\nGet full merkletree for a given Hush or HSC block height.\n"
|
||||||
|
"\nArguments:\n"
|
||||||
|
"1. height (int, required) block height\n"
|
||||||
|
"\nResult:\n"
|
||||||
|
"\"hex\" (string) the merkle tree hex encoded\n"
|
||||||
|
+ HelpExampleCli("getblockmerkletree", "290000")
|
||||||
|
+ HelpExampleRpc("getblockmerkletree", "290000")
|
||||||
|
);
|
||||||
|
|
||||||
|
CBlockIndex* phushblockindex;
|
||||||
|
uint256 blockRoot;
|
||||||
|
SaplingMerkleTree tree;
|
||||||
|
|
||||||
|
int nHeight = params[0].get_int();
|
||||||
|
if ( (nHeight < 1) || (nHeight > chainActive.LastTip()->GetHeight()) ) {
|
||||||
|
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid Hush or HSC block height parameter");
|
||||||
|
}
|
||||||
|
|
||||||
|
phushblockindex = chainActive[nHeight];
|
||||||
|
blockRoot = phushblockindex->hashFinalSaplingRoot;
|
||||||
|
if( pcoinsTip->GetSaplingAnchorAt(blockRoot, tree) ) {
|
||||||
|
CDataStream ss(SER_NETWORK, PROTOCOL_VERSION);
|
||||||
|
ss << tree;
|
||||||
|
return HexStr(ss.begin(), ss.end());
|
||||||
|
} else {
|
||||||
|
throw JSONRPCError(RPC_INVALID_PARAMETER, "Could not find merkletree");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UniValue kvsearch(const UniValue& params, bool fHelp, const CPubKey& mypk)
|
UniValue kvsearch(const UniValue& params, bool fHelp, const CPubKey& mypk)
|
||||||
{
|
{
|
||||||
@@ -1877,6 +1910,7 @@ static const CRPCCommand commands[] =
|
|||||||
{ "blockchain", "getblockcount", &getblockcount, true },
|
{ "blockchain", "getblockcount", &getblockcount, true },
|
||||||
{ "blockchain", "getblock", &getblock, true },
|
{ "blockchain", "getblock", &getblock, true },
|
||||||
{ "blockchain", "getblockhash", &getblockhash, true },
|
{ "blockchain", "getblockhash", &getblockhash, true },
|
||||||
|
{ "blockchain", "getblockmerkletree", &getblockmerkletree, true },
|
||||||
{ "blockchain", "getblockheader", &getblockheader, true },
|
{ "blockchain", "getblockheader", &getblockheader, true },
|
||||||
{ "blockchain", "getchaintips", &getchaintips, true },
|
{ "blockchain", "getchaintips", &getchaintips, true },
|
||||||
{ "blockchain", "getchaintxstats", &getchaintxstats, true },
|
{ "blockchain", "getchaintxstats", &getchaintxstats, true },
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ static const CRPCConvertParam vRPCConvertParams[] =
|
|||||||
{ "getbalance", 1 },
|
{ "getbalance", 1 },
|
||||||
{ "getbalance", 2 },
|
{ "getbalance", 2 },
|
||||||
{ "getblockhash", 0 },
|
{ "getblockhash", 0 },
|
||||||
|
{ "getblockmerkletree", 0 },
|
||||||
{ "move", 2 },
|
{ "move", 2 },
|
||||||
{ "move", 3 },
|
{ "move", 3 },
|
||||||
{ "sendfrom", 2 },
|
{ "sendfrom", 2 },
|
||||||
|
|||||||
Reference in New Issue
Block a user