Vector · Reference
Duel records
The files a validator publishes, how every identifier in them is derived, and how to deal a duel's units again from the record and one chain block.
Look-up page — built for scanning
The result store
Every event is written to an append-only result store, which a validator can mirror to a public Hugging Face dataset; the competition dashboard reads the same files.
| File | Contents |
|---|---|
index-NNNN.jsonl | One canonical record per event: a genesis, a duel or a vacate. The source of truth; it only grows |
events/<event_id>.json | One event in full: its units, per-task scores, verdict, seed block, benchmark commit and contract version |
media/<sha[:2]>/<sha>.mp4 | Clips, by content hash: each scored unit's demonstration and both sides' rollouts |
head.json | The current king |
queue.json | The entries waiting to duel, and the one duelling now |
running.json | The duel in progress and how far it has got |
champions.json | The champions paid now, and each one's share |
manifest.json | The store's layout version |
Identifiers
All hashes are sha256 of UTF-8 text, written as lowercase hex, with fields joined by |.
| Identifier | Derivation |
|---|---|
| Submission key | The first 16 hex characters of sha256(repo@revision), the revision as 40 lowercase hex characters |
| Duel id | sha256(spec version | challenger key | challenger revision | king key or none | king revision or none) |
| Event id | sha256("event" | kind | sequence | duel id), where sequence is the validator's own event counter; for a vacate, the last field is the king's submission key |
| Entropy | <seed block>:0x<seed block hash>, the hash as 64 lowercase hex digits |
Dealing units
For each task in contract order, a counter yields integers from
sha256(vector/units/3 | duel id | entropy | task | n) for n = 0, 1, 2, …, taking the first 8
bytes big-endian and rejecting draws that would bias the modulo. Each run of the task takes 20
candidate scored-scene seeds, then 20 candidate demonstration seeds distinct from them, all in
[2,000,000, 2³¹ − 1). The expert's first success in each list is used; a unit is void only if every
candidate in a list fails.
Because a task's units are drawn in order, a smaller duel's units for each task are the first units of that task in a larger one.
Checking a record
- Read the seed block's hash from the chain, and form the entropy.
- Recompute the duel id from the record's two submissions and the contract version.
- Deal the units, and compare each unit's published scored-scene seed with its candidates.
- Check each demonstration against its published sha256 and clip.
- Recompute every task's rate and the two scores from the per-unit outcomes, and the verdict from the margin.
The expert's own trajectory is not reproducible from a seed (its planner stops on a wall clock), so what is checked is that each scene was one the duel was entitled to use and that the verdict follows from the published outcomes.
