Designing a Feed (EVM)
Tutorial on designing a Feed with Switchboard
Designing a Switchboard Feed requires knowledge of the Oracle Job format, which sources data will come from, and some knowledge of the risks associated with different sources. For a simple guide on fetching data from various sources, and specifying what/how to get data, check out the docs on Switchboard Feeds.
The easiest way to build a Pull Feed is using the Switchboard On-Demand Builder. If you don't find inspiration for your desired feed definition within the docs, you can search for existing feeds in the On-Demand Explorer, and even the Switchboard-V2 Push Explorer.
Making a Pull Feed with the Builder
The On-Demand Builder provides an intuitive interface for designing and simulating Switchboard feed definitions. Using it on EVM networks is straightforward: select the appropriate network, drag in the relevant jobs, and configure the feed options. Let's step through building a simple feed on an EVM network:
Navigate to https://ondemand.switchboard.xyz and select the "Builder" option.
Pick the correct network. More networks coming soon!
Since feeds are composed of Oracle Jobs, you'll need to add one (or many) jobs to this build. Click "+ Build New Job" to open up the builder menu.
You should see the following, click one of the tabs on the left-side pane to reveal different tasks available to you.
Drag the tasks you want for the desired source and configure then as you wish. The following example will use an
HttpTask
and aJsonParseTask
.
When you're happy with the job definition, click simulate. This will dry-run the jobs against an instance of the Switchboard Task-Runner. In this example, the simulator yields $60K at the time of running, with version "RC_06..." of the task-runner.
If you're happy with the job configuration, add it to the current Feed with 'Add'. Remember, the feed output will be the median of all jobs supplied. You can move onto Creating a Feed for more info around configuration.
Designing a Feed in Typescript
If you're more comfortable with a text editor, it can be useful to use language-server typescript features to configure feed inputs. For the following demonstration, we'll use bun.sh for the ease of use with typescript.
Initializing the Project
Create the example directory and navigate to it to initialize the bun project:
You can press enter through each of the options to setup the
package.json
and get through the configuration.The only dependency you'll need is the Switchboard On-Demand package, @switchboard-xyz/on-demand. Install it with:
Make sure things are installed:
Boilerplate Script
Many developers using Switchboard choose to use Visual Studio Code, this is a great tool for writing Typescript code, and makes working with Oracle Jobs pretty straightforward.
To get started, replace the contents of index.ts
with the following:
index.ts
Note: The simulation server is heavily rate-limited. Therefore, the endpoint should be used solely for test development purposes.
package.json
Note: The @switchboard-xyz/on-demand package is actively maintained. Ensure the version in your package.json is up to date (it should likely be greater than 1.1.23, for example).
Running the Feed
From here, running the example feed is as simple as running
This command should now output something similar to:
Resources
Explore boilerplate feed definitions and learn about how the task runner works in the Switchboard Feeds Documentation. You can modify the job and add new ones until you're satisfied with the definition you've created. Then it's onto the next section.
Last updated