Přejít na hlavní obsah

Jak vyrazit NFT (část 2/3 série tutoriálů o NFT)

ERC-721
alchemy
solidity
smart kontrakt účty
Začátečník
Sumi Mudgil
22. dubna 2021
8 minuta čtení

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:

npm install @alch/alchemy-web3

Krok 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:

require("dotenv").config()
const API_URL = process.env.API_URL
const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
const 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:

const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")

Pokud chcete vidět ABI, můžete si ho vytisknout do konzole:

console.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:

node scripts/mint-nft.js

Krok 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:

Jak nahrát obrázek do Pinaty

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:

Data 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.

Jak nahrát soubor nft-metadata.json do Pinaty

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.

Zobrazení účtu vašeho kontraktu na Etherscanu

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í:

const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"

const 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:

API_URL = "https://eth-sepolia.g.alchemy.com/v2/váš-api-klíč"
PRIVATE_KEY = "adresa-vašeho-privátního-účtu"
PUBLIC_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:

  1. Získejte svůj PRIVATE_KEY a PUBLIC_KEY ze souboru .env.

  2. 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).

  3. 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:

Krok 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ě.

Krok 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ě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 jsonVaše stránka by měla zobrazovat metadata json

Celkově by váš kód měl vypadat nějak takto:

Nyní 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:

Haš vaší transakce je: 0x301791fdf492001fcd9d5e5b12f3aa1bbbea9a88ed24993a8ab2cdae2d06e1e8

Zkontrolujte 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 EtherscanuZobrazení 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!

Poslední aktualizace stránky: 3. března 2026

Byl tento návod užitečný?