aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/rpcwallet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wallet/rpcwallet.cpp')
-rw-r--r--src/wallet/rpcwallet.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp
index f8006a6255..98efb8bf6d 100644
--- a/src/wallet/rpcwallet.cpp
+++ b/src/wallet/rpcwallet.cpp
@@ -729,6 +729,8 @@ UniValue getbalance(const JSONRPCRequest& request)
if (request.params.size() == 0)
return ValueFromAmount(pwallet->GetBalance());
+ const std::string* account = request.params[0].get_str() != "*" ? &request.params[0].get_str() : nullptr;
+
int nMinDepth = 1;
if (request.params.size() > 1)
nMinDepth = request.params[1].get_int();
@@ -737,6 +739,8 @@ UniValue getbalance(const JSONRPCRequest& request)
if(request.params[2].get_bool())
filter = filter | ISMINE_WATCH_ONLY;
+ CAmount legacyBalance = pwallet->GetLegacyBalance(filter, nMinDepth, account);
+
if (request.params[0].get_str() == "*") {
// Calculate total balance in a very different way from GetBalance().
// The biggest difference is that GetBalance() sums up all unspent
@@ -764,6 +768,7 @@ UniValue getbalance(const JSONRPCRequest& request)
nBalance -= s.amount;
nBalance -= allFee;
}
+ assert(nBalance == legacyBalance);
return ValueFromAmount(nBalance);
}
@@ -771,6 +776,7 @@ UniValue getbalance(const JSONRPCRequest& request)
CAmount nBalance = pwallet->GetAccountBalance(strAccount, nMinDepth, filter);
+ assert(nBalance == legacyBalance);
return ValueFromAmount(nBalance);
}
@@ -902,6 +908,8 @@ UniValue sendfrom(const JSONRPCRequest& request)
// Check funds
CAmount nBalance = pwallet->GetAccountBalance(strAccount, nMinDepth, ISMINE_SPENDABLE);
+ CAmount legacyBalance = pwallet->GetLegacyBalance(ISMINE_SPENDABLE, nMinDepth, &strAccount);
+ assert(nBalance == legacyBalance);
if (nAmount > nBalance)
throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Account has insufficient funds");
@@ -1011,6 +1019,8 @@ UniValue sendmany(const JSONRPCRequest& request)
// Check funds
CAmount nBalance = pwallet->GetAccountBalance(strAccount, nMinDepth, ISMINE_SPENDABLE);
+ CAmount legacyBalance = pwallet->GetLegacyBalance(ISMINE_SPENDABLE, nMinDepth, &strAccount);
+ assert(nBalance == legacyBalance);
if (totalAmount > nBalance)
throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Account has insufficient funds");