External anchoring — temporal proof

Every attestation record is signed and hash-linked, so anyone can verify integrity offline. Two things a signature cannot give you: proof of when a record existed (every timestamp is NeuralRing's own clock) and proof that there is only one chain (a per-chain check cannot see a second chain shown to someone else). External anchoring closes both.

How it works

  1. Several times a day the sweep publishes the chain head (its position and hash) to independent witnesses: RFC 3161 time-stamping authorities in the EU and a public append-only log on a European forge (OpenTimestamps is built, off by default).
  2. Their receipts are recorded in a signed anchor event — its own hash chain, signed with the same key as the records.
  3. New records then carry the newest anchor as a beacon (observed.anchorRef). Because the anchor's hash commits to unpredictable witness material, a record carrying it provably came into existence after that anchor's witnessed moment.

Result: a record gets a two-sided time bound — after the anchor it references, no later than the next anchor whose head includes it. Records after the newest witnessed head have no upper bound yet; the surfaces say so.

What it proves — and does not

  • Proves WHEN, and that every auditor sees the one chain (the same anchor number with a different head hash is a detected split view).
  • Does not prove where inference ran, what a provider is, or the quality of any claim. An anchor raises no assurance level, tier, ring or SEAL objective and is no routing predicate.
  • A witness failure is a recorded gap, never filled later; if every witness failed the segment is unanchored and says so.
  • Today's stamps come from free, non-qualified EU TSAs (DFN, DE; Certum's public service, PL). A non-qualified stamp is honest time evidence from a named operator; an eIDAS-qualified stamp additionally carries the Art. 41 presumption. The two are labelled on every chip and never merged. A qualified provider is configuration, not engineering.

Verify it yourself

# 1) your records (an export) + the public anchor feed + the receipts
curl -s "https://neuralring.eu/api/v1/anchors?limit=500" > anchors.json
curl -s "https://neuralring.eu/api/v1/anchors/1/receipt/rfc3161?target=http%3A%2F%2Fzeitstempel.dfn.de" > receipts/anchor-1-rfc3161-zeitstempel.dfn.de.tsr
node scripts/verify-anchors.mjs export.json anchors.json receipts/
# 2) the cryptographic check of an RFC 3161 receipt (the script prints the exact line):
openssl ts -verify -digest <headHash> -in receipts/anchor-1-rfc3161-zeitstempel.dfn.de.tsr -CAfile <the TSA's published root CA>
# 3) the standing public feed anyone can archive:
curl -s https://neuralring.eu/.well-known/neuralring-anchors.json

The in-app parser only structure-checks a token (imprint, nonce, time). openssl ts -verify is the cryptographic path; trust in the TSA's root is obtained out of band from the TSA's own published certificate.

Public pages: /verify/anchors (the head history) · /.well-known/neuralring-anchors.json. Specification: docs/spec/NEURALRING-ANCHORING-SPEC-v1.md in the repository.