Skip to content

Commit

Permalink
Revert "Merge bitcoin#12694: Actually disable BnB when there are pres…
Browse files Browse the repository at this point in the history
…et inputs"

This reverts commit 9552dfb, reversing
changes made to f686002.
  • Loading branch information
achow101 committed Jun 11, 2018
1 parent 7c32b41 commit 8759e05
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 25 deletions.
16 changes: 1 addition & 15 deletions src/wallet/test/coinselector_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

#include <wallet/wallet.h>
#include <wallet/coinselection.h>
#include <wallet/coincontrol.h>
#include <amount.h>
#include <primitives/transaction.h>
#include <random.h>
Expand All @@ -28,7 +27,7 @@ std::vector<std::unique_ptr<CWalletTx>> wtxn;
typedef std::set<CInputCoin> CoinSet;

static std::vector<COutput> vCoins;
static CWallet testWallet("dummy", WalletDatabase::CreateDummy());
static const CWallet testWallet("dummy", WalletDatabase::CreateDummy());
static CAmount balance = 0;

CoinEligibilityFilter filter_standard(1, 6, 0);
Expand Down Expand Up @@ -73,7 +72,6 @@ static void add_coin(const CAmount& nValue, int nAge = 6*24, bool fIsFromMe = fa
}
COutput output(wtx.get(), nInput, nAge, true /* spendable */, true /* solvable */, true /* safe */);
vCoins.push_back(output);
testWallet.AddToWallet(*wtx.get());
wtxn.emplace_back(std::move(wtx));
}

Expand Down Expand Up @@ -224,18 +222,6 @@ BOOST_AUTO_TEST_CASE(bnb_search_test)
add_coin(1);
vCoins.at(0).nInputBytes = 40; // Make sure that it has a negative effective value. The next check should assert if this somehow got through. Otherwise it will fail
BOOST_CHECK(!testWallet.SelectCoinsMinConf( 1 * CENT, filter_standard, vCoins, setCoinsRet, nValueRet, coin_selection_params_bnb, bnb_used));

// Make sure that we aren't using BnB when there are preset inputs
empty_wallet();
add_coin(5 * CENT);
add_coin(3 * CENT);
add_coin(2 * CENT);
CCoinControl coin_control;
coin_control.fAllowOtherInputs = true;
coin_control.Select(COutPoint(vCoins.at(0).tx->GetHash(), vCoins.at(0).i));
BOOST_CHECK(testWallet.SelectCoins(vCoins, 10 * CENT, setCoinsRet, nValueRet, coin_control, coin_selection_params_bnb, bnb_used));
BOOST_CHECK(!bnb_used);
BOOST_CHECK(!coin_selection_params_bnb.use_bnb);
}

BOOST_AUTO_TEST_CASE(knapsack_solver_test)
Expand Down
3 changes: 1 addition & 2 deletions src/wallet/wallet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2530,7 +2530,7 @@ bool CWallet::SelectCoinsMinConf(const CAmount& nTargetValue, const CoinEligibil
}
}

bool CWallet::SelectCoins(const std::vector<COutput>& vAvailableCoins, const CAmount& nTargetValue, std::set<CInputCoin>& setCoinsRet, CAmount& nValueRet, const CCoinControl& coin_control, CoinSelectionParams& coin_selection_params, bool& bnb_used) const
bool CWallet::SelectCoins(const std::vector<COutput>& vAvailableCoins, const CAmount& nTargetValue, std::set<CInputCoin>& setCoinsRet, CAmount& nValueRet, const CCoinControl& coin_control, const CoinSelectionParams& coin_selection_params, bool& bnb_used) const
{
std::vector<COutput> vCoins(vAvailableCoins);

Expand Down Expand Up @@ -2560,7 +2560,6 @@ bool CWallet::SelectCoins(const std::vector<COutput>& vAvailableCoins, const CAm
{
// For now, don't use BnB if preset inputs are selected. TODO: Enable this later
bnb_used = false;
coin_selection_params.use_bnb = false;

std::map<uint256, CWalletTx>::const_iterator it = mapWallet.find(outpoint.hash);
if (it != mapWallet.end())
Expand Down
17 changes: 9 additions & 8 deletions src/wallet/wallet.h
Original file line number Diff line number Diff line change
Expand Up @@ -681,6 +681,15 @@ class CWallet final : public CCryptoKeyStore, public CValidationInterface
std::mutex mutexScanning;
friend class WalletRescanReserver;


/**
* Select a set of coins such that nValueRet >= nTargetValue and at least
* all coins from coinControl are selected; Never select unconfirmed coins
* if they are not ours
*/
bool SelectCoins(const std::vector<COutput>& vAvailableCoins, const CAmount& nTargetValue, std::set<CInputCoin>& setCoinsRet, CAmount& nValueRet,
const CCoinControl& coin_control, const CoinSelectionParams& coin_selection_params, bool& bnb_used) const;

WalletBatch *encrypted_batch = nullptr;

//! the current wallet version: clients below this version are not able to load the wallet
Expand Down Expand Up @@ -774,14 +783,6 @@ class CWallet final : public CCryptoKeyStore, public CValidationInterface
return *database;
}

/**
* Select a set of coins such that nValueRet >= nTargetValue and at least
* all coins from coinControl are selected; Never select unconfirmed coins
* if they are not ours
*/
bool SelectCoins(const std::vector<COutput>& vAvailableCoins, const CAmount& nTargetValue, std::set<CInputCoin>& setCoinsRet, CAmount& nValueRet,
const CCoinControl& coin_control, CoinSelectionParams& coin_selection_params, bool& bnb_used) const;

/** Get a name for this wallet for logging/debugging purposes.
*/
const std::string& GetName() const { return m_name; }
Expand Down

0 comments on commit 8759e05

Please sign in to comment.