diff options
| author | Chris Moore <[email protected]> | 2012-04-07 12:45:39 -0700 |
|---|---|---|
| committer | Luke Dashjr <[email protected]> | 2012-06-04 16:36:46 +0000 |
| commit | d650f96d5f48a9cc458af9ef644f57973ca7f48b (patch) | |
| tree | f3b66f551d46d82e99f2e51b773857b7f9b43ebc /src/wallet.cpp | |
| parent | Test that the coin selection code is suitably random, and add tests re. sub-c... (diff) | |
| download | discoin-d650f96d5f48a9cc458af9ef644f57973ca7f48b.tar.xz discoin-d650f96d5f48a9cc458af9ef644f57973ca7f48b.zip | |
Preserve the shuffled order of coins with equal value to give more randomized coin selection.
Diffstat (limited to 'src/wallet.cpp')
| -rw-r--r-- | src/wallet.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/wallet.cpp b/src/wallet.cpp index 36dbe7aeb..d190ad924 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -17,6 +17,15 @@ using namespace std; // mapWallet // +struct CompareValueOnly +{ + bool operator()(const pair<int64, pair<const CWalletTx*, unsigned int> >& t1, + const pair<int64, pair<const CWalletTx*, unsigned int> >& t2) const + { + return t1.first < t2.first; + } +}; + CPubKey CWallet::GenerateNewKey() { bool fCompressed = CanSupportFeature(FEATURE_COMPRPUBKEY); // default to compressed public keys if we want 0.6.0 wallets @@ -980,7 +989,7 @@ bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfThe nTargetValue += CENT; // Solve subset sum by stochastic approximation - sort(vValue.rbegin(), vValue.rend()); + sort(vValue.rbegin(), vValue.rend(), CompareValueOnly()); vector<char> vfIncluded; vector<char> vfBest(vValue.size(), true); int64 nBest = nTotalLower; |