VeriFeed Working draft

Documentation

Glossary

Terms as this specification uses them.

Feed
An append-only sequence of entries published by one issuer, identified by that issuer's DID. One feed, one signing key, one linear history.
Entry
One signed, content-addressed, hash-chained record. Carries an opaque payload and commits to its own content and to its predecessor.
feed_id
The issuer's did:key DID. Also the feed's identity, and the public key every signature in it verifies under.
seq
A monotonic non-negative integer, contiguous within a feed. Contiguity is one half of the completeness check; the chain is the other.
prev_hash
The previous entry's entry_hash. Always present, null only for the genesis entry, never an omitted key.
entry_hash
"sha256:<hex>" over the JCS-canonical core of the entry. Content-addresses it: any edit to a covered field breaks it.
Chain
The linkage formed by each entry committing to its predecessor's hash. Each hash folds in the one before it, so a single entry_hash commits to the entire prior history.
Signed head
The issuer's signed statement of its current tip: {seq, entry_hash} bound to its key and a timestamp. A subscriber pins it to detect a later rewind.
Page
What a subscriber pulls or is pushed: entries after a cursor, plus a signed head. Pull and push deliver the same object.
Partial page
A page carrying a bounded prefix of the entries after the cursor, with the head running ahead of the last entry. How a publisher chunks a long backlog and a transport caps a response body.
Cursor
The position a subscriber has walked to and can establish it holds. On a partial page this is the last entry, not the head.
Anchor
The entry hash a subscriber verifies the next page against. Completeness claims are relative to the anchor held.
Completeness
The property that no entry was dropped or reordered between two the subscriber holds. Distinct from currency.
Rewind
A server serving a shorter or divergent history than one it previously attested to. Detected only where the subscriber supplies the head it pinned.
Equivocation
An issuer signing two conflicting heads at the same seq, presenting incompatible histories to different subscribers. Two such heads form a non-repudiable proof.
Withholding
Freezing one subscriber's view at an earlier position while serving others further on. Distinct from equivocation, and undetectable in the current draft.
State checkpoint
An ordinary entry whose payload commits to the feed's aggregated state so far, letting a late joiner start from a signed anchor instead of replaying from genesis, at the cost of inheriting the issuer's word for the history behind it.
Closed field set
The rule that a valid object carries exactly the known keys: none missing, none extra. An extra field would be covered by the signature but not the content hash, which is a malleability hole.
Opaque payload
A JSON object the feed layer carries and signs without interpreting, beyond requiring a non-empty string type. One wire format therefore serves any agent's stream.
Payload profile
A non-normative document defining what the payloads of a class of feed mean, and how a subscriber folds them into state. Capability announcement and registry change log are the two specified.
JCS
JSON Canonicalization Scheme [RFC 8785]. Sorted-key serialisation, so two implementations produce identical bytes for one object and cannot disagree about what was signed or hashed.
did:key
A DID method deriving the identifier from the public key, so a signature checks without a resolution step, and key rotation is impossible without a change of identity.
Conformance vector
A checked-in JSON case, positive or negative, that a second implementation replays to demonstrate it accepts and rejects the same objects. Generated deterministically from a fixed non-secret seed; never hand-edited.
Wire version string
An object's format identifier, such as feed-entry/0.1. Changes whenever the field set or the verification contract changes, including on the addition of an optional field. feed-page/0.2 exists because release 0.2.0 relaxed one verification rule; feed-entry and feed-head stayed at 0.1.