#优化 #solana #transaction #rpc #rpc-client #client #estimate

solana_client_ext

Solana Rust客户端扩展,专注于高效的事务优化

1个不稳定版本

0.1.0 2024年8月10日

#647 in 魔法豆

Download history 88/week @ 2024-08-05 25/week @ 2024-08-12

113 每月下载量

MIT/Apache

235KB
156

Solana Rust客户端扩展

此crate为Solana Rust客户端提供扩展,专注于计算单元估算和优化。

特性

  • 估算Solana事务的计算单元
  • 通过添加计算预算指令优化计算单元的使用

用法

要使用此crate,将其添加到您的Cargo.toml文件中

[dependencies]
solana-client-ext = { git = "https://github.com/bergabman/Solana-Rust-Client-Extension.git", version ="0.1.0"} # Replace with the right version
use solana_client::rpc_client::RpcClient;
use solana_client_ext::RpcClientExt;
use solana_sdk::{
    message::Message, signature::read_keypair_file, signer::Signer, system_instruction,
    transaction::Transaction,
};
fn main() {
    let rpc_client = RpcClient::new("https://api.devnet.solana.com");
    let keypair = read_keypair_file("~/.config/solana/id.json").unwrap();
    let keypair2 = read_keypair_file("~/.config/solana/_id.json").unwrap();
    let created_ix = system_instruction::transfer(&keypair.pubkey(), &keypair2.pubkey(), 10000);
    let mut msg = Message::new(&[created_ix], Some(&keypair.pubkey()));

    let optimized_cu = rpc_client
        .optimize_compute_units_msg(&mut msg, &[&keypair])
        .unwrap();
    println!("optimized cu {}", optimized_cu);

    let tx = Transaction::new(&[keypair], msg, rpc_client.get_latest_blockhash().unwrap());
    let result = rpc_client
        .send_and_confirm_transaction_with_spinner(&tx)
        .unwrap();

    println!(
        "sig https://explorer.solana.com/tx/{}?cluster=devnet",
        result
    );
}

tx

依赖项

~70MB
~1.5M SLoC