diff --git a/src/Makefile.am b/src/Makefile.am index 1f82cbf9f8bcb..3d76eb85286aa 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -392,6 +392,7 @@ BITCOIN_CORE_H = \ wallet/bip39.h \ wallet/bip39_english.h \ wallet/coincontrol.h \ + wallet/coinjoin.h \ wallet/coinselection.h \ wallet/context.h \ wallet/crypter.h \ @@ -591,6 +592,7 @@ libbitcoin_wallet_a_SOURCES = \ coinjoin/interfaces.cpp \ coinjoin/util.cpp \ wallet/bip39.cpp \ + wallet/coinjoin.cpp \ wallet/coincontrol.cpp \ wallet/context.cpp \ wallet/crypter.cpp \ diff --git a/src/bench/coin_selection.cpp b/src/bench/coin_selection.cpp index 6b917c38b47ad..c9f27fd217eb9 100644 --- a/src/bench/coin_selection.cpp +++ b/src/bench/coin_selection.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -17,7 +18,7 @@ static void addCoin(const CAmount& nValue, const CWallet& wallet, std::vector(&wallet, MakeTransactionRef(std::move(tx)))); + wtxs.push_back(std::make_unique(MakeTransactionRef(std::move(tx)))); } // Simple benchmark for wallet coin selection. Note that it maybe be necessary @@ -44,7 +45,7 @@ static void CoinSelection(benchmark::Bench& bench) // Create coins std::vector coins; for (const auto& wtx : wtxs) { - coins.emplace_back(wtx.get(), 0 /* iIn */, 6 * 24 /* nDepthIn */, true /* spendable */, true /* solvable */, true /* safe */); + coins.emplace_back(wallet, *wtx, 0 /* iIn */, 6 * 24 /* nDepthIn */, true /* spendable */, true /* solvable */, true /* safe */); } const CoinEligibilityFilter filter_standard(1, 6, 0); const CoinSelectionParams coin_selection_params(/* change_output_size= */ 34, @@ -54,7 +55,7 @@ static void CoinSelection(benchmark::Bench& bench) bench.run([&] { std::set setCoinsRet; CAmount nValueRet; - bool success = wallet.AttemptSelection(1003 * COIN, filter_standard, coins, setCoinsRet, nValueRet, coin_selection_params); + bool success = AttemptSelection(wallet, 1003 * COIN, filter_standard, coins, setCoinsRet, nValueRet, coin_selection_params); assert(success); assert(nValueRet == 1003 * COIN); assert(setCoinsRet.size() == 2); diff --git a/src/bench/wallet_balance.cpp b/src/bench/wallet_balance.cpp index a4e384699abd5..c49df3085b81d 100644 --- a/src/bench/wallet_balance.cpp +++ b/src/bench/wallet_balance.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -35,11 +36,11 @@ static void WalletBalance(benchmark::Bench& bench, const bool set_dirty, const b } SyncWithValidationInterfaceQueue(); - auto bal = wallet.GetBalance(); // Cache + auto bal = GetBalance(wallet); // Cache bench.minEpochIterations(epoch_iters).run([&] { if (set_dirty) wallet.MarkDirty(); - bal = wallet.GetBalance(); + bal = GetBalance(wallet); if (add_mine) assert(bal.m_mine_trusted > 0); }); } diff --git a/src/coinjoin/client.cpp b/src/coinjoin/client.cpp index 26b1e7cb70f53..8ae8a666c30a6 100644 --- a/src/coinjoin/client.cpp +++ b/src/coinjoin/client.cpp @@ -24,7 +24,10 @@ #include #include #include +#include #include +#include +#include #include #include @@ -824,7 +827,7 @@ bool CCoinJoinClientSession::DoAutomaticDenominating(ChainstateManager& chainman return false; } - const auto bal = m_wallet->GetBalance(); + const auto bal = GetBalance(*m_wallet); // check if there is anything left to do CAmount nBalanceAnonymized = bal.m_anonymized; @@ -1551,7 +1554,7 @@ bool CCoinJoinClientSession::CreateCollateralTransaction(CMutableTransaction& tx CCoinControl coin_control; coin_control.nCoinType = CoinType::ONLY_COINJOIN_COLLATERAL; - m_wallet->AvailableCoins(vCoins, &coin_control); + AvailableCoins(*m_wallet, vCoins, &coin_control); if (vCoins.empty()) { strReason = strprintf("%s requires a collateral transaction and could not locate an acceptable input!", gCoinJoinName); diff --git a/src/coinjoin/util.cpp b/src/coinjoin/util.cpp index 0a379a054f867..11ea354494476 100644 --- a/src/coinjoin/util.cpp +++ b/src/coinjoin/util.cpp @@ -7,9 +7,10 @@ #include #include #include