Crate anchor_client

source ·
Expand description

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.1 ", features = ["async"] }

Re-exports§

Structs§

  • Client defines the base configuration for building RPC clients to communicate with Anchor programs running on a Solana cluster. It’s primary use is to build a Program client via the program method.
  • Auxiliary data structure to align the types of the Solana CLI utils with Anchor client. Client implementation requires <C: Clone + Deref<Target = impl Signer>> which does not comply with Box that’s used when loaded Signer from keypair file. This struct is used to wrap the usage.
  • Program is the primary client handle to be used to build and send requests.
  • Iterator with items of type (Pubkey, T). Used to lazily deserialize account structs. Wrapper type hides the inner type from usages so the implementation can be changed.
  • RequestBuilder provides a builder interface to create and send transactions to a cluster.

Enums§

Functions§