Bài viết này cung cấp hướng dẫn toàn diện về cách tạo SPL (Solana Program Library) token với metadata trên blockchain Solana bằng cách sử dụng Web3.js 2.0. Chúng ta sẽ khám phá các công cụ, quy trình và các cân nhắc quan trọng để giúp bạn xây dựng các ứng dụng blockchain hiệu quả và thân thiện với người dùng. Việc thêm metadata vào token là rất quan trọng để hiển thị thông tin như tên, biểu tượng và mô tả trong ví và các ứng dụng khác.
SPL token là các token tuân theo tiêu chuẩn được xác định bởi Solana Program Library. Chúng tương tự như ERC-20 token trên Ethereum. Metadata, mặt khác, là dữ liệu bổ sung mô tả token, bao gồm tên, biểu tượng, URI (Uniform Resource Identifier) trỏ đến một tệp JSON chứa thông tin chi tiết hơn (ví dụ: hình ảnh, mô tả). Việc thêm metadata giúp người dùng dễ dàng nhận diện và tương tác với token của bạn.
Để bắt đầu, bạn sẽ cần:
Đảm bảo bạn đã cài đặt Node.js và npm (hoặc Yarn). Tạo một thư mục dự án mới và khởi tạo npm:
mkdir my-spl-token
cd my-spl-token
npm init -y
Cài đặt các thư viện cần thiết bằng npm:
npm install @solana/web3.js @solana/spl-token @metaplex-foundation/mpl-token-metadata
Tạo một kết nối đến mạng Solana (devnet, testnet hoặc mainnet-beta). Sử dụng Connection
từ @solana/web3.js
.
const { Connection, clusterApiUrl } = require('@solana/web3.js');
const connection = new Connection(clusterApiUrl('devnet'), 'confirmed');
Tạo một keypair mới sẽ được sử dụng làm mint authority cho token. Bạn có thể sử dụng Keypair.generate()
để tạo một keypair mới.
const { Keypair } = require('@solana/web3.js');
const mintAuthority = Keypair.generate();
**Lưu ý quan trọng:** Bảo mật keypair của bạn. Đừng commit nó vào repository công khai.
Sử dụng createMint
từ @solana/spl-token
để tạo token mint.
const { createMint, TOKEN_PROGRAM_ID } = require('@solana/spl-token');
const decimals = 9; // Ví dụ, 9 chữ số thập phân
const mint = await createMint(
connection,
payer, // Tài khoản trả phí giao dịch
mintAuthority.publicKey, // Mint authority
null, // Freeze authority (có thể là null)
decimals, // Số lượng chữ số thập phân
TOKEN_PROGRAM_ID
);
Sử dụng createCreateMetadataAccountV3Instruction
từ @metaplex-foundation/mpl-token-metadata
để tạo metadata account.
const { createCreateMetadataAccountV3Instruction } = require('@metaplex-foundation/mpl-token-metadata');
const { PublicKey } = require('@solana/web3.js');
const TOKEN_METADATA_PROGRAM_ID = new PublicKey('metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s');
const metadataPDA = PublicKey.findProgramAddressSync(
[
Buffer.from('metadata'),
TOKEN_METADATA_PROGRAM_ID.toBuffer(),
mint.toBuffer(),
],
TOKEN_METADATA_PROGRAM_ID
)[0];
const metadata = {
name: "My Awesome Token",
symbol: "MAT",
uri: "https://example.com/metadata.json", // Link đến file JSON chứa thông tin chi tiết
sellerFeeBasisPoints: 0,
creators: null,
collection: null,
uses: null
};
const createMetadataInstruction = createCreateMetadataAccountV3Instruction({
metadata: metadataPDA,
mint: mint,
mintAuthority: mintAuthority.publicKey,
payer: payer.publicKey,
updateAuthority: mintAuthority.publicKey
}, {
createMetadataAccountArgsV3: {
collectionDetails: null,
data: metadata,
isMutable: true
}
});
Xây dựng một giao dịch bao gồm các lệnh tạo token mint và tạo metadata account. Ký và gửi giao dịch đến blockchain Solana.
const { Transaction, sendAndConfirmTransaction } = require('@solana/web3.js');
const transaction = new Transaction().add(createMetadataInstruction);
const signature = await sendAndConfirmTransaction(
connection,
transaction,
[payer, mintAuthority]
);
console.log('Giao dịch thành công:', signature);
Việc tạo SPL token với metadata trên Solana bằng Web3.js 2.0 là một quá trình tương đối đơn giản nếu bạn tuân theo các bước được nêu trong hướng dẫn này. Bằng cách thêm metadata, bạn có thể làm cho token của mình dễ nhận biết và tương tác hơn, mang lại trải nghiệm tốt hơn cho người dùng. Hãy nhớ luôn bảo mật keypair của bạn và xử lý các lỗi tiềm ẩn một cách thích hợp. Chúc bạn thành công!
Bài viết liên quan