diff --git a/core/src/main/java/org/bitcoinj/core/CheckpointManager.java b/core/src/main/java/org/bitcoinj/core/CheckpointManager.java index 844a86b8..55652ac5 100644 --- a/core/src/main/java/org/bitcoinj/core/CheckpointManager.java +++ b/core/src/main/java/org/bitcoinj/core/CheckpointManager.java @@ -216,6 +216,9 @@ public class CheckpointManager { time -= 86400 * 7; + checkArgument(time > 0); + log.info("Attempting to initialize a new block store with a checkpoint for time {}", time); + BufferedInputStream stream = new BufferedInputStream(checkpoints); CheckpointManager manager = new CheckpointManager(params, stream); StoredBlock checkpoint = manager.getCheckpointBefore(time); diff --git a/core/src/main/java/org/bitcoinj/core/Wallet.java b/core/src/main/java/org/bitcoinj/core/Wallet.java index ed48439e..173483cf 100644 --- a/core/src/main/java/org/bitcoinj/core/Wallet.java +++ b/core/src/main/java/org/bitcoinj/core/Wallet.java @@ -823,6 +823,8 @@ public class Wallet extends BaseTaggableObject implements Serializable, BlockCha try { for (final Script script : scripts) { if (watchedScripts.contains(script)) continue; + if (script.getCreationTimeSeconds() == 0) + log.warn("Adding a script to the wallet with a creation time of zero, this will disable the checkpointing optimization! {}", script); watchedScripts.add(script); added++; } diff --git a/core/src/main/java/org/bitcoinj/kits/WalletAppKit.java b/core/src/main/java/org/bitcoinj/kits/WalletAppKit.java index 903e97a7..d04df757 100644 --- a/core/src/main/java/org/bitcoinj/kits/WalletAppKit.java +++ b/core/src/main/java/org/bitcoinj/kits/WalletAppKit.java @@ -295,7 +295,10 @@ public class WalletAppKit extends AbstractIdleService { } else { time = vWallet.getEarliestKeyCreationTime(); } - CheckpointManager.checkpoint(params, checkpoints, vStore, time); + if (time > 0) + CheckpointManager.checkpoint(params, checkpoints, vStore, time); + else + log.warn("Creating a new uncheckpointed block store due to a wallet with a creation time of zero: this will result in a very slow chain sync"); } else if (chainFileExists) { log.info("Deleting the chain file in preparation from restore."); vStore.close();