AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Moderate 63 Bitcoin

show a height the transaction tab takes from the server as unverified until it is proven

Public commit record

What the developer wrote

Authored by Craig Raw

50/100 · Thin
show a height the transaction tab takes from the server as unverified until it is proven
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
The short version

What changed, and why it matters

This commit changes Sparrow Wallet so that when you open a transaction in the transaction tab, the block height claimed by the server is not automatically trusted. Instead, the wallet now asks the server for a cryptographic proof (a Merkle proof) that the transaction really is in that block. Until the proof arrives and checks out, the height is shown as 'Unverified'. Previously, the transaction tab would display the server's claimed height and block hash as if they were confirmed facts, even though they came only from the server. This change closes a trust gap: a malicious or mistaken server could no longer make an unconfirmed or differently-located transaction appear confirmed in the UI simply by reporting a fake height or block hash.

Recommended action

This is a defensive hardening patch and should be applied. Users and downstream packagers should upgrade to a release containing this commit. No immediate incident response is required, but the change is security-relevant because it removes a UI trust assumption that a server-reported block height/block hash was proven. Reviewers should verify that the new TransactionVerificationService correctly handles connection loss, reorgs, and concurrent tab redraws, and that the proof cache keying by txid:height cannot be confused across servers or chains.

Security signals we found

01

UI now distinguishes server-reported heights from cryptographically proven heights

02

Server-supplied block hashes are no longer treated as proof of inclusion

03

Merkle proofs are verified against locally verified block headers before a height is trusted

04

Proof cache is cleared on reorg to prevent stale trust after chain reorganizations

05

Cross-reorg proof races are handled by checking reorgCount under headerSyncLock

06

Servers that do not support blockchain.transaction.get_merkle disable verification rather than marking everything unverified

07

New unit tests specifically exercise malicious/failing server behaviors

Risk score

Why this scored 63/100

Our methodology →
Potential impact 18/30
Exploitability 12/25
Stealth signal 10/15
Affected reach 12/15
Confidence 7/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.