Back

Missing conflicting and stale evidence

P10-L06 · P10 · P10-M02

Resolve conflicts or report insufficient evidence

ILLUSTRATIVE · needs_review

Prerequisites: P10-L05

Learning objectives

  • Resolve conflicts or report insufficient evidence
  • Resolve conflicting measurements by time, unit and coverage before choosing a value.

Why this matters

Two providers can disagree because they measured different windows, not because one is deceptive. Picking the convenient value conceals the actual evidence problem.

Explanation

Start with a conflict ledger. For each value record asset identity, chain, block/slot, raw unit, finality basis, pagination and retrieval time. Normalize compatible units while retaining raw responses. Values from different blocks can both be valid observations; they do not describe one common snapshot. A missing field is not zero, and a stale field is not refreshed by retrieving the same cache again.

When the records truly target the same state, test decoder version, token decimals, dropped events, pending/reorg handling and pagination. Do not average incompatible balances into a synthetic “consensus” figure. An independent primary state record can resolve a field conflict, but only if its scope and identifier match. Preserve the earlier conflict and explain the resolution rather than overwriting evidence.

The conclusion should identify which narrower claims are supported and what remains unavailable. UNKNOWN labels an unresolved field; INSUFFICIENT EVIDENCE means a proposed decision, such as a withdrawal accusation, cannot be supported from those fields. A tool’s blank panel may be a coverage failure, not a clean result.

Key terms

Stale: a value whose measured state predates the claimed observation.

Conflict ledger: side-by-side source records with compatible-field checks.

Missing: unavailable field, distinct from numeric zero.

Resolution: evidence-backed explanation of disagreement.

Historical example

ILLUSTRATIVE: provider A gives balance 100 at block 50 with 0 decimals. Provider B gives 9000 raw units at block 51 with 2 decimals: 90 displayed units. Provider C returns null at block 51 because its supported event type is unavailable. A claimed withdrawal of 10 units is proposed, but no transition receipt is supplied.

Visual specifications

Evidence panel with A/B/C rows, raw/display amounts and block columns. Flag time mismatch and missing C; show withdrawal claim as unresolved, not a red fraud badge.

Caption: Fictional conflicting observations are reconciled before any event attribution.

SPECIFICATION_ONLY — the rendered visual has not been produced or independently reviewed.

What the evidence proves

A and B describe different stipulated block states; B converts to 90 units. C is missing, not zero. The apparent 100-to-90 difference is a candidate state change requiring transition evidence.

What the evidence does not prove

It does not prove a withdrawal event, controller intent, provider fraud or a current balance. Even a real balance difference could reflect several transitions or incompatible accounting.

Common mistakes

Treating null as zero; averaging 100 and 9000; ignoring block mismatch; calling the difference a theft; losing the raw records after normalization.

Practical exercise

Build the conflict ledger, compute B, reject one invalid aggregation, and write a conclusion about the proposed withdrawal. Specify the next decisive record to request.

Show worked correction

A: block 50, raw100, decimals0, display100. B: block 51, raw9000, decimals2, display90. C: block 51, unavailable, display unknown. An arithmetic average mixes time and unit bases and is invalid. “The fixture contains a 10-unit difference between separate block observations; a withdrawal mechanism and attribution are not established.” Request the transition receipt/state reconciliation for the exact asset between blocks50–51, with complete relevant coverage. Keep C as a provider-coverage gap.

Checklist

  • Align identity, unit, time and finality basis.
  • Preserve null as unavailable.
  • Reject averages of incompatible states.
  • Name the evidence needed to resolve the specific claim.

Summary

Resolve the measurement basis first; if decisive transition evidence is absent, report the precise unresolved claim.

Summary

  • Null is not zero.
  • Different block states are not one snapshot.
  • A balance difference alone does not name a mechanism or motive.

Next lesson

P10-L07

Tools

Use the named ZECOIN tool only as an evidence-reading context. This lesson creates no tool output, account session or entitlement. Offline exercise; do not sign, deploy, approve or fund anything.

Sources & claim boundaries

  • API: Esplora public API specification — GET routes, integer satoshis and indexed confirmation/outspend fields. Boundary: Mechanism documentation only; original illustrative values are stipulated, not observations. Historical records have separately frozen provenance and explicit collection gaps.

Evidence classifications

ILLUSTRATIVE — entirely fictional offline inputs; no current observation.

Observation date

null — no real observation

Content version

1

Review date

null

Review status

needs_review

Visual specifications

P10-L06-V01

SPECIFICATION_ONLY · ILLUSTRATIVE

Resolve conflicts or report insufficient evidence

Fictional conflicting observations are reconciled before any event attribution.

Evidence panel with A/B/C rows, raw/display amounts and block columns. Flag time mismatch and missing C; show withdrawal claim as unresolved, not a red fraud badge.

Evidence panel with A/B/C rows, raw/display amounts and block columns. Flag time mismatch and missing C; show withdrawal claim as unresolved, not a red fraud badge.

Stack observations, assumptions, gaps and conclusion at 390 px; retain full IDs and a complete text equivalent. Any wide table scrolls locally.

Prose may follow RTL; IDs, quantities and time axes remain LTR. Preserve dependency direction.

P10-L06-ILLUSTRATIVE-v1

Sources & claim boundaries

API · PRIMARY_DOCUMENTATION

Esplora public API specification

Supported claim
GET routes, integer satoshis and indexed confirmation/outspend fields.
Verification boundary
Mechanism documentation only; original illustrative values are stipulated, not observations. Historical records have separately frozen provenance and explicit collection gaps.
Checked at
2026-10-02
Open primary source
https://github.com/Blockstream/esplora/blob/master/API.md

Dataset provenance

id: P10-L06-ILLUSTRATIVE-v1

dataStatus: ILLUSTRATIVE

observedAt: null

source: Original offline scenario in realOrHistoricalExample

scope: Fictional stipulated labels and values. No wallet, deployment, transaction, token launch or production observation.

Test your reasoning

P10-L06-Q1 · How should provider C’s null become a display value?
P10-L06-Q2 · B returns 9000 units with two decimals. What is compatible display?
P10-L06-Q3 · Why not average A and B as one trusted balance?
P10-L06-Q4 · Does the 100-to-90 difference prove withdrawal?
P10-L06-Q5 · What should happen after an independent matching-state record resolves a decoder error?