#solana #lookup-tables #programs #rpc #rpc-client #tx #legacy

solana-program-client

轻量级库,用于调用 Solana 程序

1 个不稳定版本

0.1.0 2024 年 6 月 3 日

#13 in #tx

MIT 许可协议

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