switchboard-on-demand

Crates.ioswitchboard-on-demand
lib.rsswitchboard-on-demand
version0.1.15
sourcesrc
created_at2024-03-10 18:34:16.753235
updated_at2024-10-02 22:53:19.244189
descriptionA Rust library to interact with the Switchboard Solana program.
homepagehttps://switchboard.xyz
repositoryhttps://github.com/switchboard-xyz/solana-sdk/tree/main/rust/switchboard-solana
max_upload_size
id1168849
size140,049
(mgild)

documentation

https://switchboard-on-demand-rust-docs.web.app

README

Switchboard Logo

switchboard-on-demand

A Rust library for seamless interaction with Switchboard Oracle accounts on the Solana blockchain.

Crates.io Discord Twitter Follow

Switchboard Documentation: docs.switchboard.xyz
Rustdoc: switchboard-on-demand-rust-docs.web.app

Overview

switchboard-on-demand provides Rust developers with an efficient and easy-to-use client for integrating Solana-based oracles from Switchboard into their applications. This library empowers developers to leverage decentralized, trustless, and highly reliable oracle data for various applications, particularly in the DeFi and Web3 spaces.

Features

  • On-Demand Oracle Data: Fetch real-time, accurate, and tamper-proof data for blockchain applications.
  • Custom Oracle Creation: Design and deploy your own oracles tailored to your specific data needs.
  • High Fidelity Financial Data: Ideal for applications requiring precise and dependable financial data.
  • Privacy-Focused: Operates within confidential runtimes to ensure data integrity and security.

Getting Started

Prerequisites

Ensure you have the following installed:

  • Rust (latest stable version)
  • Cargo
  • Solana CLI tools (if interacting directly with the Solana blockchain)

Installation

Add switchboard-on-demand to your Cargo.toml:

[dependencies]
switchboard-on-demand = "0.1.0"

Using on chain

use switchboard_on_demand::PullFeedAccountData;
use rust_decimal::Decimal;

pub fn solana_ix<'a>(mut ctx: Context<YourAccounts<'a>>, params: Params) -> Result<()> {
    // Assume `account_info` is obtained from the Solana blockchain
    let feed = PullFeedAccountData::parse(ctx.accounts.sb_feed)?;
    let max_stale_slots = 100; // Define the maximum number of slots before data is considered stale
    let min_samples = 5; // Set the minimum number of samples for data accuracy
    let price: Decimal = feed.get_value(&Clock::get()?, max_stale_slots, min_samples, true)?;

    msg!("Oracle Price: {}", price);

    Ok(())
}
Commit count: 0

cargo fmt