Authority-Updated Feeds
Authority-updated feeds let you publish Switchboard quote accounts on Solana using a trusted authority instead of Switchboard's oracle-signing flow.
In this model, the authority signs the update directly and quote_program stores the result in the same quote-account format used by Surge. The authority can be:
a wallet
a PDA signed by another Solana program with
invoke_signed
Throughout this page, "authority-updated feed" means an authority-owned quote account in quote_program.
When To Use This Feature
Use authority-updated feeds when your application is the source of truth for a value and you want to publish that value through Switchboard quote-account tooling.
Common examples:
protocol-defined mark or fair values
internal pricing models
program-owned data streams published from a PDA
integrations that want a stable quote-account interface without oracle signatures
Use the standard oracle-backed update path instead if you need Switchboard oracle verification and the corresponding trust model.
What Gets Created
A single authority-updated quote account can contain one or more feed IDs and their latest values.
On the first successful update, quote_program:
derives the quote PDA
creates the quote account
writes the payload
There is no separate initialize instruction. Creation happens on first write.
Quote Account Identity
The quote account PDA is derived from:
Two consequences matter in practice:
the authority is part of the quote stream identity
feed order is part of the quote stream identity
These feed bundles produce different quote accounts:
Recommended practice:
choose one canonical ordering and use it everywhere
for human-labeled feeds, sort alphabetically by symbol or another stable label before building the payload
keep the same ordered feed list when deriving the PDA, building the payload, and storing configuration in your app
If the order changes, the quote account address changes.
High-Level Flow
Wallet authority
Build an authority quote payload with the feed IDs, values, and slot.
Derive the quote PDA from the authority and the ordered feed list.
Send
FeedAuthorityUpdate.quote_programvalidates the signer, derivation, and slot progression.The quote account is created on first use or updated if it already exists.
PDA authority
Your program derives or receives its authority PDA.
Your program builds or receives the authority quote payload.
Your program CPI-calls
quote_program::FeedAuthorityUpdate.Your program signs the CPI with
invoke_signed.quote_programapplies the same validation and writes the update.
Accounts
FeedAuthorityUpdate expects:
quote_account- writableauthority- signerclock_sysvarpayer- signer and rent payer on first usesystem_program
Notes:
authoritycan be a wallet or PDAquote_accountis always a PDA owned byquote_programpayerfunds initialization, but the authority defines the stream identity
Payload Format
Authority updates use a dedicated payload format:
Each PackedFeedInfo is:
Notes:
feed_idis a 32-byte feed identifierfeed_valueis stored as signedi128min_oracle_samplesis retained for compatibility with shared quote tooling; SDK helpers default it to1the payload must include at least one feed
Validation Rules
quote_program::FeedAuthorityUpdate rejects the update unless all of the following are true:
authoritysigned the transactionthe payload parses as a valid authority quote payload
the payload contains between
1and13feed IDsthe payload contains no duplicate feed IDs
the provided
quote_accountmatches the PDA derived fromAUTH + authority + ordered feed IDsif the quote account already exists, the stored authority matches the signer
the payload slot is strictly less than the current cluster slot at execution time
the payload slot is greater than or equal to the last stored slot
The current feed-ID limit is:
maximum feed count:
13maximum feed-ID bytes used in PDA seeds:
416
Practical slot guidance:
fetch a recent slot before building the payload
treat the slot as monotonic per quote account
do not reuse an older slot after a newer update has already landed
What Gets Stored On-Chain
Authority-backed quotes use the existing Switchboard quote-account layout.
For authority quotes:
the first 32-byte namespace field stores the authority pubkey
the quote data section stores the encoded authority payload
shared decoders reconstruct the quote as
sourceScheme = "authority"
For oracle-backed quotes, that same namespace field stores a queue pubkey instead. The layout stays compatible, but consumers must inspect the source scheme before applying trust assumptions.
Reading And Trust
Authority-updated feeds are not oracle-verified quotes. Consumers should trust them only to the extent that they trust the configured authority.
When reading an authority quote:
decode it through the normal quote readers or SDK helpers
check that
sourceSchemeisauthoritytreat the authority pubkey as the publisher identity
do not assume oracle signatures or
QuoteVerifier-style oracle trust guarantees
This model is a good fit when your application, service, or program is intentionally the publisher of record.
TypeScript SDK Helpers
The TypeScript SDK exposes helpers in javascript/on-demand/src/classes/oracleQuote.ts:
OracleQuote.buildAuthorityQuotePayload(...)OracleQuote.deriveAuthorityQuotePubkey(...)OracleQuote.buildFeedAuthorityUpdateInstruction(...)
Example:
If you set minOracleSamples explicitly, treat it as an unscaled oracle-sample count and use the same ordered feed list for both payload construction and PDA derivation.
Rust SDK Helpers
The Rust SDK exposes the same concepts in switchboard-on-demand:
build_authority_quote_payload(...)derive_authority_quote_pubkey(...)build_feed_authority_update_instruction(...)
These helpers are useful for:
off-chain Rust clients
integration tests
Solana programs preparing CPI inputs
Best Practices
Pick a canonical feed ordering before you publish the first update.
Alphabetical ordering by symbol is a good default when feeds have stable human-readable names.
If you only work with raw feed IDs, sort them by a stable application-level rule and never change it.
Persist the authority, ordered feed list, and derived quote account together in your configuration.
Keep feed bundles small and avoid duplicate feed IDs.
Separate authority-backed handling from oracle-backed handling in downstream code.
Only publish or consume authority quotes in places where the authority is an acceptable trust anchor.
Summary
Authority-updated feeds let a wallet or PDA publish Switchboard quote accounts directly into Solana quote_program.
Key properties:
the authority owns the quote stream identity
feed order matters
first write initializes the account
the current limit is
13feed IDs per quoteshared readers decode these quotes as
sourceScheme = "authority"
Use this flow when you want Switchboard-compatible quote accounts but the data should be trusted because of your authority signer, not because of Switchboard oracle signatures.
Last updated