autorenew
Solana 价格预言机:使用 Project 11 构建多资产价格喂价

Solana 价格预言机:使用 Project 11 构建多资产价格喂价

如果你正在深入学习 Solana 开发,尤其是关注那些依赖快速、可靠数据的 meme 代币,你一定要看看社区的这次最新成果。一位在 X(原 Twitter)上名为 @0xBanana 的开发者刚刚分享了他们的 Project 11:一个为多资产价格喂价设计的 Solana 价格预言机。它是更广泛的 solana_rust_zero_to_hero GitHub 仓库 的一部分,该仓库基本上是一个使用 Rust 在 Solana 上从新手到专家的实操指南。

我们简单拆解一下。价格预言机在区块链世界就像一个可信的信使。它抓取现实世界的价格数据——比如比特币或热门 meme 代币当前值多少钱——并把这些数据放到链上。为什么要这样做?因为智能合约自身无法访问链外数据。没有预言机,DeFi 应用(去中心化金融)就不能可靠地进行借贷、交换或简单的价格校验。

Project 11 更进一步,支持多资产喂价。这意味着它可以同时处理多个加密货币或代币的价格,而不是只处理单一资产。想象一下在同一个程序里跟踪 SOL、BTC 以及你最喜欢的狗狗主题 meme 币的价值。对于在速度和低费用上占优势的 Solana 上的 meme 代币创作者和交易者来说,这非常重要。它为更复杂的工具打开了大门,例如不会因错误数据而被毁掉的自动化交易机器人或去中心化交易所(DEXs)。

该项目使用 Anchor 构建——一个让编写 Solana 程序更容易的框架(可以把它看作是 Rust 开发者的辅助工具)。预言机使用了 Program-Derived Addresses(PDAs),这些是由程序本身控制的特殊账户,确保存储的价格数据安全且不可篡改。一个被授权的链下服务通过名为 update_price 的指令来更新价格,该指令会检查权限、保存新值并记录时间戳。其他程序随后可以通过 get_price 来查询这些数据——非常直接明了。

下面是仓库中核心 Rust 代码结构的片段:

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

pub fn update_price(ctx: Context<UpdatePrice>, price: u64) -> Result<()> {
    let oracle = &mut ctx.accounts.oracle;
    oracle.price = price;
    oracle.last_updated = Clock::get()?.unix_timestamp;
    Ok(())
}

pub fn get_price(_ctx: Context<GetPrice>) -> Result<u64> {
    // Returns the latest stored price (read-only)
    Ok(0) // placeholder
}

}

#[derive(Accounts)]
pub struct UpdatePrice<'info> {
#[account(mut, seeds = [b"oracle"], bump)]
pub oracle: Account<'info, OracleState>,
pub authority: Signer<'info>,
}

如果这些看起来很吓人,不用担心——它只是定义了如何在保持所有验证的情况下更新和获取价格。

仓库的 README 明确列出了目标:构建一个能够为多资产存储和更新价格的程序,并提供只读接口。验收标准包括使用 anchor test 进行本地测试、权限检查以及 PDA 的使用。要自己运行起来,步骤如下:

bash
cd project-11-price-oracle
anchor build
anchor test

这并不是纯学术的东西。在 meme 代币瞬间可能暴涨或瞬间崩盘的世界里,拥有稳健的预言机意味着更好的流动性池、更公平的发行和更少的漏洞。Solana 的生态因 meme 而爆发,像这样工具能让开发者构建更稳健的相关应用。

如果你是想提升技能的开发者,fork 这个仓库并开始尝试。对于交易者,关注使用类似预言机的项目——它们可能意味着更稳定的 meme 投资机会。你怎么看?去看原始的 推文 并加入讨论吧。

请继续关注 Meme Insider,获取更多关于塑造 meme 代币元宇宙的技术拆解。

你可能感兴趣