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
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.

