Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
8aa93b9
Bugfix: wallet: Increment "update counter" only after actually making
luke-jr Mar 9, 2017
8edb74f
Bug: increment counter when writing minversion
random-zebra Apr 2, 2021
9cfb711
CWalletDB: Store the update counter per wallet
luke-jr Mar 9, 2017
f9d7fe1
refactor: move bdb (bitdb) interaction from init.cpp to wallet.cpp
random-zebra Apr 22, 2021
dc2e022
[Refactor] fix WalletTestingSetup fixture
random-zebra Apr 22, 2021
fb64bbc
[Doc] Remove ThreadFlushWalletDB from developer notes
random-zebra Apr 22, 2021
a8dd236
RPC/Wallet: Pass CWallet as pointer to helper functions
random-zebra Apr 22, 2021
0e21e09
[Cleanup] Remove un-used printAddresses() function in rpcwallet
random-zebra Apr 22, 2021
325baaa
RPC: Do all wallet access through new GetWalletForJSONRPCRequest
random-zebra Apr 22, 2021
22f8507
[Trivial] Rename pwalletMain --> pwallet for local variables in RPC
random-zebra Apr 22, 2021
cc965fe
Move nWalletUnlockTime to CWallet::nRelockTime, and name timed task
luke-jr Sep 9, 2016
687c2fd
RPC: Pass on JSONRPCRequest metadata (URI/user/etc) for "help" method
luke-jr Dec 29, 2016
ca6a62d
[MOVE-ONLY] Move wallet RPC declarations to rpcwallet.h
random-zebra Apr 22, 2021
3bfa7d8
Wallet/RPC: Use filename rather than CWallet pointer, for lockwallet
luke-jr Jan 8, 2017
100d67c
Wallet: Sanitise -wallet parameter
luke-jr Jan 8, 2017
4bbad5c
[Wallet] Replace pwalletMain with a vector of wallet pointers
random-zebra Apr 22, 2021
d6cf608
[Refactor] Remove CWalletDBWrapper::GetUpdateCounter()
random-zebra Apr 22, 2021
d10acd5
[Tests] move pwalletMain to wallet test fixture + use smart pointer
random-zebra Apr 23, 2021
b27dcfe
Wallet: Support loading multiple wallets if -wallet used more than once
luke-jr Sep 9, 2016
647fbc9
Wallet: Move multiwallet sanity checks to CWallet::Verify, and do other
luke-jr Mar 9, 2017
e6efa6b
wallet: Include actual backup filename in recovery warning message
luke-jr Jun 5, 2017
60f9b4b
wallet: Base backup filenames on original wallet filename
luke-jr Jun 5, 2017
b6dbbf3
wallet: Forbid -salvagewallet, -zapwallettxes, and -upgradewallet with
random-zebra Apr 23, 2021
36796f2
[Cleanup] Fix formatting in wallet and walletdb
random-zebra Apr 23, 2021
dc596f3
[Doc] Add multiwallet section to release notes
random-zebra Apr 23, 2021
ff4cee0
[Trivial] Add wallet filename to backup errors/warning
random-zebra May 4, 2021
4734a84
[Cleanup][Tests] Fix chainparams-change in librust tests
random-zebra May 17, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
RPC: Do all wallet access through new GetWalletForJSONRPCRequest
>>> inspired by bitcoin/bitcoin@d77ad6d

currently pwalletMain local variables shadow the global.
These will be renamed to pwallet in the next commit (kept separate for
ease of review)
  • Loading branch information
