Skip to main content

What a successful verify() proves

  • At least signaturesRequired keys from the referenced registryVersion signed 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, or canonicalTimestamp correspond 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 maxStaleness against canonicalTimestamp and 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_round exists, 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.