4 个版本 (2 个破坏性更新)

0.3.1 2024 年 7 月 18 日
0.3.0 2024 年 5 月 24 日
0.2.0 2024 年 5 月 1 日
0.1.0 2024 年 3 月 22 日

#3 in #pyth

Download history 250/week @ 2024-04-28 62/week @ 2024-05-05 39/week @ 2024-05-12 208/week @ 2024-05-19 99/week @ 2024-05-26 72/week @ 2024-06-02 65/week @ 2024-06-09 319/week @ 2024-06-16 450/week @ 2024-06-23 423/week @ 2024-06-30 503/week @ 2024-07-07 516/week @ 2024-07-14 410/week @ 2024-07-21 471/week @ 2024-07-28 851/week @ 2024-08-04 855/week @ 2024-08-11

2,612 每月下载量
用于 6 个 crate (通过 bonfida-utils)

Apache-2.0

36KB
699

Pyth Solana 接收 Rust SDK

这是一个用于构建 Solana 程序的 Rust SDK,这些程序将消费 Pyth Solana 接收器发布的 Pyth 价格更新。

它可在 crates.io 上找到。

拉取模型

Pyth Solana 接收器允许用户以拉取方式消费 Pyth 价格更新。这意味着当用户想要与需要价格更新的应用程序交互时,他们负责在链上提交价格数据。

价格更新将被发布到由接收器合约拥有的价格更新账户中。一旦更新被发布到价格更新账户,任何人都可以通过将价格更新账户作为 Solana 指令中的一个账户来使用它。价格更新账户可以被关闭,以收回租金。

警告

在使用价格更新账户时,您应检查账户是否由 Pyth Solana 接收器合约拥有,以避免冒充攻击。如果您使用 Anchor 的 Account 结构(例如:Account<'info, PriceUpdateV2>),此 SDK 会进行检查。

您还应检查账户的 verification_level。有关此内容的更多信息,请参阅 VerificationLevel 的文档 此处

示例用途

一个 Solana 程序可以使用此 SDK 消费由 Pyth Solana 接收器创建的价格更新账户。

use anchor_lang::prelude::*;
use pyth_solana_receiver_sdk::price_update::{get_feed_id_from_hex, PriceUpdateV2};

declare_id!("2e5gZD3suxgJgkCg4pkoogxDKszy1SAwokz8mNeZUj4M");

pub const MAXIMUM_AGE: u64 = 60; // One minute
pub const FEED_ID: &str = "0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d"; // SOL/USD price feed id from https://pyth.network/developers/price-feed-ids

#[program]
pub mod my_first_pyth_app {
    use super::*;

    pub fn initialize(ctx: Context<Initialize>) -> Result<()> {
        let price_update = &mut ctx.accounts.price_update;
        let price = price_update.get_price_no_older_than(
            &Clock::get()?,
            MAXIMUM_AGE,
            &get_feed_id_from_hex(FEED_ID)?,
        )?;
        /// Do something with the price
        Ok(())
    }
}

#[derive(Accounts)]
pub struct Initialize<'info> {
    #[account(mut)]
    pub payer: Signer<'info>,
    pub price_update: Account<'info, PriceUpdateV2>,
    // Add more accounts here
}


依赖关系

~18–27MB
~457K SLoC