Skip to content

Commit

Permalink
Extend bitcoin#15747: Remove some Dash Get*Balance
Browse files Browse the repository at this point in the history
  • Loading branch information
christiancfifi committed Oct 14, 2021
1 parent f43b821 commit fa8300f
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 42 deletions.
8 changes: 5 additions & 3 deletions src/coinjoin/client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -812,8 +812,10 @@ bool CCoinJoinClientSession::DoAutomaticDenominating(CConnman& connman, bool fDr
return false;
}

const auto bal = mixingWallet.GetBalance();

// check if there is anything left to do
CAmount nBalanceAnonymized = mixingWallet.GetAnonymizedBalance();
CAmount nBalanceAnonymized = bal.m_anonymized;
nBalanceNeedsAnonymized = CCoinJoinClientOptions::GetAmount() * COIN - nBalanceAnonymized;

if (nBalanceNeedsAnonymized < 0) {
Expand Down Expand Up @@ -843,8 +845,8 @@ bool CCoinJoinClientSession::DoAutomaticDenominating(CConnman& connman, bool fDr
// excluding denoms
CAmount nBalanceAnonimizableNonDenom = mixingWallet.GetAnonymizableBalance(true);
// denoms
CAmount nBalanceDenominatedConf = mixingWallet.GetDenominatedBalance();
CAmount nBalanceDenominatedUnconf = mixingWallet.GetDenominatedBalance(true);
CAmount nBalanceDenominatedConf = bal.m_denominated_trusted;
CAmount nBalanceDenominatedUnconf = bal.m_denominated_untrusted_pending;
CAmount nBalanceDenominated = nBalanceDenominatedConf + nBalanceDenominatedUnconf;
CAmount nBalanceToDenominate = CCoinJoinClientOptions::GetAmount() * COIN - nBalanceDenominated;

Expand Down
13 changes: 9 additions & 4 deletions src/interfaces/wallet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ class WalletImpl : public Wallet
result.balance = bal.m_mine_trusted;
result.unconfirmed_balance = bal.m_mine_untrusted_pending;
result.immature_balance = bal.m_mine_immature;
result.anonymized_balance = m_wallet->GetAnonymizedBalance();
result.anonymized_balance = bal.m_anonymized;
result.have_watch_only = m_wallet->HaveWatchOnly();
if (result.have_watch_only) {
result.watch_only_balance = bal.m_watchonly_trusted;
Expand Down Expand Up @@ -419,11 +419,16 @@ class WalletImpl : public Wallet
}
CAmount getAnonymizedBalance() override
{
return m_wallet->GetAnonymizedBalance();
return m_wallet->GetBalance().m_anonymized;
}
CAmount getDenominatedBalance(bool unconfirmed) override
{
return m_wallet->GetDenominatedBalance(unconfirmed);
const auto bal = m_wallet->GetBalance();
if (unconfirmed) {
return bal.m_denominated_untrusted_pending;
} else {
return bal.m_denominated_trusted;
}
}
CAmount getNormalizedAnonymizedBalance() override
{
Expand All @@ -436,7 +441,7 @@ class WalletImpl : public Wallet
CAmount getAvailableBalance(const CCoinControl& coin_control) override
{
if (coin_control.IsUsingCoinJoin()) {
return m_wallet->GetAnonymizedBalance(&coin_control);
return m_wallet->GetBalance(0, false, &coin_control).m_anonymized;
} else {
return m_wallet->GetAvailableBalance(&coin_control);
}
Expand Down
2 changes: 1 addition & 1 deletion src/wallet/rpcwallet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2648,7 +2648,7 @@ static UniValue getwalletinfo(const JSONRPCRequest& request)
obj.pushKV("walletname", pwallet->GetName());
obj.pushKV("walletversion", pwallet->GetVersion());
obj.pushKV("balance", ValueFromAmount(bal.m_mine_trusted));
obj.pushKV("coinjoin_balance", ValueFromAmount(pwallet->GetAnonymizedBalance()));
obj.pushKV("coinjoin_balance", ValueFromAmount(bal.m_anonymized));
obj.pushKV("unconfirmed_balance", ValueFromAmount(bal.m_mine_untrusted_pending));
obj.pushKV("immature_balance", ValueFromAmount(bal.m_mine_immature));
obj.pushKV("txcount", (int)pwallet->mapWallet.size());
Expand Down
37 changes: 6 additions & 31 deletions src/wallet/wallet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2649,7 +2649,7 @@ std::unordered_set<const CWalletTx*, WalletTxHasher> CWallet::GetSpendableTXs()
return ret;
}

CWallet::Balance CWallet::GetBalance(const int min_depth, const bool fAddLocked) const
CWallet::Balance CWallet::GetBalance(const int min_depth, const bool fAddLocked, const CCoinControl* coinControl) const
{
Balance ret;
{
Expand All @@ -2669,6 +2669,11 @@ CWallet::Balance CWallet::GetBalance(const int min_depth, const bool fAddLocked)
}
ret.m_mine_immature += pcoin->GetImmatureCredit();
ret.m_watchonly_immature += pcoin->GetImmatureWatchOnlyCredit();
if (CCoinJoinClientOptions::IsEnabled()) {
ret.m_anonymized += pcoin->GetAnonymizedCredit(coinControl);
ret.m_denominated_trusted += pcoin->GetDenominatedCredit(false);
ret.m_denominated_untrusted_pending += pcoin->GetDenominatedCredit(true);
}
}
}
return ret;
Expand Down Expand Up @@ -2696,21 +2701,6 @@ CAmount CWallet::GetAnonymizableBalance(bool fSkipDenominated, bool fSkipUnconfi
return nTotal;
}

CAmount CWallet::GetAnonymizedBalance(const CCoinControl* coinControl) const
{
if (!CCoinJoinClientOptions::IsEnabled()) return 0;

CAmount nTotal = 0;

LOCK2(cs_main, cs_wallet);

for (auto pcoin : GetSpendableTXs()) {
nTotal += pcoin->GetAnonymizedCredit(coinControl);
}

return nTotal;
}

// Note: calculated including unconfirmed,
// that's ok as long as we use it for informational purposes only
float CWallet::GetAverageAnonymizedRounds() const
Expand Down Expand Up @@ -2757,21 +2747,6 @@ CAmount CWallet::GetNormalizedAnonymizedBalance() const
return nTotal;
}

CAmount CWallet::GetDenominatedBalance(bool unconfirmed) const
{
if (!CCoinJoinClientOptions::IsEnabled()) return 0;

CAmount nTotal = 0;

LOCK2(cs_main, cs_wallet);

for (auto pcoin : GetSpendableTXs()) {
nTotal += pcoin->GetDenominatedCredit(unconfirmed);
}

return nTotal;
}

// Calculate total balance in a different way from GetBalance. The biggest
// difference is that GetBalance sums up all unspent TxOuts paying to the
// wallet, while this sums up both spent and unspent TxOuts paying to the
Expand Down
7 changes: 4 additions & 3 deletions src/wallet/wallet.h
Original file line number Diff line number Diff line change
Expand Up @@ -994,15 +994,16 @@ class CWallet final : public CCryptoKeyStore, public CValidationInterface
CAmount m_watchonly_trusted{0};
CAmount m_watchonly_untrusted_pending{0};
CAmount m_watchonly_immature{0};
CAmount m_anonymized{0};
CAmount m_denominated_trusted{0};
CAmount m_denominated_untrusted_pending{0};
};
CAmount GetLegacyBalance(const isminefilter& filter, int minDepth, const bool fAddLocked) const;
Balance GetBalance(int min_depth = 0, const bool fAddLocked = false) const;
Balance GetBalance(int min_depth = 0, const bool fAddLocked = false, const CCoinControl* coinControl = nullptr) const;

CAmount GetAnonymizableBalance(bool fSkipDenominated = false, bool fSkipUnconfirmed = true) const;
CAmount GetAnonymizedBalance(const CCoinControl* coinControl = nullptr) const;
float GetAverageAnonymizedRounds() const;
CAmount GetNormalizedAnonymizedBalance() const;
CAmount GetDenominatedBalance(bool unconfirmed=false) const;

bool GetBudgetSystemCollateralTX(CTransactionRef& tx, uint256 hash, CAmount amount, const COutPoint& outpoint=COutPoint()/*defaults null*/);
CAmount GetAvailableBalance(const CCoinControl* coinControl = nullptr) const;
Expand Down

0 comments on commit fa8300f

Please sign in to comment.