random-zebra committed May 17, 2021
commit 325baaa1388e2518ba253f250422b92f8917ad72
2 changes: 2 additions & 0 deletions src/rpc/budget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ void checkBudgetInputs(const UniValue& params, std::string &strProposalName, std

UniValue preparebudget(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down
12 changes: 12 additions & 0 deletions src/rpc/masternode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,11 @@ UniValue startmasternode(const JSONRPCRequest& request)
throw JSONRPCError(RPC_MISC_ERROR, "startmasternode is not supported when deterministic masternode list is active (DIP3)");
}

CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

std::string strCommand;
if (request.params.size() >= 1) {
strCommand = request.params[0].get_str();
Expand Down Expand Up @@ -512,6 +517,11 @@ UniValue createmasternodekey (const JSONRPCRequest& request)

UniValue getmasternodeoutputs (const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

if (request.fHelp || (request.params.size() != 0))
throw std::runtime_error(
"getmasternodeoutputs\n"
Expand Down Expand Up @@ -807,6 +817,8 @@ bool DecodeHexMnb(CMasternodeBroadcast& mnb, std::string strHexMnb) {
}
UniValue createmasternodebroadcast(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down
6 changes: 6 additions & 0 deletions src/rpc/mining.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ UniValue generateBlocks(const Consensus::Params& consensus,

UniValue generate(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -276,6 +278,8 @@ UniValue getgenerate(const JSONRPCRequest& request)

UniValue setgenerate(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -442,6 +446,8 @@ static UniValue BIP22ValidationResult(const CValidationState& state)
#ifdef ENABLE_MINING_RPC
UniValue getblocktemplate(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (request.fHelp || request.params.size() > 1)
throw std::runtime_error(
"getblocktemplate ( \"jsonrequestobject\" )\n"
Expand Down
6 changes: 6 additions & 0 deletions src/rpc/misc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ UniValue getsupplyinfo(const JSONRPCRequest& request);
**/
UniValue getinfo(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (request.fHelp || request.params.size() != 0)
throw std::runtime_error(
"getinfo\n"
Expand Down Expand Up @@ -376,6 +378,8 @@ class DescribePaymentAddressVisitor : public boost::static_visitor<UniValue>

UniValue validateaddress(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (request.fHelp || request.params.size() != 1)
throw std::runtime_error(
"validateaddress \"pivxaddress\"\n"
Expand Down Expand Up @@ -502,6 +506,8 @@ CScript _createmultisig_redeemScript(CWallet * const pwallet, const UniValue& pa

UniValue createmultisig(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (request.fHelp || request.params.size() < 2 || request.params.size() > 2)
throw std::runtime_error(
"createmultisig nrequired [\"key\",...]\n"
Expand Down
6 changes: 4 additions & 2 deletions src/rpc/rawtransaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,8 @@ UniValue getrawtransaction(const JSONRPCRequest& request)

UniValue result(UniValue::VOBJ);
if (blockindex) result.pushKV("in_active_chain", in_active_chain);
TxToJSON(pwalletMain, *tx, hash_block, result);
CWallet * const pwallet = GetWalletForJSONRPCRequest(request);
TxToJSON(pwallet, *tx, hash_block, result);
return result;
}

Expand Down Expand Up @@ -421,7 +422,8 @@ UniValue decoderawtransaction(const JSONRPCRequest& request)
throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "TX decode failed");

UniValue result(UniValue::VOBJ);
TxToJSON(pwalletMain, CTransaction(std::move(mtx)), UINT256_ZERO, result);
CWallet * const pwallet = GetWalletForJSONRPCRequest(request);
TxToJSON(pwallet, CTransaction(std::move(mtx)), UINT256_ZERO, result);

return result;
}
Expand Down
8 changes: 7 additions & 1 deletion src/rpc/rpcevo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,8 @@ static ProRegPL ParseProRegPLParams(const UniValue& params, unsigned int paramId
// handles protx_register, and protx_register_prepare
static UniValue ProTxRegister(const JSONRPCRequest& request, bool fSignAndSend)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -493,6 +495,8 @@ UniValue protx_register_prepare(const JSONRPCRequest& request)

UniValue protx_register_submit(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -541,6 +545,8 @@ UniValue protx_register_submit(const JSONRPCRequest& request)

UniValue protx_register_fund(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -706,7 +712,7 @@ UniValue protx_list(const JSONRPCRequest& request)
CheckEvoUpgradeEnforcement();

#ifdef ENABLE_WALLET
CWallet* const pwallet = pwalletMain;
CWallet* const pwallet = GetWalletForJSONRPCRequest(request);
#else
CWallet* const pwallet = nullptr;
#endif
Expand Down
1 change: 1 addition & 0 deletions src/rpc/server.h
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@ class CWallet;

#ifdef ENABLE_WALLET
// New code should accessing the wallet should be under the ../wallet/ directory
CWallet* GetWalletForJSONRPCRequest(const JSONRPCRequest& request);
std::string HelpRequiringPassphrase(CWallet* const pwallet);
bool EnsureWalletIsAvailable(CWallet* const pwallet, bool avoidException);
void EnsureWalletIsUnlocked(CWallet *pwallet, bool fAllowAnonOnly = false);
Expand Down
28 changes: 28 additions & 0 deletions src/wallet/rpcdump.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ bool IsStakingDerPath(KeyOriginInfo keyOrigin)

UniValue importprivkey(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -149,6 +151,8 @@ UniValue importprivkey(const JSONRPCRequest& request)

UniValue abortrescan(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -201,6 +205,8 @@ static void ImportAddress(CWallet* const pwallet, const CTxDestination& dest, co

UniValue importaddress(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -266,6 +272,8 @@ UniValue importaddress(const JSONRPCRequest& request)

UniValue importpubkey(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -321,6 +329,8 @@ UniValue importpubkey(const JSONRPCRequest& request)
// TODO: Needs further review over the HD flow, staking addresses and multisig import.
UniValue importwallet(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -446,6 +456,8 @@ UniValue importwallet(const JSONRPCRequest& request)

UniValue dumpprivkey(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -484,6 +496,8 @@ UniValue dumpprivkey(const JSONRPCRequest& request)

UniValue dumpwallet(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -943,6 +957,8 @@ static int64_t GetImportTimestamp(const UniValue& data, int64_t now)

UniValue importmulti(const JSONRPCRequest& mainRequest)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(mainRequest);

if (!EnsureWalletIsAvailable(pwalletMain, mainRequest.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -1097,6 +1113,8 @@ UniValue importmulti(const JSONRPCRequest& mainRequest)

UniValue bip38encrypt(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -1146,6 +1164,8 @@ UniValue bip38encrypt(const JSONRPCRequest& request)

UniValue bip38decrypt(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -1220,6 +1240,8 @@ UniValue bip38decrypt(const JSONRPCRequest& request)

UniValue importsaplingkey(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -1320,6 +1342,8 @@ UniValue importsaplingkey(const JSONRPCRequest& request)

UniValue importsaplingviewingkey(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -1424,6 +1448,8 @@ UniValue importsaplingviewingkey(const JSONRPCRequest& request)

UniValue exportsaplingviewingkey(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down Expand Up @@ -1465,6 +1491,8 @@ UniValue exportsaplingviewingkey(const JSONRPCRequest& request)

UniValue exportsaplingkey(const JSONRPCRequest& request)
{
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);

if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
return NullUniValue;

Expand Down
Loading