minor changes to support adding additional rbf tx inputs

This commit is contained in:
Craig Raw 2023-06-01 15:30:06 +02:00
parent b26c5e5218
commit 5b9b3043a6
3 changed files with 23 additions and 1 deletions

View file

@ -1,6 +1,8 @@
package com.sparrowwallet.drongo.wallet;
public class InsufficientFundsException extends Exception {
private Long targetValue;
public InsufficientFundsException() {
super();
}
@ -8,4 +10,13 @@ public class InsufficientFundsException extends Exception {
public InsufficientFundsException(String msg) {
super(msg);
}
public InsufficientFundsException(String message, Long targetValue) {
super(message);
this.targetValue = targetValue;
}
public Long getTargetValue() {
return targetValue;
}
}

View file

@ -7,15 +7,22 @@ import java.util.stream.Collectors;
public class PresetUtxoSelector extends SingleSetUtxoSelector {
private final Collection<BlockTransactionHashIndex> presetUtxos;
private final Collection<BlockTransactionHashIndex> excludedUtxos;
private final boolean maintainOrder;
public PresetUtxoSelector(Collection<BlockTransactionHashIndex> presetUtxos) {
this(presetUtxos, new ArrayList<>());
}
public PresetUtxoSelector(Collection<BlockTransactionHashIndex> presetUtxos, Collection<BlockTransactionHashIndex> excludedUtxos) {
this.presetUtxos = presetUtxos;
this.excludedUtxos = excludedUtxos;
this.maintainOrder = false;
}
public PresetUtxoSelector(Collection<BlockTransactionHashIndex> presetUtxos, boolean maintainOrder) {
this.presetUtxos = presetUtxos;
this.excludedUtxos = new ArrayList<>();
this.maintainOrder = maintainOrder;
}
@ -44,6 +51,10 @@ public class PresetUtxoSelector extends SingleSetUtxoSelector {
return presetUtxos;
}
public Collection<BlockTransactionHashIndex> getExcludedUtxos() {
return excludedUtxos;
}
@Override
public boolean shuffleInputs() {
return !maintainOrder;

View file

@ -1224,7 +1224,7 @@ public class Wallet extends Persistable implements Comparable<Wallet> {
}
}
throw new InsufficientFundsException("Not enough combined value in UTXOs for output value " + targetValue);
throw new InsufficientFundsException("Not enough combined value in UTXOs for output value " + targetValue, targetValue);
}
private List<OutputGroup> getGroupedUtxos(List<UtxoFilter> utxoFilters, double feeRate, double longTermFeeRate, boolean groupByAddress, boolean includeSpentMempoolOutputs) {