Add z_sweepstatus RPC

This commit is contained in:
Jonathan "Duke" Leto
2022-08-27 10:35:08 -07:00
parent 02ef714901
commit 4aedeb557b
5 changed files with 50 additions and 2 deletions

View File

@@ -2086,6 +2086,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
} }
auto hasSpendingKey = boost::apply_visitor(HaveSpendingKeyForPaymentAddress(pwalletMain), zSweep); auto hasSpendingKey = boost::apply_visitor(HaveSpendingKeyForPaymentAddress(pwalletMain), zSweep);
auto allowSweepToExternalWallet = GetArg("-zsweepexternal", false); auto allowSweepToExternalWallet = GetArg("-zsweepexternal", false);
pwalletMain->sweepAddress = vSweep[i];
if (!hasSpendingKey) { if (!hasSpendingKey) {
if (allowSweepToExternalWallet) { if (allowSweepToExternalWallet) {

View File

@@ -472,6 +472,7 @@ extern UniValue z_getbalance(const UniValue& params, bool fHelp, const CPubKey&
extern UniValue z_gettotalbalance(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp extern UniValue z_gettotalbalance(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
extern UniValue z_mergetoaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp extern UniValue z_mergetoaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
extern UniValue z_sendmany(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp extern UniValue z_sendmany(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
extern UniValue z_sweepstatus(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
extern UniValue z_shieldcoinbase(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp extern UniValue z_shieldcoinbase(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
extern UniValue z_getoperationstatus(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp extern UniValue z_getoperationstatus(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
extern UniValue z_getoperationresult(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp extern UniValue z_getoperationresult(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp

View File

@@ -64,7 +64,7 @@ void AsyncRPCOperation_sweep::main() {
set_state(OperationStatus::FAILED); set_state(OperationStatus::FAILED);
} }
std::string s = strprintf("%s: Sapling Sweep transaction created. (status=%s", getId(), getStateAsString()); std::string s = strprintf("%s: Sweep transaction created. (status=%s", getId(), getStateAsString());
if (success) { if (success) {
s += strprintf(", success)\n"); s += strprintf(", success)\n");
} else { } else {

View File

@@ -3315,6 +3315,48 @@ UniValue getalldata(const UniValue& params, bool fHelp,const CPubKey&)
return returnObj; return returnObj;
} }
UniValue z_sweepstatus(const UniValue& params, bool fHelp, const CPubKey& mypk)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
if (fHelp || params.size() > 0)
throw runtime_error(
"z_sweepstatus\n"
"\nGive details about zsweep operations since the node was started."
"}\n"
"\nExamples:\n"
+ HelpExampleCli("z_sweepstatus", "")
+ HelpExampleRpc("z_sweepstatus", "")
);
LOCK2(cs_main, pwalletMain->cs_wallet);
UniValue ret(UniValue::VOBJ);
auto amount_swept;
ret.push_back(Pair("zsweep", pwalletMain->fSweepEnabled));
ret.push_back(Pair("running", pwalletMain->fSweepRunning));
ret.push_back(Pair("amount_swept", amount_swept));
if (pwalletMain->fConsolidationRunning) {
ret.push_back(Pair("next_zsweep", pwalletMain->sweepInterval + chainActive.Tip()->GetHeight()));
} else {
if (pwalletMain->nextConsolidation == 0) {
ret.push_back(Pair("next_zsweep", chainActive.Tip()->GetHeight() + 1));
} else {
ret.push_back(Pair("next_zsweep", pwalletMain->nextSweep));
}
}
ret.push_back(Pair("zsweepinterval", pwalletMain->sweepInterval));
ret.push_back(Pair("zsweepaddress", pwalletMain->sweepAddress));
ret.push_back(Pair("zsweepmaxinputs", pwalletMain->sweepMaxInputs));
ret.push_back(Pair("zsweepfee", pwalletMain->sweepFee));
ret.push_back(Pair("zsweepexternal", pwalletMain->fSweepExternalEnabled));
return ret;
}
UniValue z_listreceivedaddress(const UniValue& params, bool fHelp,const CPubKey&) UniValue z_listreceivedaddress(const UniValue& params, bool fHelp,const CPubKey&)
{ {
if (!EnsureWalletIsAvailable(fHelp)) if (!EnsureWalletIsAvailable(fHelp))

View File

@@ -805,8 +805,12 @@ public:
bool fSaplingConsolidationEnabled = false; bool fSaplingConsolidationEnabled = false;
bool fConsolidationRunning = false; bool fConsolidationRunning = false;
bool fSweepEnabled = false; bool fSweepEnabled = false;
bool fSweepExternalEnabled = false;
bool fSweepRunning = false; bool fSweepRunning = false;
int nextSweep = 0; int nextSweep = 0;
int sweepInterval = 20;
int sweepMaxInputs = 200;
std::string sweepAddress = "";
void ClearNoteWitnessCache(); void ClearNoteWitnessCache();