
Solana Dev 101 - Cách đúc NFT trên Solana
Xin chào! Trong bài viết này, chúng ta sẽ khám phá thế giới token không thể thay thế (NFT) trên Solana.
Sau khi đọc xong bài viết này, bạn sẽ hiểu rõ quy trình và có thể tự tạo NFT trên Solana bằng JavaScript.
Nếu có bất kỳ câu hỏi nào, hãy tham gia Discord của Helius hoặc gắn thẻ Helius trên Twitter để được hỗ trợ.
Cài đặt các thành phần tiên quyết:
Trước khi bắt đầu, hãy đảm bảo bạn đã cài đặt Node.js và npm trên máy. Bạn có thể tải xuống tại đây.
Bước 1: Cài đặt các phần phụ thuộc
Trước tiên, chúng ta cần cài đặt các phần phụ thuộc cần thiết.
Chạy các lệnh sau trong terminal để cài đặt API JavaScript của Solana và thư viện JavaScript Metaplex:
npm install @solana/web3.js @metaplex-foundation/jsBước 2: Nhập các phần phụ thuộc
Tiếp theo, chúng ta có thể tạo một tệp mới có tên mintNFTs.js và bắt đầu bằng cách nhập các phần phụ thuộc cần thiết:
const { Keypair, Connection } = require('@solana/web3.js');
const { Metaplex,keypairIdentity, bundlrStorage,toMetaplexFile } = require('@metaplex-foundation/js');
const {fs} = require('fs');Bước 3: Tạo ví, khởi tạo kết nối và tạo một đối tượng Metaplex
Chúng ta cần tạo một ví Solana để đúc và lưu giữ NFT. Để thực hiện việc này, chúng ta sẽ sử dụng các công cụ Solana CLI. Bạn có thể chạy lệnh sau trong terminal để tạo ví mới. Ví này sẽ được lưu dưới dạng tệp JSON chứa cụm từ khôi phục.
solana-keygen newBạn có thể nhập ví này vào tiện ích mở rộng ví trên trình duyệt như Phantom hoặc Backpack.
Đừng chia sẻ khóa riêng tư của bạn với bất kỳ ai.
Bây giờ, chúng ta sẽ khởi tạo kết nối đến cụm Solana. Chúng ta sẽ sử dụng Helius để kết nối với một cụm mainnet vì dịch vụ này nhanh hơn RPC công khai, vốn bị giới hạn tốc độ nghiêm ngặt và không có khả năng lưu trữ dữ liệu lịch sử. ( https://api.mainnet-beta.solana.com ). Nếu muốn sử dụng dịch vụ RPC nhanh hơn và cao cấp hơn thay cho RPC tiêu chuẩn, bạn có thể tạo tài khoản Helius miễn phí tại đây.
Sau đó, chúng ta sẽ tạo một cặp khóa ví từ cụm từ khôi phục của ví vừa tạo.
async function createMetadata(imageName) {
// Create an image buffer
const metadataURI = await metaplex.nfts().uploadMetadata({
name: "Helius NFT",
description: "Helius NFT created in the SolanaDev 101 course",
// Image: await uploadIMG(imageName),
image: await toMetaplexFile(fs.readFileSync(imageName), "heliusLogo"),
attributes: [
{ trait_type: "Test", value: "Yes" },
{ trait_type: "Logo", value: "Helius" },
],
});
return metadataURI;
}Trong đoạn mã trên, chúng ta tạo một đối tượng của Metaplex SDK, bộ công cụ dùng để tương tác với giao thức Metaplex. Sau đó, chúng ta cấu hình đối tượng này với kết nối đến một cụm Solana, ví của người dùng và một nhà cung cấp lưu trữ. .use(bundlrStorage()) cấu hình đối tượng để sử dụng Bundlr làm nhà cung cấp lưu trữ, nơi lưu trữ metadata và tài sản của các NFT.
Bước 4: Tạo và tải metadata của NFT lên
Trong bước này, chúng ta sẽ tìm hiểu cách tạo và tải metadata cùng hình ảnh của NFT lên thông qua hàm createMetadata().
Một trong những thành phần cốt lõi của NFT là hình ảnh. Trong ví dụ này, chúng ta sẽ sử dụng hình ảnh logo Helius! Hãy nhớ thêm hình ảnh bạn muốn sử dụng vào thư mục đã tạo tệp mintNFT.js.
Hàm này bắt đầu bằng cách đọc tệp hình ảnh được chỉ định bởi imageName bằng fs, sau đó chuyển đổi tệp sang định dạng phù hợp với Metaplex bằng toMetaplexFile(). Sau đó, chúng ta tải metadata lên bằng hàm metaplex.nfts().uploadMetadata().
Metadata chứa các thông tin quan trọng về NFT, bao gồm tên, phần mô tả, hình ảnh đã chuẩn bị và một tập hợp thuộc tính cung cấp thêm thông tin chi tiết về NFT. Bạn có thể đưa thêm nhiều dữ liệu khác vào NFT. Hãy đọc thêm về tiêu chuẩn NFT của Metaplex tại đây.
Sau khi metadata được tải lên thành công, hàm sẽ trả về URI của metadata, trỏ đến vị trí trực tuyến của dữ liệu.
async function createMetadata(imageName) {
// Create an image buffer
const metadataURI = await metaplex.nfts().uploadMetadata({
name: "Helius NFT",
description: "Helius NFT created in the SolanaDev 101 course",
// Image: await uploadIMG(imageName),
image: await toMetaplexFile(fs.readFileSync(imageName), "heliusLogo"),
attributes: [
{ trait_type: "Test", value: "Yes" },
{ trait_type: "Logo", value: "Helius" },
],
});
return metadataURI;
}Bước 5: Đúc NFT
Bây giờ, chúng ta sẽ đúc NFT bằng cách tạo một hàm có tên createNFT(). Đầu tiên, chúng ta gọi hàm createMetadata() với đối số "./heliusLogo.png" (đường dẫn đến tệp hình ảnh).
Tiếp theo, chúng ta đúc NFT bằng cách gọi metaplex.nfts().create(). Hàm này nhận một đối tượng có nhiều thuộc tính, chẳng hạn như URI của metadata, tên NFT, phí người bán (được đặt là 5% trong ví dụ này) và một mảng các nhà sáng tạo. Mỗi đối tượng nhà sáng tạo bao gồm địa chỉ và tỷ lệ phần trăm tiền bản quyền mà ví đó sẽ nhận được.
Sau khi tạo NFT thành công, hàm sẽ ghi địa chỉ mint của NFT vào nhật ký. Địa chỉ mint này là mã định danh duy nhất của NFT trên blockchain. Bạn có thể sao chép địa chỉ này và tra cứu NFT trên một trình khám phá khối như Orb.
async function createNFT() {
// Create and upload the metadata
const metadata = await createMetadata("./heliusLogo.png");
// Create the NFT
const nft = await metaplex.nfts().create({
uri: metadata.uri,
name: "Helius NFT",
seller_fee_basis_points: 500, // 5%
creators: [{ address: wallet.publicKey, verified: true, share: 100 }],
});
// Log the NFT mint address
console.log("NFT:", nft.mintAddress.toBase58());
}
createNFT();Chạy đoạn mã này bằng node mintNFT.js đã tạo ra NFT mà bạn có thể xem tại đây.
Kết luận
Chúc mừng! Bạn vừa tạo thành công một NFT. Hy vọng hướng dẫn này đã giúp bạn bắt đầu làm quen với NFT trên Solana. NFT là một phần nền tảng của hệ sinh thái Solana, vì vậy hiểu được cấu trúc và cách tạo NFT là một kỹ năng rất hữu ích.
Bạn có thể xem mã hoàn chỉnh tại đây. Chúc bạn lập trình vui vẻ!
Tài liệu tham khảo:
Bài viết liên quan
Đăng ký nhận tin từ Helius
Luôn cập nhật những thông tin mới nhất về phát triển Solana và nhận thông báo khi chúng tôi đăng bài


