Cara Melakukan Mint NFT (Bagian 2/3 dari Seri Tutorial NFT)
Beeple (opens in a new tab): $69 Juta 3LAU (opens in a new tab): $11 Juta Grimes (opens in a new tab): $6 Juta
Semuanya melakukan mint NFT mereka menggunakan API Alchemy yang canggih. Dalam tutorial ini, kami akan mengajarkan Anda cara melakukan hal yang sama dalam waktu <10 menit.
"Melakukan mint NFT" adalah tindakan menerbitkan instans unik dari token ERC-721 Anda di blockchain. Menggunakan kontrak pintar kami dari Bagian 1 seri tutorial NFT ini, mari kita asah keterampilan Web3 kita dan melakukan mint NFT. Di akhir tutorial ini, Anda akan dapat melakukan mint NFT sebanyak yang Anda (dan dompet Anda) inginkan!
Mari kita mulai!
Langkah 1: Instal Web3
Jika Anda mengikuti tutorial pertama tentang pembuatan kontrak pintar NFT Anda, Anda sudah memiliki pengalaman menggunakan Ethers.js. Web3 mirip dengan Ethers, karena ini adalah pustaka yang digunakan untuk mempermudah pembuatan permintaan ke blockchain Ethereum. Dalam tutorial ini kita akan menggunakan Alchemy Web3 (opens in a new tab), yang merupakan pustaka Web3 yang ditingkatkan yang menawarkan percobaan ulang otomatis dan dukungan WebSocket yang kuat.
Di direktori beranda proyek Anda, jalankan:
1npm install @alch/alchemy-web3Langkah 2: Buat file mint-nft.js
Di dalam direktori skrip Anda, buat file mint-nft.js dan tambahkan baris kode berikut:
1require("dotenv").config()2const API_URL = process.env.API_URL3const { createAlchemyWeb3 } = require("@alch/alchemy-web3")4const web3 = createAlchemyWeb3(API_URL)Langkah 3: Ambil ABI kontrak Anda
ABI (Application Binary Interface) kontrak kita adalah antarmuka untuk berinteraksi dengan kontrak pintar kita. Anda dapat mempelajari lebih lanjut tentang ABI Kontrak di sini (opens in a new tab). Hardhat secara otomatis menghasilkan ABI untuk kita dan menyimpannya di file MyNFT.json. Untuk menggunakan ini, kita perlu mengurai kontennya dengan menambahkan baris kode berikut ke file mint-nft.js kita:
1const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")Jika Anda ingin melihat ABI, Anda dapat mencetaknya ke konsol Anda:
1console.log(JSON.stringify(contract.abi))Untuk menjalankan mint-nft.js dan melihat ABI Anda dicetak ke konsol, navigasikan ke terminal Anda dan jalankan:
1node scripts/mint-nft.jsLangkah 4: Konfigurasikan metadata untuk NFT Anda menggunakan IPFS
Jika Anda ingat dari tutorial kita di Bagian 1, fungsi kontrak pintar mintNFT kita mengambil parameter tokenURI yang harus diselesaikan ke dokumen JSON yang mendeskripsikan metadata NFT— yang benar-benar menghidupkan NFT, memungkinkannya memiliki properti yang dapat dikonfigurasi, seperti nama, deskripsi, gambar, dan atribut lainnya.
Interplanetary File System (IPFS) adalah protokol desentralisasi dan jaringan peer-to-peer untuk menyimpan dan berbagi data dalam sistem file terdistribusi.
Kita akan menggunakan Pinata, API dan toolkit IPFS yang praktis, untuk menyimpan aset dan metadata NFT kita guna memastikan NFT kita benar-benar terdesentralisasi. Jika Anda belum memiliki akun Pinata, daftar untuk mendapatkan akun gratis di sini (opens in a new tab) dan selesaikan langkah-langkah untuk memverifikasi email Anda.
Setelah Anda membuat akun:
-
Navigasikan ke halaman "Files" dan klik tombol "Upload" berwarna biru di kiri atas halaman.
-
Unggah gambar ke Pinata — ini akan menjadi aset gambar untuk NFT Anda. Jangan ragu untuk menamai aset tersebut sesuka Anda
-
Setelah Anda mengunggah, Anda akan melihat info file di tabel pada halaman "Files". Anda juga akan melihat kolom CID. Anda dapat menyalin CID dengan mengeklik tombol salin di sebelahnya. Anda dapat melihat unggahan Anda di:
https://gateway.pinata.cloud/ipfs/<CID>. Anda dapat menemukan gambar yang kami gunakan di IPFS di sini (opens in a new tab), sebagai contoh.
Bagi pembelajar yang lebih visual, langkah-langkah di atas dirangkum di sini:
Sekarang, kita akan mengunggah satu dokumen lagi ke Pinata. Namun sebelum kita melakukannya, kita perlu membuatnya!
Di direktori root Anda, buat file baru bernama nft-metadata.json dan tambahkan kode json berikut:
1{2 "attributes": [3 {4 "trait_type": "Breed",5 "value": "Maltipoo"6 },7 {8 "trait_type": "Eye color",9 "value": "Mocha"10 }11 ],12 "description": "The world's most adorable and sensitive pup.",13 "image": "ipfs://QmWmvTJmJU3pozR9ZHFmQC2DNDwi2XJtf3QGyYiiagFSWb",14 "name": "Ramses"15}Tampilkan semuaJangan ragu untuk mengubah data di json. Anda dapat menghapus atau menambahkan ke bagian atribut. Yang terpenting, pastikan bidang gambar menunjuk ke lokasi gambar IPFS Anda — jika tidak, NFT Anda akan menyertakan foto anjing (yang sangat lucu!).
Setelah Anda selesai mengedit file JSON, simpan dan unggah ke Pinata, ikuti langkah yang sama seperti yang kita lakukan untuk mengunggah gambar.
Langkah 5: Buat instans kontrak Anda
Sekarang, untuk berinteraksi dengan kontrak kita, kita perlu membuat instansnya di kode kita. Untuk melakukannya, kita memerlukan alamat kontrak kita yang bisa kita dapatkan dari penerapan atau Blockscout (opens in a new tab) dengan mencari alamat yang Anda gunakan untuk menerapkan kontrak.
Dalam contoh di atas, alamat kontrak kita adalah 0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778.
Selanjutnya kita akan menggunakan metode kontrak (opens in a new tab) Web3 untuk membuat kontrak kita menggunakan ABI dan alamat. Di file mint-nft.js Anda, tambahkan yang berikut ini:
1const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"23const nftContract = new web3.eth.Contract(contract.abi, contractAddress)Langkah 6: Perbarui file .env
Sekarang, untuk membuat dan mengirim transaksi ke rantai Ethereum, kita akan menggunakan alamat akun Ethereum publik Anda untuk mendapatkan nonce akun (akan dijelaskan di bawah).
Tambahkan kunci publik Anda ke file .env Anda — jika Anda menyelesaikan bagian 1 dari tutorial, file .env kita sekarang akan terlihat seperti ini:
1API_URL = "https://eth-sepolia.g.alchemy.com/v2/your-api-key"2PRIVATE_KEY = "your-private-account-address"3PUBLIC_KEY = "your-public-account-address"Langkah 7: Buat transaksi Anda
Pertama, mari kita tentukan fungsi bernama mintNFT(tokenData) dan buat transaksi kita dengan melakukan hal berikut:
-
Ambil PRIVATE_KEY dan PUBLIC_KEY Anda dari file
.env. -
Selanjutnya, kita perlu mengetahui nonce akun. Spesifikasi nonce digunakan untuk melacak jumlah transaksi yang dikirim dari alamat Anda — yang kita perlukan untuk tujuan keamanan dan untuk mencegah serangan replay (opens in a new tab). Untuk mendapatkan jumlah transaksi yang dikirim dari alamat Anda, kita menggunakan getTransactionCount (opens in a new tab).
-
Terakhir kita akan mengatur transaksi kita dengan info berikut:
-
'from': PUBLIC_KEY— Asal transaksi kita adalah alamat publik kita -
'to': contractAddress— Kontrak yang ingin kita ajak berinteraksi dan kirimi transaksi -
'nonce': nonce— Nonce akun dengan jumlah transaksi yang dikirim dari alamat kita -
'gas': estimatedGas— Perkiraan gas yang dibutuhkan untuk menyelesaikan transaksi -
'data': nftContract.methods.mintNFT(PUBLIC_KEY, md).encodeABI()— Komputasi yang ingin kita lakukan dalam transaksi ini — yang dalam hal ini adalah melakukan mint NFT
File mint-nft.js Anda seharusnya terlihat seperti ini sekarang:
1 require('dotenv').config();2 const API_URL = process.env.API_URL;3 const PUBLIC_KEY = process.env.PUBLIC_KEY;4 const PRIVATE_KEY = process.env.PRIVATE_KEY;56 const { createAlchemyWeb3 } = require("@alch/alchemy-web3");7 const web3 = createAlchemyWeb3(API_URL);89 const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json");10 const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778";11 const nftContract = new web3.eth.Contract(contract.abi, contractAddress);1213 async function mintNFT(tokenURI) {14 const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, 'latest'); //get latest nonce // dapatkan nonce terbaru1516 //the transaction // transaksi tersebut17 const tx = {18 'from': PUBLIC_KEY,19 'to': contractAddress,20 'nonce': nonce,21 'gas': 500000,22 'data': nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI()23 };24 }Tampilkan semuaLangkah 8: Tanda tangani transaksi
Sekarang setelah kita membuat transaksi kita, kita perlu menandatanganinya untuk mengirimkannya. Di sinilah kita akan menggunakan kunci pribadi kita.
web3.eth.sendSignedTransaction akan memberi kita hash transaksi, yang dapat kita gunakan untuk memastikan transaksi kita ditambang dan tidak dibatalkan oleh jaringan. Anda akan melihat di bagian penandatanganan transaksi, kami telah menambahkan beberapa pemeriksaan kesalahan sehingga kami tahu apakah transaksi kami berhasil dilalui.
1require("dotenv").config()2const API_URL = process.env.API_URL3const PUBLIC_KEY = process.env.PUBLIC_KEY4const PRIVATE_KEY = process.env.PRIVATE_KEY56const { createAlchemyWeb3 } = require("@alch/alchemy-web3")7const web3 = createAlchemyWeb3(API_URL)89const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")10const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"11const nftContract = new web3.eth.Contract(contract.abi, contractAddress)1213async function mintNFT(tokenURI) {14 const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") //get latest nonce // dapatkan nonce terbaru1516 //the transaction // transaksi tersebut17 const tx = {18 from: PUBLIC_KEY,19 to: contractAddress,20 nonce: nonce,21 gas: 500000,22 data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(),23 }2425 const signPromise = web3.eth.accounts.signTransaction(tx, PRIVATE_KEY)26 signPromise27 .then((signedTx) => {28 web3.eth.sendSignedTransaction(29 signedTx.rawTransaction,30 function (err, hash) {31 if (!err) {32 console.log(33 "The hash of your transaction is: ",34 hash,35 "\nCheck Alchemy's Mempool to view the status of your transaction!"36 )37 } else {38 console.log(39 "Something went wrong when submitting your transaction:",40 err41 )42 }43 }44 )45 })46 .catch((err) => {47 console.log(" Promise failed:", err)48 })49}Tampilkan semuaLangkah 9: Panggil mintNFT dan jalankan node mint-nft.js
Ingat metadata.json yang Anda unggah ke Pinata? Dapatkan kode hash-nya dari Pinata dan teruskan yang berikut ini sebagai parameter ke fungsi mintNFT https://gateway.pinata.cloud/ipfs/<metadata-hash-code>
Berikut cara mendapatkan kode hash:
Cara mendapatkan kode hash metadata nft Anda di Pinata
Periksa kembali apakah kode hash yang Anda salin tertaut ke metadata.json Anda dengan memuat
https://gateway.pinata.cloud/ipfs/<metadata-hash-code>ke jendela terpisah. Halaman tersebut akan terlihat mirip dengan tangkapan layar di bawah ini:
Halaman Anda harus menampilkan metadata json
Secara keseluruhan, kode Anda akan terlihat seperti ini:
1require("dotenv").config()2const API_URL = process.env.API_URL3const PUBLIC_KEY = process.env.PUBLIC_KEY4const PRIVATE_KEY = process.env.PRIVATE_KEY56const { createAlchemyWeb3 } = require("@alch/alchemy-web3")7const web3 = createAlchemyWeb3(API_URL)89const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")10const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"11const nftContract = new web3.eth.Contract(contract.abi, contractAddress)1213async function mintNFT(tokenURI) {14 const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") //get latest nonce // dapatkan nonce terbaru1516 //the transaction // transaksi tersebut17 const tx = {18 from: PUBLIC_KEY,19 to: contractAddress,20 nonce: nonce,21 gas: 500000,22 data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(),23 }2425 const signPromise = web3.eth.accounts.signTransaction(tx, PRIVATE_KEY)26 signPromise27 .then((signedTx) => {28 web3.eth.sendSignedTransaction(29 signedTx.rawTransaction,30 function (err, hash) {31 if (!err) {32 console.log(33 "The hash of your transaction is: ",34 hash,35 "\nCheck Alchemy's Mempool to view the status of your transaction!"36 )37 } else {38 console.log(39 "Something went wrong when submitting your transaction:",40 err41 )42 }43 }44 )45 })46 .catch((err) => {47 console.log("Promise failed:", err)48 })49}5051mintNFT("ipfs://QmYueiuRNmL4MiA2GwtVMm6ZagknXnSpQnB3z2gWbz36hP")Tampilkan semuaSekarang, jalankan node scripts/mint-nft.js untuk menerapkan NFT Anda. Setelah beberapa detik, Anda akan melihat respons seperti ini di terminal Anda:
The hash of your transaction is: 0x301791fdf492001fcd9d5e5b12f3aa1bbbea9a88ed24993a8ab2cdae2d06e1e8
Check Alchemy's Mempool to view the status of your transaction!
Selanjutnya, kunjungi mempool Alchemy (opens in a new tab) Anda untuk melihat status transaksi Anda (apakah tertunda, ditambang, atau dibatalkan oleh jaringan). Jika transaksi Anda dibatalkan, ada baiknya juga untuk memeriksa Blockscout (opens in a new tab) dan mencari hash transaksi Anda.
Lihat hash transaksi NFT Anda di Etherscan
Dan itu saja! Anda sekarang telah menerapkan DAN melakukan mint dengan NFT di blockchain Ethereum
Menggunakan mint-nft.js Anda dapat melakukan mint NFT sebanyak yang Anda (dan dompet Anda) inginkan! Pastikan saja untuk meneruskan tokenURI baru yang mendeskripsikan metadata NFT (jika tidak, Anda hanya akan membuat banyak NFT identik dengan ID yang berbeda).
Mungkin, Anda ingin dapat memamerkan NFT Anda di dompet Anda — jadi pastikan untuk memeriksa Bagian 3: Cara Melihat NFT Anda di Dompet Anda!
Pembaruan terakhir halaman: 23 Februari 2026


