Public methodology

Ledger seal

How settled ledger rows are committed to a deterministic daily hash chain.

What it measures

A daily SHA-256 digest of canonical ledger lines containing tx_hash|chain|block_number|from_wallet|to_wallet|amount_raw|timestamp. Each line represents one payments.db row and contains only fields treated as immutable on-chain facts.

How it is produced

The source script is ledger_seal.py. It orders canonical lines by tx_hash, hashes each settled UTC day, and links daily digests into a chain. Only days at least two UTC days old are sealed. Every run re-verifies the last three days; any drift raises an alert, exits with status 2, and blocks publication.

Chain construction

chain(D) = sha256(chain(D-1) + "\n" + digest(D))
genesis  = "smartflow-observatory-ledger-seal-v1"

State files

seals.jsonl
SEAL-LATEST.txt

Limits and assumptions

How to refute this

  1. Show that sealed data is incorrect or incomplete. The seal covers what the tracker collected, including its errors and gaps. Sealed does not mean audited.
  2. Perform a legitimate historical backfill and show that the prior chain no longer verifies without a new-version seal and a correction entry.
  3. Show that an external verifier cannot confirm the database contents without access to a dump and a digest recomputation.
  4. Show that an old publication used to pin the hash can be edited after publication, weakening it as an independent timestamp.

Last validated

2026-07-05