What a successful verify() proves
- At least
signaturesRequiredkeys from the referencedregistryVersionsigned the payload. - Every signer is inside the deterministic selection set for the round.
- The aggregate Schnorr signature is valid for the exact
DataUpdate.
What it does not prove
- That
feedId,value, orcanonicalTimestampcorrespond to genuine Solana feed state — stateless verifiers store no feed state. That guarantee is economic: honest selected nodes only sign messages matching the canonical Solana feed they observe. Solana remains the source of truth for feed validity. - Freshness or non-replay. Historical registry versions remain verifiable forever, by design. Consumers must enforce
maxStalenessagainstcanonicalTimestampand track consumed payloads where replay matters.
Defenses in the design
Current trust assumptions (Brebeneskul devnet)
- Protocol admin controls node registration (
addNode/removeNode) and the redundancy buffer on every registry. The registered node set plus the admin are the entire trust root of the stateless verifiers. - Pre-audit. No external audit has been completed; mainnet is gated on it.
- Partial economic security. Staking and reward accounting are live on devnet (settlement, finalize/dispute paths, reward claims). Slashing is not —
dispute_roundexists, but A3 (Chivchyn) must first ship Solana registry versioning with historical validation (the prerequisite for dispute adjudication), then broader proof-based operator slashing. The node set remains permissioned; devnet is not production-ready.