Deploy Feed
How deployment works across Solana/SVM and EVM, and what "deploying a feed" actually means per chain.
“Deploying” a Switchboard feed means different things depending on the chain:
Solana/SVM: you create a real on-chain PullFeed account (an address) that references your feed definition and can be updated by oracle signatures.
EVM: feeds are identified by a deterministic
bytes32ID (derived from the job definition + queue). You generally do not create a dedicated on-chain “feed account”; instead, you submit oracle-signed updates to the Switchboard contract and read the latest update from storage.
This guide covers both paths and explains why Switchboard’s docs historically focused on Solana deployment: Solana requires an explicit on-chain initialization transaction, whereas EVM is closer to “publish + integrate + update”.
Prerequisites (all chains)
Before “deployment”, you should have:
a feed definition (jobs + tasks) you have simulated successfully
a clear understanding of:
what value your feed returns
decimal conventions (e.g., 1e8 vs 1e18)
which sources/jobs you trust and why
If you haven't designed and simulated your jobs yet, start here:
Build with TypeScript (code-first)
Build with UI (UI-first)
Solana / SVM: Deploy a PullFeed account
What you are doing
On Solana, deployment means:
Choose a queue (oracle subnet).
Optionally store/pin your job definition so it’s discoverable.
Create a new PullFeed account on-chain and configure it with:
feed hash (the definition)
variance/quorum/staleness rules
authority and metadata
Requirements
A funded Solana keypair file (payer)
A Solana RPC URL
Your OracleJob[] definition
Create a keypair file if you don’t have one:
Install
Deployment flow (TypeScript)
Below is the canonical deployment flow as a single script outline. You can merge this into the same project where you built/simulated your jobs.
Choosing validation parameters
minResponses: raise this if you want stronger quorum guarantees.
maxVariance: lower this if you want tighter agreement across job outputs.
maxStalenessSlots: raise this if you can tolerate older data; lower it for strict freshness.
minSampleSize: determines how many samples are considered when reading.
If you’re coming from the UI, these correspond to the same concepts (Min Responses, Max Variance, Sample Size, Max Staleness).
Make it discoverable
Storing with Crossbar pins the feed definition to IPFS and makes it easier to view/debug in the Switchboard explorer.
EVM: “Deploying” is publishing a feed ID + updating via the Switchboard contract
Why there isn’t a dedicated “deploy feed” step on EVM
On EVM, a feed is identified by a deterministic bytes32 feed ID. You can treat deployment as:
Obtain the feed ID (often from the Feed Builder / Explorer).
Store that feed ID in your consumer contract or app.
Fetch oracle-signed updates off-chain.
Submit updates on-chain via
updateFeeds.
There is no per-feed “account creation” transaction analogous to Solana’s PullFeed init.
On-chain: reading and updating
A typical Solidity integration looks like:
Store the Switchboard contract address + your feedId
When you need fresh data:
compute the required fee
submit
updateFeeds(updates)read
latestUpdate(feedId)
Many feeds use
int128scaled by1e18to avoid floating point issues. Always consult the feed’s intended decimal convention.
Off-chain: fetch encoded updates with Crossbar (TypeScript)
Use Crossbar to fetch oracle-signed updates (encoded) for submission:
Do we need “deployment docs” for other chains?
Switchboard supports additional chains with chain-specific SDKs and verification flows (e.g., Move-based environments). Many of these integrations follow the EVM-style model: you fetch oracle consensus off-chain and include a verification/update step inside your transaction, rather than creating a dedicated on-chain “feed account”.
If you’re targeting a non-Solana chain, treat “deployment” as:
Create/publish a feed definition and get its feed ID/address.
Use the chain’s SDK to fetch and verify oracle results in your transaction flow.
Last updated