From e9bffdda18dc81fdfd5ee695b6320ae0f0cd8011 Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Thu, 16 Apr 2015 14:14:10 +0100 Subject: [PATCH] DefaultCoinSelector: no-op code simplification --- core/src/main/java/org/bitcoinj/wallet/CoinSelector.java | 2 +- .../main/java/org/bitcoinj/wallet/DefaultCoinSelector.java | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/bitcoinj/wallet/CoinSelector.java b/core/src/main/java/org/bitcoinj/wallet/CoinSelector.java index c92d758f..d0a80a15 100644 --- a/core/src/main/java/org/bitcoinj/wallet/CoinSelector.java +++ b/core/src/main/java/org/bitcoinj/wallet/CoinSelector.java @@ -6,7 +6,7 @@ import org.bitcoinj.core.TransactionOutput; import java.util.List; /** - * A CoinSelector is responsible for picking some outputs to spend, from the list of all spendable outputs. It + * A CoinSelector is responsible for picking some outputs to spend, from the list of all possible outputs. It * allows you to customize the policies for creation of transactions to suit your needs. The select operation * may return a {@link CoinSelection} that has a valueGathered lower than the requested target, if there's not * enough money in the wallet. diff --git a/core/src/main/java/org/bitcoinj/wallet/DefaultCoinSelector.java b/core/src/main/java/org/bitcoinj/wallet/DefaultCoinSelector.java index c8a593ca..888fa8c1 100644 --- a/core/src/main/java/org/bitcoinj/wallet/DefaultCoinSelector.java +++ b/core/src/main/java/org/bitcoinj/wallet/DefaultCoinSelector.java @@ -18,22 +18,21 @@ import java.util.*; */ public class DefaultCoinSelector implements CoinSelector { @Override - public CoinSelection select(Coin biTarget, List candidates) { - long target = biTarget.value; + public CoinSelection select(Coin target, List candidates) { ArrayList selected = new ArrayList(); // Sort the inputs by age*value so we get the highest "coindays" spent. // TODO: Consider changing the wallets internal format to track just outputs and keep them ordered. ArrayList sortedOutputs = new ArrayList(candidates); // When calculating the wallet balance, we may be asked to select all possible coins, if so, avoid sorting // them in order to improve performance. - if (!biTarget.equals(NetworkParameters.MAX_MONEY)) { + if (!target.equals(NetworkParameters.MAX_MONEY)) { sortOutputs(sortedOutputs); } // Now iterate over the sorted outputs until we have got as close to the target as possible or a little // bit over (excessive value will be change). long total = 0; for (TransactionOutput output : sortedOutputs) { - if (total >= target) break; + if (total >= target.value) break; // Only pick chain-included transactions, or transactions that are ours and pending. if (!shouldSelect(output.getParentTransaction())) continue; selected.add(output);