mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-11-04 21:36:45 +00:00
cormorant: increase descriptor wallet gap limit for postmix receive chain
This commit is contained in:
parent
41dabac75b
commit
8ba0a9f360
1 changed files with 8 additions and 2 deletions
|
@ -6,6 +6,7 @@ import com.sparrowwallet.drongo.KeyPurpose;
|
||||||
import com.sparrowwallet.drongo.OutputDescriptor;
|
import com.sparrowwallet.drongo.OutputDescriptor;
|
||||||
import com.sparrowwallet.drongo.Utils;
|
import com.sparrowwallet.drongo.Utils;
|
||||||
import com.sparrowwallet.drongo.wallet.BlockTransactionHash;
|
import com.sparrowwallet.drongo.wallet.BlockTransactionHash;
|
||||||
|
import com.sparrowwallet.drongo.wallet.StandardAccount;
|
||||||
import com.sparrowwallet.drongo.wallet.Wallet;
|
import com.sparrowwallet.drongo.wallet.Wallet;
|
||||||
import com.sparrowwallet.drongo.wallet.WalletNode;
|
import com.sparrowwallet.drongo.wallet.WalletNode;
|
||||||
import com.sparrowwallet.sparrow.AppServices;
|
import com.sparrowwallet.sparrow.AppServices;
|
||||||
|
@ -38,7 +39,8 @@ public class BitcoindClient {
|
||||||
private static final Logger log = LoggerFactory.getLogger(BitcoindClient.class);
|
private static final Logger log = LoggerFactory.getLogger(BitcoindClient.class);
|
||||||
|
|
||||||
public static final String CORE_WALLET_NAME = "cormorant";
|
public static final String CORE_WALLET_NAME = "cormorant";
|
||||||
private static final int GAP_LIMIT = 1000;
|
private static final int DEFAULT_GAP_LIMIT = 1000;
|
||||||
|
private static final int POSTMIX_GAP_LIMIT = 4000;
|
||||||
|
|
||||||
private final JsonRpcClient jsonRpcClient;
|
private final JsonRpcClient jsonRpcClient;
|
||||||
private final Timer timer = new Timer(true);
|
private final Timer timer = new Timer(true);
|
||||||
|
@ -218,7 +220,7 @@ public class BitcoindClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
private ScanDate getScanDate(String normalizedDescriptor, Wallet wallet, KeyPurpose keyPurpose, Date earliestBirthDate) {
|
private ScanDate getScanDate(String normalizedDescriptor, Wallet wallet, KeyPurpose keyPurpose, Date earliestBirthDate) {
|
||||||
Integer range = (keyPurpose == null ? null : wallet.getFreshNode(keyPurpose).getIndex() + GAP_LIMIT);
|
Integer range = (keyPurpose == null ? null : wallet.getFreshNode(keyPurpose).getIndex() + getGapLimit(wallet, keyPurpose));
|
||||||
|
|
||||||
//Force a rescan if loading a wallet with a birthday later than existing transactions, or if the wallet birthdate has been set or changed to an earlier date from the last check
|
//Force a rescan if loading a wallet with a birthday later than existing transactions, or if the wallet birthdate has been set or changed to an earlier date from the last check
|
||||||
boolean forceRescan = false;
|
boolean forceRescan = false;
|
||||||
|
@ -232,6 +234,10 @@ public class BitcoindClient {
|
||||||
return new ScanDate(earliestBirthDate, range, forceRescan);
|
return new ScanDate(earliestBirthDate, range, forceRescan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getGapLimit(Wallet wallet, KeyPurpose keyPurpose) {
|
||||||
|
return wallet.getStandardAccountType() == StandardAccount.WHIRLPOOL_POSTMIX && keyPurpose == KeyPurpose.RECEIVE ? POSTMIX_GAP_LIMIT : DEFAULT_GAP_LIMIT;
|
||||||
|
}
|
||||||
|
|
||||||
private void importDescriptors(Map<String, ScanDate> descriptors) {
|
private void importDescriptors(Map<String, ScanDate> descriptors) {
|
||||||
for(String descriptor : descriptors.keySet()) {
|
for(String descriptor : descriptors.keySet()) {
|
||||||
Lock lock = descriptorLocks.computeIfAbsent(descriptor, desc -> new ReentrantLock());
|
Lock lock = descriptorLocks.computeIfAbsent(descriptor, desc -> new ReentrantLock());
|
||||||
|
|
Loading…
Reference in a new issue