aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/wallet2.cpp
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-12-16 12:29:21 +0000
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-12-16 12:31:03 +0000
commitaaae94f00bf7634176cd588df993627ad4ae7e2d (patch)
tree9002f29875cfef0f2ecfaa90e8df3afebabf478d /src/wallet/wallet2.cpp
parentMerge pull request #2906 (diff)
downloadmonero-aaae94f00bf7634176cd588df993627ad4ae7e2d.tar.xz
wallet2: reinstate the single preferred output selection
Removing it nullified the min-outputs-{count,value} system, and will not increase the number of attempted transactions in the general case.
Diffstat (limited to 'src/wallet/wallet2.cpp')
-rw-r--r--src/wallet/wallet2.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
index e29e1051c..068923f0f 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -4827,7 +4827,19 @@ std::vector<size_t> wallet2::pick_preferred_rct_inputs(uint64_t needed_money, ui
LOG_PRINT_L2("pick_preferred_rct_inputs: needed_money " << print_money(needed_money));
- // try to find two outputs
+ // try to find a rct input of enough size
+ for (size_t i = 0; i < m_transfers.size(); ++i)
+ {
+ const transfer_details& td = m_transfers[i];
+ if (!td.m_spent && td.is_rct() && td.amount() >= needed_money && is_transfer_unlocked(td) && td.m_subaddr_index.major == subaddr_account && subaddr_indices.count(td.m_subaddr_index.minor) == 1)
+ {
+ LOG_PRINT_L2("We can use " << i << " alone: " << print_money(td.amount()));
+ picks.push_back(i);
+ return picks;
+ }
+ }
+
+ // then try to find two outputs
// this could be made better by picking one of the outputs to be a small one, since those
// are less useful since often below the needed money, so if one can be used in a pair,
// it gets rid of it for the future