1 个不稳定版本
0.1.0 | 2024 年 6 月 3 日 |
---|
#13 in #tx
37KB
294 行
Solana 程序客户端
solana_program_client
是一个轻量级库,用于调用 Solana 程序。它专注于抽象化与 Solana 程序交互所需的相关库。
概述
solana_program_client
是一个用于使用 Rust 开发 Solana 程序和客户端 Web 应用程序的库。此项目的核心目标是提供一个易于使用的界面,用于与 Solana 程序交互。
这反过来允许开发者使用简单的 RPC 请求调用程序函数。
示例在此处提供
use solana_program_client::legacy_tx::*;
#[derive(BorshSerialize, BorshDeserialize)]
#[borsh(crate = "borsh")]
pub struct UpdateBlob {
pub data: Vec<u8>,
}
fn main() {
// create a Rpc client connection
let connection = RpcClient::new("https://api.devnet.solana.com");
let program_id = blob::ID;
// get blob PDA
let (blob_account, _) = Pubkey::find_program_address(&[&b"blob"[..]], &program_id);
let payer = Keypair::read_from_file("~/.config/solana/id.json").unwrap();
let instruction_name = "update_blob";
// construct instruction data
let instruction_data = UpdateBlob {
data: "data".as_bytes().to_vec(),
};
// set up accounts
let accounts = vec![
AccountMeta::new(blob_account, false),
AccountMeta::new(payer.pubkey(), true),
];
// call signed call
let _tx_signature = signed_call(
connection,
program_id,
payer,
instruction_name,
instruction_data,
accounts,
).unwrap();
}
功能
- 向 Solana 程序提交签名调用
- 创建查找表
- 扩展查找表
- 提交带版本的交易
动机
- 在不知道函数判别符的情况下,无法通过 Rust Solana 客户端提交交易。
- 构建 Rust Solana 客户端时,代码重复率较高。
开发状态
此库目前处于开发阶段,应被视为 alpha 版本。需要进一步扩展。
待办事项
- 无签名调用
- 事件订阅
提示
solana: Fj72ApTUaYEwC3RKCKQ7iX3s8i8CVAnZW1f9PAXSKtbY
依赖项
~75MB
~1.5M SLoC