v4.0.44
A history gap now repairs itself.
When the wallet marked a stretch of blocks as unverified, that marker could never be undone. Your only options were to let a server re-check your addresses — which hands over the whole address list this wallet exists to keep private — or rebuild the entire chain from your wallet's creation date, re-scanning about 24 million blocks to recover twenty thousand.
That permanence was never a safety feature. It was a side effect of having no way to fetch the discarded block headers back, and it fed itself: marking a range unverified told the wallet it no longer needed those heights, so their headers were dropped to save memory, which genuinely made the range unrequestable — proving the original decision right after the fact.
The wallet now re-fetches just the headers underneath the gap and retires the marker as it goes. It anchors to a checkpoint built into the app, so nothing new is trusted and no third party is involved.
Details
- Headers are fetched a few thousand at a time. Taking a large gap in one bite risks the memory limit discarding the very headers just downloaded.
- Partial progress is kept. If part of a gap cannot be fetched, the gap shrinks by whatever succeeded rather than the whole attempt failing, and it resumes after an interruption.
- The warning clears only when a gap is fully repaired. Partial recovery deliberately does not clear it — saying everything is fine while blocks are still unverified would be worse than leaving the warning up.
Known limit: a gap below block 24,000,000 cannot be repaired this way yet.
Full notes: https://digiscope.me/wallet/releases/4.0.44
SHA-256: bf97cabd757912fc0e17f477a19bd446c25549fd05aa0e3c791cc1e3b7c0631f
Download from digiscope.me/downloads/ or install the APK below. Requires Android 8.0+.
Source: https://github.com/JohnnyLawDGB/digibytewallet-android