#anchor #programs #rpc #account #rpc-client #interact #signer

anchor-client

An RPC client to interact with Anchor programs

46 releases (29 breaking)

0.30.0 Apr 15, 2024
0.29.0 Oct 16, 2023
0.28.0 Jun 9, 2023
0.27.0 Mar 8, 2023
0.3.0 Mar 12, 2021

#1068 in Magic Beans

Download history 1407/week @ 2024-02-08 1682/week @ 2024-02-15 1233/week @ 2024-02-22 2003/week @ 2024-02-29 1770/week @ 2024-03-07 2129/week @ 2024-03-14 1916/week @ 2024-03-21 1850/week @ 2024-03-28 1757/week @ 2024-04-04 2010/week @ 2024-04-11 1989/week @ 2024-04-18 2159/week @ 2024-04-25 1625/week @ 2024-05-02 1630/week @ 2024-05-09 1842/week @ 2024-05-16 1362/week @ 2024-05-23

6,764 downloads per month
Used in 53 crates (45 directly)

Apache-2.0

46KB
987 lines

An RPC client to interact with Solana programs written in anchor_lang.

Examples

A simple example that creates a client, sends a transaction and fetches an account:

use std::rc::Rc;

use anchor_client::{
    solana_sdk::{
        signature::{read_keypair_file, Keypair},
        signer::Signer,
        system_program,
    },
    Client, Cluster,
};
use my_program::{accounts, instruction, MyAccount};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create client
    let payer = read_keypair_file("keypair.json")?;
    let client = Client::new(Cluster::Localnet, Rc::new(payer));

    // Create program
    let program = client.program(my_program::ID)?;

    // Send a transaction
    let my_account_kp = Keypair::new();
    program
        .request()
        .accounts(accounts::Initialize {
            my_account: my_account_kp.pubkey(),
            payer: program.payer(),
            system_program: system_program::ID,
        })
        .args(instruction::Initialize { field: 42 })
        .signer(&my_account_kp)
        .send()?;

    // Fetch an account
    let my_account: MyAccount = program.account(my_account_kp.pubkey())?;
    assert_eq!(my_account.field, 42);

    Ok(())
}

More examples can be found in here.

Features

The client is blocking by default. To enable asynchronous client, add async feature:

anchor-client = { version = "0.30.0 ", features = ["async"] }

Dependencies

~74MB
~1.5M SLoC