SDK
MPL-Core Rust SDK
Last updated January 31, 2026
Metaplex는 MPL-Core 프로그램과 상호 작용하는 데 사용할 수 있는 Rust 라이브러리를 제공합니다. Rust 라이브러리는 rust 스크립트/빌드뿐만 아니라 CPI 명령을 통한 온체인 프로그램에서도 사용할 수 있습니다.
설치
MPL-Core Rust SDK는 스크립트/데스크톱/모바일 애플리케이션과 Solana 온체인 프로그램 모두에서 사용할 수 있습니다.
cargo add mpl-core
로컬 스크립트
로컬 스크립트의 경우 나열된 모든 명령의 Builder 버전을 사용하는 것이 좋습니다. 이러한 빌더는 많은 작업을 추상화하고 트랜잭션에 추가할 수 있는 명령을 반환합니다. 모든 Core 명령 목록은 여기에서 찾을 수 있습니다: Metaplex Core - Rust Instructions Rust 사용에 대한 보다 포괄적인 가이드는 Metaplex Rust SDK 가이드 페이지를 확인하세요.
CreateV1Builder - 예제
use mpl_core::instructions::CreateV1Builder;
use solana_client::rpc_client;
use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction};
pub fn create_asset() {
let rpc_client = rpc_client::RpcClient::new("https://api.devnet.solana.com".to_string());
let keypair_path = ".../my-key.json"
let keypair = solana_sdk::signature::read_keypair_file(keypair_path).unwrap();
let asset = Keypair::new();
let create_asset_ix = CreateV1Builder::new()
.asset(asset.pubkey())
.payer(keypair.pubkey())
.name("My Asset".into())
.uri("https://example.com/my-asset.json".into())
.instruction();
let signers = vec![&asset, &keypair];
let last_blockhash = rpc_client.get_latest_blockhash().await.unwrap();
let create_asset_tx = Transaction::new_signed_with_payer(
&[create_asset_ix],
Some(&keypair.pubkey()),
&signers,
last_blockhash,
);
let res = rpc_client.send_and_confirm_transaction(&create_asset_tx).await.unwrap();
println!("Signature: {:?}", res)
}
CPI (Cross Program Invocation)
자신의 프로그램에서 CPI 명령을 수행하는 것은 mpl-core Rust crate의 모든 명령에서 찾을 수 있는 명령 함수의 CpiBuilder 버전을 사용하여 쉽게 달성할 수 있습니다. 모든 Core 명령 목록은 여기에서 찾을 수 있습니다: Metaplex Core - Rust Instructions Metaplex crate를 사용하여 CPI 명령을 생성하는 보다 포괄적인 가이드는 Metaplex 프로그램에 CPI하는 방법 가이드 페이지를 확인하세요.
CreateV1CpiBuilder - 예제
CreateV1CpiBuilder::new()
.asset(context.accounts.asset)
.collection(context.accounts.collection)
.authority(context.accounts.authority)
.payer(context.accounts.payer)
.owner(context.accounts.owner)
.update_authority(context.accounts.update_authority)
.system_program(context.acccounts.system_program)
.data_state(input.data_state.unwrap_or(DataState::AccountState))
.name(args.asset_name)
.uri(args.asset_uri)
.plugins(args.plugins)
.invoke()
