SSM-Clock Stamp – Anchor Publication (3.4)

Purpose. Publish a tiny ASCII note that commits a UTC day’s stamps to public time. The note carries one digest: rollup_sha256 = sha256( ascii(Stamp_1 "|" ... "|" Stamp_n) ). Publication time provides the no-later-than bound.

Minimal anchor note (copy-ready, ASCII)

SSM-Clock Stamp (SSM-CS) -- Daily Anchor
date=YYYY-MM-DD
count=<n>
rollup_algo=sha256
rollup_sha256=<64-hex>
sort=iso_utc,stamp_core,chain
source=<ledger|sidecars>

Fields (concise)

  • date — UTC day key (YYYY-MM-DD).
  • count — number of stamps included (n).
  • rollup_algo — must be sha256.
  • rollup_sha256 — lowercase 64-hex of sha256( ascii(Stamp_1 "|" ... "|" Stamp_n) ).
  • sort — literal iso_utc,stamp_core,chain (documents canonical order).
  • source — where the set came from (e.g., ledger, sidecars).

Semantics (what the note means)

  • The moment this note is made public, all included stamps gain a no-later-than T_pub bound.
  • The note does not alter any stamp; it only attests the day’s joined string and its digest.

Optional clarity fields (non-normative)

from_iso_utc=<YYYY-MM-DDThh:mm:ssZ>
to_iso_utc=<YYYY-MM-DDThh:mm:ssZ>
publisher=<ascii>
anchor_id=<8-hex>

These improve provenance; verification does not require them.

Verifier steps (at a glance)

  1. Rebuild the day’s set; sort by (iso_utc, stamp_core, chain).
  2. Join literally as "Stamp_1|...|Stamp_n" (single |, no leading/trailing).
  3. Compute rollup_D' = sha256( ascii(joined) ).
  4. PASS if rollup_D' == rollup_sha256 and, if provided, n == count.
  5. Treat the note’s publication time as the no-later-than bound.

Practical tips

  • Keep everything plain ASCII; avoid spaces around = and never reformat inner stamp fields.
  • Publish in multiple places (mirrors) if you want redundant witnesses.
  • If the day has no stamps, publish count=0 and rollup_sha256 = sha256( ascii("") ).

Navigation
Back: SSM-Clock Stamp – Roll-up Hash (3.3)
Next: SSM-Clock Stamp – Dual-source Parity (3.5)