The filter chain can't lie to you below a checkpoint.
The wallet learns which blocks concern it from compact block filters, and it verifies the chain of those filters against a table of pinned checkpoints. Until now that check only watched — a peer serving a chain that disagreed with a pin had its headers accepted anyway, and the mismatch was written to a log nobody reads.
Now it acts. A batch of filter headers that crosses a checkpoint is validated before it is committed. If it diverges from the pin, the batch is rejected, the peer is banned, and the wallet asks someone else — a divergent header is never written down in the first place.
Two related holes are closed with it:
- A single lying peer can no longer pull you onto its fork. If your chain matches a checkpoint, that is proof it is the real one, and a disagreeing peer no longer triggers a re-anchor.
- Honest disagreement no longer false-fires. Re-anchoring now needs an agreeing majority with a floor of three peers, rather than any two peers disagreeing — which could happen during a normal reorg.
If verification can't be satisfied at all — every peer disagreeing, or an eclipse — the wallet parks at the last checkpoint it did verify and tells you, rather than advancing on data it cannot check or freezing without explanation. Funds already scanned below that point stay visible.
The checkpoint table was extended to height 24,050,000, which shrinks the unverified window near the tip from roughly 260,000 blocks to about 13,000.
The scope is deliberately bounded: this protects the chain below the last checkpoint. Blocks above it are still trust-on-first-use plus peer agreement. Tip trust is separate work — pair your own node if you want it today.
Full notes: https://digiscope.me/wallet/releases/4.0.41
SHA-256: 9842b7351bba133e269c55c4629faacc4ccd98fcb1e096993063cc646e45db4a
Download from digiscope.me/downloads/ or install the APK below. Requires Android 8.0+.
Source: https://github.com/JohnnyLawDGB/digibytewallet-android