RPC: add 'verifychain', to verify chain database at runtime
This commit is contained in:
parent
168ba99392
commit
f590653377
4 changed files with 21 additions and 1 deletions
|
@ -258,6 +258,7 @@ static const CRPCCommand vRPCCommands[] =
|
|||
{ "gettxout", &gettxout, true, false },
|
||||
{ "lockunspent", &lockunspent, false, false },
|
||||
{ "listlockunspent", &listlockunspent, false, false },
|
||||
{ "verifychain", &verifychain, true, false },
|
||||
};
|
||||
|
||||
CRPCTable::CRPCTable()
|
||||
|
@ -1198,6 +1199,8 @@ Array RPCConvertValues(const std::string &strMethod, const std::vector<std::stri
|
|||
if (strMethod == "lockunspent" && n > 0) ConvertTo<bool>(params[0]);
|
||||
if (strMethod == "lockunspent" && n > 1) ConvertTo<Array>(params[1]);
|
||||
if (strMethod == "importprivkey" && n > 2) ConvertTo<bool>(params[2]);
|
||||
if (strMethod == "verifychain" && n > 0) ConvertTo<boost::int64_t>(params[0]);
|
||||
if (strMethod == "verifychain" && n > 1) ConvertTo<boost::int64_t>(params[1]);
|
||||
|
||||
return params;
|
||||
}
|
||||
|
|
|
@ -205,5 +205,6 @@ extern json_spirit::Value getblockhash(const json_spirit::Array& params, bool fH
|
|||
extern json_spirit::Value getblock(const json_spirit::Array& params, bool fHelp);
|
||||
extern json_spirit::Value gettxoutsetinfo(const json_spirit::Array& params, bool fHelp);
|
||||
extern json_spirit::Value gettxout(const json_spirit::Array& params, bool fHelp);
|
||||
extern json_spirit::Value verifychain(const json_spirit::Array& params, bool fHelp);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2622,7 +2622,7 @@ bool VerifyDB(int nCheckLevel, int nCheckDepth)
|
|||
return true;
|
||||
|
||||
// Verify blocks in the best chain
|
||||
if (nCheckDepth == 0)
|
||||
if (nCheckDepth <= 0)
|
||||
nCheckDepth = 1000000000; // suffices until the year 19000
|
||||
if (nCheckDepth > nBestHeight)
|
||||
nCheckDepth = nBestHeight;
|
||||
|
|
|
@ -243,4 +243,20 @@ Value gettxout(const Array& params, bool fHelp)
|
|||
return ret;
|
||||
}
|
||||
|
||||
Value verifychain(const Array& params, bool fHelp)
|
||||
{
|
||||
if (fHelp || params.size() > 2)
|
||||
throw runtime_error(
|
||||
"verifychain [check level] [num blocks]\n"
|
||||
"Verifies blockchain database.");
|
||||
|
||||
int nCheckLevel = GetArg("-checklevel", 3);
|
||||
int nCheckDepth = GetArg("-checkblocks", 288);
|
||||
if (params.size() > 0)
|
||||
nCheckLevel = params[0].get_int();
|
||||
if (params.size() > 1)
|
||||
nCheckDepth = params[1].get_int();
|
||||
|
||||
return VerifyDB(nCheckLevel, nCheckDepth);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue