Crate switchboard_solana
source ·Expand description
Switchboard is a multi-chain, permissionless oracle protocol providing verifiable off-chain compute for smart contracts.
This library provides the Anchor account and instruction definitions for operating Switchboard. The library makes use of the target_os to enable client side features if the target_os is not ‘solana’. This allows the library to be used in both on-chain programs within the Solana runtime as well as client side applications.
The Switchboard deployment consists of two programs:
- The Oracle Program: The core Switchboard deployment consisting of Aggregators (data feeds),
Oracles, and Oracle Queues. Program_ID:
SW1TCH7qEPTdLsDHRgPuMQjbQxKdH2aBStViMFnt64f
- The Attestation Program (V3): Enables the use of Trusted Execution Environments (TEEs)
providing verifiable off-chain compute allowing developers to write their own off-chain
logic and “attest” on-chain whether it was executed within a secure enclave.
Program_ID:
sbattyXrzedoNATfc4L31wC9Mhxsi1BmFhTiN8gDshx
Accounts
This SDK provides the following account definitions for the Oracle Program:
This SDK provides the following account definitions for the Attestation Program:
Usage
Within an Anchor program you can make use of the AccountLoader trait to deserialize Switchboard accounts within your AccountsContext.
use anchor_lang::prelude::*;
use switchboard_solana::AggregatorAccountData;
#[derive(Accounts)]
#[instruction(params: ReadFeedParams)]
pub struct ReadFeed<'info> {
pub aggregator: AccountLoader<'info, AggregatorAccountData>,
}
For Solana programs using native rust you can use the new
method to deserialize
Switchboard accounts.
use switchboard_solana::{AggregatorAccountData, SWITCHBOARD_PROGRAM_ID};
use solana_program::{
account_info::{next_account_info, AccountInfo},
entrypoint,
entrypoint::ProgramResult,
msg,
program_error::ProgramError,
pubkey::Pubkey,
};
entrypoint!(process_instruction);
fn process_instruction<'a>(
_program_id: &'a Pubkey,
accounts: &'a [AccountInfo<'a>],
_instruction_data: &'a [u8],
) -> ProgramResult {
let accounts_iter = &mut accounts.iter();
let aggregator = next_account_info(accounts_iter)?;
// check feed owner
let owner = *aggregator.owner;
if owner != SWITCHBOARD_PROGRAM_ID {
return Err(ProgramError::IncorrectProgramId);
}
// load and deserialize feed
let feed = AggregatorAccountData::new(aggregator)?;
}
Re-exports
pub use decimal::*;
pub use oracle_program::*;
pub use attestation_program::*;
pub use seeds::*;
pub use utils::*;
pub use client::*;
Non-target_os="solana"
Modules
- clientNon-
target_os="solana"
Macros
- Macro used to wrap exclusively non-client modules
- Macro used to wrap solana exclusive modules
Structs
- The schema of the output data that will be sent to the quote verification sidecar.
Gramine
: Gramine is a virtualized runtime used to manage vanilla binaries to execute in an SGX execution environment. This struct allows access to specific overrides that come out-of-the-box with Gramine.- The expected environment variables when a solana function is being executed
Enums
- Switchboard Functions error suite
Constants
- The default number of slots before a request expires.
- The const program ID.
- The minimum number of slots before a request is considered expired.
- Program id for the Switchboard oracle program sbattyXrzedoNATfc4L31wC9Mhxsi1BmFhTiN8gDshx
- Program id for the Switchboard oracle program SW1TCH7qEPTdLsDHRgPuMQjbQxKdH2aBStViMFnt64f
Statics
Functions
- Returns
true
if given pubkey is the program ID. - Returns the program ID.