Browse Source

add rescan rpc

danger
Duke Leto 4 years ago
parent
commit
2fbcca4167
  1. 1
      src/rpc/server.h
  2. 37
      src/wallet/rpcdump.cpp
  3. 3
      src/wallet/rpcwallet.cpp

1
src/rpc/server.h

@ -489,6 +489,7 @@ extern UniValue z_getoperationstatus(const UniValue& params, bool fHelp, const C
extern UniValue z_getoperationresult(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
extern UniValue z_listoperationids(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
extern UniValue opreturn_burn(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
extern UniValue rescan(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
extern UniValue z_validateaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcmisc.cpp
extern UniValue z_getpaymentdisclosure(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdisclosure.cpp
extern UniValue z_validatepaymentdisclosure(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdisclosure.cpp

37
src/wallet/rpcdump.cpp

@ -149,6 +149,43 @@ UniValue convertpassphrase(const UniValue& params, bool fHelp, const CPubKey& my
return ret;
}
UniValue rescan(const UniValue& params, bool fHelp, const CPubKey& mypk)
{
//LOCK2(cs_main, pwalletMain->cs_wallet);
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
if (fHelp || params.size() > 1)
throw runtime_error(
"rescan \"height\"\n"
"\nRescan all transactions from genesis or given block height.\n"
"\nArguments:\n"
"1. \"height\" (integer, optional) The block height to rescan from\n"
"\nExamples:\n"
"\nRescan from block height 555\n"
+ HelpExampleCli("rescan", "\"555\"") +
"\nRescan from genesis block\n"
+ HelpExampleCli("rescan","")
);
// Height to rescan from
int nRescanHeight = 0;
if (params.size() > 0)
nRescanHeight = params[0].get_int();
if (nRescanHeight < 0 || nRescanHeight > chainActive.Height()) {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Block height out of range");
}
LogPrintf("Rescanning from height=%d\n", nRescanHeight);
//pwalletMain->ScanForWalletTransactions(chainActive[nRescanHeight],true);
bool update = false;
pwalletMain->ScanForWalletTransactions(chainActive.Genesis(),update);
//TODO: can we return something more useful?
return NullUniValue;
}
UniValue importprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk)
{
if (!EnsureWalletIsAvailable(fHelp))

3
src/wallet/rpcwallet.cpp

@ -8228,6 +8228,8 @@ extern UniValue z_exportviewingkey(const UniValue& params, bool fHelp, const CPu
extern UniValue z_importviewingkey(const UniValue& params, bool fHelp, const CPubKey& mypk);
extern UniValue z_exportwallet(const UniValue& params, bool fHelp, const CPubKey& mypk);
extern UniValue z_importwallet(const UniValue& params, bool fHelp, const CPubKey& mypk);
extern UniValue rescan(const UniValue& params, bool fHelp, const CPubKey& mypk);
static const CRPCCommand commands[] =
{ // category name actor (function) okSafeMode
@ -8266,6 +8268,7 @@ static const CRPCCommand commands[] =
{ "wallet", "listunspent", &listunspent, false },
{ "wallet", "lockunspent", &lockunspent, true },
{ "wallet", "move", &movecmd, false },
{ "wallet", "rescan", &rescan, false },
{ "wallet", "sendfrom", &sendfrom, false },
{ "wallet", "sendmany", &sendmany, false },
{ "wallet", "sendtoaddress", &sendtoaddress, false },

Loading…
Cancel
Save