mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-11-05 05:46:44 +00:00
only start bwt with valid wallets
This commit is contained in:
parent
b5eb59344c
commit
fd7d2232a1
1 changed files with 7 additions and 4 deletions
|
@ -20,6 +20,7 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class Bwt {
|
public class Bwt {
|
||||||
private static final Logger log = LoggerFactory.getLogger(Bwt.class);
|
private static final Logger log = LoggerFactory.getLogger(Bwt.class);
|
||||||
|
@ -48,19 +49,21 @@ public class Bwt {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void start(Collection<Wallet> wallets, CallbackNotifier callback) {
|
private void start(Collection<Wallet> wallets, CallbackNotifier callback) {
|
||||||
|
List<Wallet> validWallets = wallets.stream().filter(Wallet::isValid).collect(Collectors.toList());
|
||||||
|
|
||||||
List<String> outputDescriptors = new ArrayList<>();
|
List<String> outputDescriptors = new ArrayList<>();
|
||||||
for(Wallet wallet : wallets) {
|
for(Wallet wallet : validWallets) {
|
||||||
OutputDescriptor receiveOutputDescriptor = OutputDescriptor.getOutputDescriptor(wallet, KeyPurpose.RECEIVE);
|
OutputDescriptor receiveOutputDescriptor = OutputDescriptor.getOutputDescriptor(wallet, KeyPurpose.RECEIVE);
|
||||||
outputDescriptors.add(receiveOutputDescriptor.toString(false, false));
|
outputDescriptors.add(receiveOutputDescriptor.toString(false, false));
|
||||||
OutputDescriptor changeOutputDescriptor = OutputDescriptor.getOutputDescriptor(wallet, KeyPurpose.CHANGE);
|
OutputDescriptor changeOutputDescriptor = OutputDescriptor.getOutputDescriptor(wallet, KeyPurpose.CHANGE);
|
||||||
outputDescriptors.add(changeOutputDescriptor.toString(false, false));
|
outputDescriptors.add(changeOutputDescriptor.toString(false, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
int rescanSince = wallets.stream().filter(wallet -> wallet.getBirthDate() != null).mapToInt(wallet -> (int)(wallet.getBirthDate().getTime() / 1000)).min().orElse(-1);
|
int rescanSince = validWallets.stream().filter(wallet -> wallet.getBirthDate() != null).mapToInt(wallet -> (int)(wallet.getBirthDate().getTime() / 1000)).min().orElse(-1);
|
||||||
int gapLimit = wallets.stream().filter(wallet -> wallet.getGapLimit() > 0).mapToInt(Wallet::getGapLimit).max().orElse(Wallet.DEFAULT_LOOKAHEAD);
|
int gapLimit = validWallets.stream().filter(wallet -> wallet.getGapLimit() > 0).mapToInt(Wallet::getGapLimit).max().orElse(Wallet.DEFAULT_LOOKAHEAD);
|
||||||
|
|
||||||
boolean forceRescan = false;
|
boolean forceRescan = false;
|
||||||
for(Wallet wallet :wallets) {
|
for(Wallet wallet : validWallets) {
|
||||||
Date txBirthDate = wallet.getTransactions().values().stream().map(BlockTransactionHash::getDate).filter(Objects::nonNull).min(Date::compareTo).orElse(null);
|
Date txBirthDate = wallet.getTransactions().values().stream().map(BlockTransactionHash::getDate).filter(Objects::nonNull).min(Date::compareTo).orElse(null);
|
||||||
if((wallet.getBirthDate() != null && txBirthDate != null && wallet.getBirthDate().before(txBirthDate)) || (txBirthDate == null && wallet.getStoredBlockHeight() != null && wallet.getStoredBlockHeight() == 0)) {
|
if((wallet.getBirthDate() != null && txBirthDate != null && wallet.getBirthDate().before(txBirthDate)) || (txBirthDate == null && wallet.getStoredBlockHeight() != null && wallet.getStoredBlockHeight() == 0)) {
|
||||||
forceRescan = true;
|
forceRescan = true;
|
||||||
|
|
Loading…
Reference in a new issue