Skip to main content

Evidence Blob Schema

Every evidence blob is a single JSON object encoded as UTF-8 bytes (typically 2–10 KB) and stored verbatim on Walrus. The schema is versioned: the fields below marked live are present in every blob stored today; the Milestone 2 extensions enrich the same object as they ship.

Live schema (v1)

Example

The canonical definition lives in the backend service (backend-service/api/services/walrus-storage.ts, type AttackRecord). The storer cannot choose these fields: the backend hands out the exact bytes to store and verifies the stored blob field-by-field before linking it — see Evidence Pipeline.

Milestone 2 schema extensions (v2)

The same JSON object gains the following fields as the Milestone 2 pipeline lands, making each blob a self-contained evidentiary package: These fields are additive: v1 readers can still parse v2 blobs, and the read-back verification compares the full canonical record either way.

Encoding details

  • Bytes are JSON.stringify(record) encoded as UTF-8 — no wrappers, no compression, no envelopes.
  • The Walrus blob id is the content-derived identifier returned by the register transaction; the same bytes always map to the same blob id.
  • Blobs are stored non-deletable, so a record cannot be retracted once certified.