8 个版本
新 0.1.7 | 2024 年 8 月 15 日 |
---|---|
0.1.6 | 2024 年 8 月 9 日 |
0.1.5 | 2024 年 7 月 15 日 |
#1900 in 神奇豆
每月 324 次下载
1MB
15K SLoC
Switchboard-On-Demand-Client
本软件包旨在与按需切换板、Crossbar 服务和队列网关进行交互。
Crossbar
一个中间服务,用于从 IPFS 获取预言机作业并返回饲料价格模拟。这有助于不断更新价格,而不是直接向预言机发送请求。
网关
与切换板预言机交互的前端。
示例
#[tokio::main]
async fn main() {
let client = RpcClient::new("https://api.devnet.solana.com".to_string());
let queue_key = Pubkey::from_str("FfD96yeXs4cxZshoPPSKhSPgVQxLAJUT3gefgh84m1Di").unwrap();
let feed = Pubkey::from_str("7Zi7LkGGARDKhUEFPBUQDsVZ9L965LPEv2rBRdmSXCWh").unwrap();
let kp = read_keypair_file("authority.json").unwrap();
let queue = QueueAccountData::load(&client, &queue_key).await.unwrap();
let gw = &queue.fetch_gateways(&client).await.unwrap()[0];
let crossbar = CrossbarClient::default(None);
let feed_data = PullFeed::load_data(&client, &feed).await.unwrap();
let feed_hash = feed_data.feed_hash();
let simulation = crossbar.simulate_feeds(&[&feed_hash]).await.unwrap();
println!("simulation: {:#?}", simulation);
let (ix, responses, num_success, luts) = PullFeed::fetch_update_ix(
&client,
FetchUpdateParams {
feed,
payer: kp.pubkey(),
gateway: gw.clone(),
crossbar: Some(crossbar),
..Default::default()
},
)
.await
.unwrap();
let blockhash = client.get_latest_blockhash().await.unwrap();
let msg = Message::try_compile(
&kp.pubkey(),
&[
ComputeBudgetInstruction::set_compute_unit_limit(1_400_000),
ComputeBudgetInstruction::set_compute_unit_price(35_000),
ix.clone()
],
&luts,
blockhash)
.unwrap();
let versioned_tx = VersionedTransaction::try_new(V0(msg), &[&kp]).unwrap();
let result: Response<RpcSimulateTransactionResult> = client
.simulate_transaction(&versioned_tx)
.await
.unwrap();
println!("ix: {:#?}", result);
}
依赖关系
~74MB
~1.5M SLoC