Jak vyrazit NFT (část 2/3 série tutoriálů o NFT)
Beeple (opens in a new tab): 69 milionů 3LAU (opens in a new tab): 11 milionů Grimes (opens in a new tab): 6 milionů
Všichni z nich vyrazili svá NFT pomocí výkonného API od Alchemy. V tomto tutoriálu vás naučíme, jak udělat to samé za <10 minut.
„Ražba NFT“ je akt publikování jedinečné instance vašeho tokenu ERC-721 na blockchainu. Pomocí našeho chytrého kontraktu z 1. části této série tutoriálů o NFT si procvičíme naše dovednosti s Web3 a vyrazíme si NFT. Na konci tohoto tutoriálu si budete moci vyrazit tolik NFT, kolik jen vaše srdce (a peněženka) bude chtít!
Pojďme na to!
Krok 1: Nainstalujte si Web3
Pokud jste postupovali podle prvního tutoriálu o vytváření vašeho chytrého kontraktu pro NFT, máte již zkušenosti s používáním Ethers.js. Web3 je podobné Ethers, protože se jedná o knihovnu, která usnadňuje vytváření požadavků na blockchain Etherea. V tomto tutoriálu budeme používat Alchemy Web3 (opens in a new tab), což je vylepšená knihovna Web3, která nabízí automatické opakování pokusů a robustní podporu WebSocket.
V domovském adresáři vašeho projektu spusťte:
1npm install @alch/alchemy-web3Krok 2: Vytvořte soubor mint-nft.js
V adresáři scripts vytvořte soubor mint-nft.js a přidejte následující řádky kódu:
1require("dotenv").config()2const API_URL = process.env.API_URL3const { createAlchemyWeb3 } = require("@alch/alchemy-web3")4const web3 = createAlchemyWeb3(API_URL)Krok 3: Získejte ABI svého kontraktu
Naše ABI kontraktu (Application Binary Interface) je rozhraní pro interakci s naším chytrým kontraktem. Více informací o ABI kontraktů se můžete dozvědět zde (opens in a new tab). Hardhat pro nás automaticky generuje ABI a ukládá ho do souboru MyNFT.json. Abychom to mohli použít, budeme muset analyzovat obsah přidáním následujících řádků kódu do našeho souboru mint-nft.js:
1const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")Pokud chcete vidět ABI, můžete si ho vytisknout do konzole:
1console.log(JSON.stringify(contract.abi))Chcete-li spustit mint-nft.js a vidět své ABI vytištěné v konzoli, přejděte do terminálu a spusťte:
1node scripts/mint-nft.jsKrok 4: Nakonfigurujte metadata pro své NFT pomocí IPFS
Pokud si pamatujete z našeho tutoriálu v části 1, naše funkce chytrého kontraktu mintNFT přijímá parametr tokenURI, který by se měl přeložit na dokument JSON popisující metadata NFT – což je to, co NFT skutečně oživuje a umožňuje mu mít konfigurovatelné vlastnosti, jako je název, popis, obrázek a další atributy.
Interplanetary File System (IPFS) je decentralizovaný protokol a peer-to-peer síť pro ukládání a sdílení dat v distribuovaném souborovém systému.
Použijeme Pinata, pohodlné IPFS API a sadu nástrojů, k uložení našeho NFT aktiva a metadat, abychom zajistili, že naše NFT je skutečně decentralizované. Pokud nemáte účet Pinata, zaregistrujte si bezplatný účet zde (opens in a new tab) a dokončete kroky pro ověření e-mailu.
Jakmile si vytvoříte účet:
-
Přejděte na stránku „Soubory“ a klikněte na modré tlačítko „Nahrát“ v levém horním rohu stránky.
-
Nahrajte obrázek do Pinaty – to bude obrazové aktivum pro vaše NFT. Aktivum si můžete pojmenovat, jak chcete
-
Po nahrání uvidíte informace o souboru v tabulce na stránce „Soubory“. Uvidíte také sloupec CID. CID můžete zkopírovat kliknutím na tlačítko kopírovat vedle něj. Váš nahraný soubor si můžete prohlédnout na:
https://gateway.pinata.cloud/ipfs/<CID>. Obrázek, který jsme použili, najdete na IPFS například zde (opens in a new tab).
Pro vizuálněji založené studenty jsou výše uvedené kroky shrnuty zde:
Nyní budeme chtít nahrát do Pinaty ještě jeden dokument. Ale než to uděláme, musíme ho vytvořit!
Ve svém kořenovém adresáři vytvořte nový soubor s názvem nft-metadata.json a přidejte následující kód json:
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}Zobrazit všeData v jsonu si můžete libovolně měnit. Do sekce atributů můžete přidávat nebo z ní odebírat. Nejdůležitější je, abyste se ujistili, že pole s obrázkem ukazuje na umístění vašeho obrázku na IPFS – jinak bude vaše NFT obsahovat fotku (velmi roztomilého!) psa.
Jakmile dokončíte úpravu souboru JSON, uložte ho a nahrajte na Pinata podle stejných kroků, jaké jsme provedli při nahrávání obrázku.
Krok 5: Vytvořte instanci svého kontraktu
Nyní, abychom mohli s naším kontraktem interagovat, musíme v našem kódu vytvořit jeho instanci. K tomu budeme potřebovat účet našeho kontraktu, který můžeme získat z nasazení nebo na Blockscoutu (opens in a new tab) vyhledáním adresy, kterou jste použili k nasazení kontraktu.
Ve výše uvedeném příkladu je účet našeho kontraktu 0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778.
Dále použijeme metodu kontraktu (opens in a new tab) Web3 k vytvoření našeho kontraktu pomocí ABI a adresy. Do souboru mint-nft.js přidejte následující:
1const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"23const nftContract = new web3.eth.Contract(contract.abi, contractAddress)Krok 6: Aktualizujte soubor .env
Nyní, abychom mohli vytvářet a odesílat transakce do řetězce Etherea, použijeme adresu vašeho veřejného účtu Ethereum k získání nonce účtu (vysvětlíme níže).
Přidejte svůj veřejný klíč do souboru .env – pokud jste dokončili 1. část tutoriálu, náš soubor .env by nyní měl vypadat takto:
1API_URL = "https://eth-sepolia.g.alchemy.com/v2/váš-api-klíč"2PRIVATE_KEY = "adresa-vašeho-privátního-účtu"3PUBLIC_KEY = "adresa-vašeho-veřejného-účtu"Krok 7: Vytvořte transakci
Nejprve definujme funkci s názvem mintNFT(tokenData) a vytvořme naši transakci následujícím postupem:
-
Získejte svůj PRIVATE_KEY a PUBLIC_KEY ze souboru
.env. -
Dále budeme muset zjistit nonce účtu. Specifikace nonce se používá ke sledování počtu transakcí odeslaných z vaší adresy – což potřebujeme z bezpečnostních důvodů a k zabránění útokům opětovného přehrání (opens in a new tab). K získání počtu transakcí odeslaných z vaší adresy použijeme getTransactionCount (opens in a new tab).
-
Nakonec nastavíme naši transakci s následujícími informacemi:
-
'from': PUBLIC_KEY– Původ naší transakce je naše veřejná adresa -
'to': contractAddress– Kontrakt, se kterým chceme interagovat a odeslat transakci -
'nonce': nonce– Nonce účtu s počtem transakcí odeslaných z naší adresy -
'gas': estimatedGas– Odhadované palivo potřebné k dokončení transakce -
'data': nftContract.methods.mintNFT(PUBLIC_KEY, md).encodeABI()– Výpočet, který chceme v této transakci provést – což je v tomto případě ražba NFT
Váš soubor mint-nft.js by nyní měl vypadat takto:
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'); //získat nejnovější nonce1516 //transakce17 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 }Zobrazit všeKrok 8: Podepište transakci
Nyní, když jsme vytvořili naši transakci, musíme ji podepsat, abychom ji mohli odeslat. Zde použijeme náš privátní klíč.
web3.eth.sendSignedTransaction nám poskytne haš transakce, který můžeme použít k ujištění, že naše transakce byla vytěžena a nebyla sítí zahozená. Všimnete si, že v sekci podepisování transakcí jsme přidali kontrolu chyb, abychom věděli, zda naše transakce proběhla úspěšně.
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") //získat nejnovější nonce1516 //transakce17 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 "Haš vaší transakce je: ",34 hash,35 "\nZkontrolujte Mempool Alchemy a zobrazte stav vaší transakce!"36 )37 } else {38 console.log(39 "Při odesílání transakce se něco pokazilo:",40 err41 )42 }43 }44 )45 })46 .catch((err) => {47 console.log(" Promise selhal:", err)48 })49}Zobrazit všeKrok 9: Zavolejte mintNFT a spusťte node mint-nft.js
Pamatujete si na metadata.json, který jste nahráli do Pinaty? Získejte jeho hašovací kód z Pinaty a předejte následující jako parametr funkci mintNFT https://gateway.pinata.cloud/ipfs/<metadata-hash-code>
Zde je návod, jak získat hašovací kód:
Jak získat hašovací kód metadat vašeho NFT na Pinatě
Dvakrát zkontrolujte, že hašovací kód, který jste zkopírovali, odkazuje na váš metadata.json načtením
https://gateway.pinata.cloud/ipfs/<metadata-hash-code>do samostatného okna. Stránka by měla vypadat podobně jako na snímku obrazovky níže:
Vaše stránka by měla zobrazovat metadata json
Celkově by váš kód měl vypadat nějak takto:
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") //získat nejnovější nonce1516 //transakce17 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 "Haš vaší transakce je: ",34 hash,35 "\nZkontrolujte Mempool Alchemy a zobrazte stav vaší transakce!"36 )37 } else {38 console.log(39 "Při odesílání transakce se něco pokazilo:",40 err41 )42 }43 }44 )45 })46 .catch((err) => {47 console.log("Promise selhal:", err)48 })49}5051mintNFT("ipfs://QmYueiuRNmL4MiA2GwtVMm6ZagknXnSpQnB3z2gWbz36hP")Zobrazit všeNyní spusťte node scripts/mint-nft.js pro nasazení vašeho NFT. Po několika sekundách byste měli v terminálu vidět odpověď podobnou této:
1Haš vaší transakce je: 0x301791fdf492001fcd9d5e5b12f3aa1bbbea9a88ed24993a8ab2cdae2d06e1e823Zkontrolujte Mempool Alchemy a zobrazte stav vaší transakce!Dále navštivte svůj mempool Alchemy (opens in a new tab) a podívejte se na stav vaší transakce (zda je čekající, vytěžená, nebo ji síť zahodila). Pokud byla vaše transakce zahozená, je také užitečné zkontrolovat Blockscout (opens in a new tab) a vyhledat haš vaší transakce.
Zobrazení haše vaší NFT transakce na Etherscanu
A to je vše! Nyní jste nasadili A vyrazili NFT na blockchainu Etherea
Pomocí mint-nft.js můžete vyrazit tolik NFT, kolik jen vaše srdce (a peněženka) bude chtít! Jen se ujistěte, že předáváte nový tokenURI popisující metadata NFT (jinak skončíte výrobou spousty identických s různými ID).
Pravděpodobně byste si chtěli své NFT vystavit ve své peněžence – takže se určitě podívejte na 3. část: Jak si zobrazit své NFT ve vaší peněžence!
Stránka naposledy aktualizována: 23. února 2026


