feat(spv): cross-check recent headers with a witness server
Blocks above the newest checkpoint cannot be anchored, so the header from the primary server is now compared with the one from a second server taken from the hardcoded bootstrap list. A disagreement at 3+ blocks of depth aborts the sync; a shallower one leaves the proof unverified until the next sync; with no reachable witness behaviour is unchanged. A bounded proof-of-work check was evaluated and rejected. See ADR 0042.
This commit is contained in:
1 parent
305f22ed0e
commit
9010ebce59
11 files changed
+430
-4
No files matched your search
+1
-1
@@ -585,7 +585,7 @@ checkpoint (shipped with each release) cannot be anchored this way: for those on
|
||||
proof is checked, which is why updating the wallet regularly matters. Such transactions carry an
|
||||
orange **"not anchored"** label in the History tab and in the transaction detail (hover it for
|
||||
the explanation); it disappears once you update to a release whose newest checkpoint covers
|
||||
that block. The label is informational: the transaction is still Merkle-verified. Verified data is cached in the wallet file, so later syncs only fetch what
|
||||
that block. The label is informational: the transaction is still Merkle-verified, and its block header is also compared with a second built-in server when one is reachable (if they disagree about a block that is a few blocks deep the sync stops with a "server is not trustworthy" error; for a very recent block the transaction just stays "verifying" until the next sync). Verified data is cached in the wallet file, so later syncs only fetch what
|
||||
is new — even after a restart. If a proof or the checkpoint chain does not check out, the
|
||||
sync **aborts** with an explicit "server is not trustworthy" error rather than showing you
|
||||
unverified data; switch servers.
|
||||
|
||||
Reference in new issue
Block a user