Dynamic Metadata NFTs 是區塊鏈技術中的一大創新,特別是在遊戲領域,能提供更大的靈活性和on-chain data manipulation。
Solana 區塊鏈的 Token Extensions program讓開發者能創建dynamic, customizable metadata且能在鏈上儲存的 NFT。
本文將引導你使用 Solana 的 Anchor 框架來建立這樣的 NFT。
傳統 NFT 的 Metadata通常儲存在鏈下,這限制了它們的靈活性。而Dynamic Metadata NFT 則允許即時更新和鏈上互動,特別適合用於遊戲中,因為這樣玩家的等級、資源等都能直接編寫進 NFT 中,提供更流暢的遊戲體驗。
要建立具有dynamic metadata的 NFT,首先需要使用 Solana 的 Anchor 框架來設定一個on-chain program。這個program會鑄造 NFT,並允許實時更新其metadata。
之後會使用官方提供的、專注於遊戲應用的範例,該範例中的 NFT 會追蹤玩家的等級和資源。
Rust 是on-chain operations的核心,主要包括計算account所需的空間、初始化account、並創建metadata fields。
初始化帶有metadata extensions功能的 mint account
let space = ExtensionType::try_calculate_account_len::<Mint>(
&[ExtensionType::MetadataPointer])
.unwrap();
let lamports_required = (Rent::get()?).minimum_balance(space + meta_data_space);
system_program::create_account(
CpiContext::new(
ctx.accounts.token_program.to_account_info(),
system_program::CreateAccount {
from: ctx.accounts.signer.to_account_info(),
to: ctx.accounts.mint.to_account_info(),
},
),
lamports_required,
space as u64,
&ctx.accounts.token_program.key(),
)?;
JavaScript 客戶端用來與on-chain program進行互動,從前端實現 NFT 的鑄造和更新。
以下代碼將展示如何設置客戶端、將其連接到on-chain program,以及鑄造 NFT並指定所需的帳戶和權限。
要在本地運行並部署程式,首先需要設置 Solana 的開發環境,然後build並部署 Anchor 程式。
可以使用 anchor build
和 anchor deploy
等命令來管理部署過程。
步驟:
通過利用 Solana 的 Token Extensions 和 Anchor 框架,開發者能夠創建靈活、互動性強的數字資產,進一步提升區塊鏈生態系統中的用戶體驗。
https://solana.com/developers/guides/token-extensions/dynamic-meta-data-nft