085070f4ef | ||
---|---|---|
.github | ||
.vscode | ||
cli | ||
directory | ||
libraries | ||
oracles | ||
packages | ||
programs | ||
tools | ||
website | ||
.eslintrc.json | ||
.gitignore | ||
Anchor.toml | ||
Cargo.toml | ||
LICENSE | ||
Oracle_Version.md | ||
Publishing.md | ||
README.md | ||
lerna.json | ||
package.json | ||
switchboard_v2.json | ||
tsconfig.json | ||
tsconfig.testing.json | ||
yarn.lock |
README.md
switchboard-v2
A monorepo containing APIs, Utils, and examples for Switchboard V2.
Table of Contents
Libraries
Package | Description |
---|---|
Protobufs | Protocol buffers used by the oracle to fetch and publish data. |
Typescript | Typescript client to interact with Switchboard V2. |
Typescript Lite | Typescript "Lite" client to deserialize aggregator accounts |
Sbv2 Utils | Typescript library with helpful utility functions |
Python | Python client to interact with Switchboard V2. |
Rust | Rust client to interact with Switchboard V2. |
CLI | Command Line Interface (CLI) to interact with Switchboard V2. |
Program Examples
Package | Description |
---|---|
anchor-feed-parser | Anchor example program demonstrating how to deserialize and read an onchain aggregator. |
spl-feed-parser | Solana Program Library example demonstrating how to deserialize and read an onchain aggregator. |
anchor-vrf-parser | Anchor example program demonstrating how to deserialize and read an onchain verifiable randomness function (VRF) account. |
Client Examples
Package | Description |
---|---|
feed-parser | Typescript example demonstrating how to read an aggregator account. |
feed-walkthrough | Typescript example demonstrating how to create and manage your own oracle queue. |
lease-observer | Typescript example demonstrating how to send PagerDuty alerts when your aggregator lease is low on funds. |
Dependencies
Setup
yarn install
yarn workspaces run build
yarn workspace @switchboard-xyz/switchboardv2-cli link
anchor build && node ./tools/scripts/setup-example-programs.js
Website
Run live server
yarn workspace website start
Build
yarn docs:build
Publishing
See ./Publishing.md for a detailed guide.
lerna version patch --no-private --yes
lerna publish from-git --yes
Localnet Testing Setup
The SDK supports copying a Switchboard devnet environment to your localnet environment for integration testing. This is useful if you want to see how your program will react to Switchboard data feed updates.
First, set the [provider.cluster] in Anchor.toml
to localnet.
Next, create a Switchboard devnet queue and oracle.
sbv2 localnet:env --keypair ../payer-keypair.json -o .switchboard
This command will output:
- start-local-validator.sh: starts a local Solana validator with the Switchboard program, IDL, and our devnet environment pre-loaded
- start-oracle.sh: start a Switchboard oracle and start heartbeating on the localnet queue
- docker-compose.yml: docker file with the Switchboard oracle environment
- switchboard.env: contains your Switchboard accounts
In three separate shells, run the following commands in this order:
./.switchboard/start-local-validator.sh
./.switchboard/start-oracle.sh
anchor test --skip-local-validator
The anchor test are configured to first fetch the account info for the Switchboard DAO controlled devnet permissionless queue. If the account info is not found, it assumes a localnet connection and looks for the switchboard.env
with your Switchboard environment specific public keys. If a.switchboard
directory or switchboard.env
file is not found in the root project directory, it will look 2 levels higher until giving up.