Skip to content

The node's replica is ~8,380 blocks behind its own peers, and a stale-replica zero balance is indistinguishable from an empty wallet #416

Description

@MichaelTaylor3d

Found by: the #377 proof lane, measuring the operator wallet
Related: https://github.com/DIG-Network/dig_ecosystem/issues/3166

The node's replica is ~2 days behind, and its balance reads look identical to a healthy node's

Measured 2026-08-30 on this machine's installed node:

node's own replica height 9,211,798
its own peers' reported height 9,220,177
gap ~8,380 blocks — about two days

dign wallet balance --asset dig --json answers:

{ "balance": 0, "synced": false, "source": "fallback", "peak_height": null }

Why this is worth its own ticket rather than a note

A funded wallet would produce that same output. The zero is not evidence of an empty wallet — it
is evidence of a node that cannot see. The only fields that distinguish the two are synced: false
and source: "fallback", and neither is surfaced anywhere a person looks.

The proof lane only established the wallet was genuinely empty by asking coinset.org directly,
with a control: the same query shape against the DIG treasury puzzle hash returns 357 records, so
a zero from that source is a reading rather than a broken instrument. Without that independent check
the measurement would have been unfalsifiable.

The consequence for the mirror-coin work

A node this far behind cannot observe its own create confirm. §25.4 requires confirmation by
observing the CREATED coin (never the funding coin — that is legacy bug 5, where a competing spend
satisfies the wait identically). A replica two days stale will not see a coin minted a minute ago, so
the pass would record Pending and stay there.

That makes this a step-8 dependency for #412, not just
background hygiene: the real-machine proof requires watching a coin appear, and this node currently
cannot.

Scope

  1. Establish why the replica is not catching up. Two days is not a transient gap, and the node
    reports its peers' higher height — so it knows it is behind and is not closing it.
  2. Make the staleness legible where a person reads a balance. A 0 from a stale replica and a
    0 from an empty wallet must not render identically. synced: false and source: "fallback"
    already carry the fact; nothing user-facing uses them.

Acceptance

The node's replica tracks its peers' peak within a normal margin on a real machine, and a balance
read from a stale replica says so rather than returning a bare zero that a reader will take as an
answer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    mvpgates the releasable MVP

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions