Class DefaultCoinSelector

  • All Implemented Interfaces:
    CoinSelector
    Direct Known Subclasses:
    AllowUnconfirmedCoinSelector

    public class DefaultCoinSelector
    extends java.lang.Object
    implements CoinSelector
    This class implements a CoinSelector which attempts to get the highest priority possible. This means that the transaction is the most likely to get confirmed. Note that this means we may end up "spending" more priority than would be required to get the transaction we are creating confirmed.
    • Constructor Detail

      • DefaultCoinSelector

        protected DefaultCoinSelector()
    • Method Detail

      • select

        public CoinSelection select​(Coin target,
                                    java.util.List<TransactionOutput> candidates)
        Description copied from interface: CoinSelector
        Creates a CoinSelection that tries to meet the target amount of value. The candidates list is given to this call and can be edited freely. See the docs for CoinSelection to learn more, or look a the implementation of DefaultCoinSelector.
        Specified by:
        select in interface CoinSelector
      • compareByDepth

        public static int compareByDepth​(TransactionOutput a,
                                         TransactionOutput b)
        Comparator for sorting TransactionOutput by coin depth, value, and then hash.
        Parameters:
        a - The first object to be compared
        b - The second object to be compared
        Returns:
        a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
      • shouldSelect

        protected boolean shouldSelect​(Transaction tx)
        Sub-classes can override this to just customize whether transactions are usable, but keep age sorting.
      • isSelectable

        public static boolean isSelectable​(Transaction tx,
                                           Network network)
        Helper to determine if this selector would select a given transaction. Note that in a regtest network outgoing payments will likely not see propagation, so there is a special exception.
        Parameters:
        tx - transaction to determine if it would be selected
        network - network the transaction is on
        Returns:
        true if it would be selected, false otherwise