If I want to create an spl token without anchor in rust, I can do this like described here. How do I do it using the anchor_client
crate?
1 Answer
I believe, or as I understand, there is no reason to construct the instructions via anchor_client
. The Anchor client generates the client abstractions for the Anchor program so that instruction-building methods do not need to be written by hand. When this builder is used, the result is an Instruction
object that can be included in a Transaction
.
Anchor implements some of the SPL programs (written in "native" Solana Rust) to be easily usable in CPI and for example for decoding data. The package is available at https://github.com/coral-xyz/anchor/tree/v0.30.0/spl.
One can use the Anchor RequestBuilder
to pass in the created Instruction
objects, and Anchor may help in sending multiple instructions within one Transaction.
The program.request()
call generates the builder, and instruction(ix)
is used to put any Instruction
into the builder.
You can use the program abstraction to deserialize the account data.
# Cargo.toml
[dependencies]
anchor-client = "0.29.0"
anchor-spl = "0.29.0"
# main.rs
let spl_program = anchor_client.program(anchor_spl::token::spl_token::id())?;
let token_info: anchor_spl::token::TokenAccount = spl_program.account(random_token_pubkey)?;
I did a small test on this at: https://github.com/ochaloup/marinade-anchor-client/blob/main/src/main.rs#L42
-
1This part was just what I was looking for
let _ = request_builder.instruction(init_mint);
, didn't know you could just append instructions to the request builder like that. Thanks!– McBainCommented May 31 at 19:25