diff --git a/src/main/java/org/qortal/crosschain/Bitcoiny.java b/src/main/java/org/qortal/crosschain/Bitcoiny.java index 05d3aaa9..0d26c397 100644 --- a/src/main/java/org/qortal/crosschain/Bitcoiny.java +++ b/src/main/java/org/qortal/crosschain/Bitcoiny.java @@ -58,9 +58,14 @@ public abstract class Bitcoiny implements ForeignBlockchain { * i.e. keys with transactions but with no unspent outputs. */ protected final Set spentKeys = Collections.synchronizedSet(new HashSet<>()); - /** How many bitcoinj wallet keys to generate in each batch. */ + /** How many wallet keys to generate in each batch. */ private static final int WALLET_KEY_LOOKAHEAD_INCREMENT = 3; + /** How many wallet keys to generate in each batch when using bitcoinj as the data provider. + * We must use a higher value here since we are unable to request multiple batches of keys. + * Without this, the bitcoinj balance (or other data) can be missing transactions. */ + private static final int WALLET_KEY_LOOKAHEAD_INCREMENT_BITCOINJ = 20; + /** Byte offset into raw block headers to block timestamp. */ private static final int TIMESTAMP_OFFSET = 4 + 32 + 32; @@ -612,7 +617,7 @@ public abstract class Bitcoiny implements ForeignBlockchain { this.keyChain = this.wallet.getActiveKeyChain(); // Set up wallet's key chain - this.keyChain.setLookaheadSize(Bitcoiny.WALLET_KEY_LOOKAHEAD_INCREMENT); + this.keyChain.setLookaheadSize(Bitcoiny.WALLET_KEY_LOOKAHEAD_INCREMENT_BITCOINJ); this.keyChain.maybeLookAhead(); }