NFT jsou právě teď velké téma a jako vývojáře vás možná zajímá, jak si můžete vytvořit své vlastní NFT. Zde si můžete přečíst, jak to udělat nejjednodušším možným způsobem a za pár minut. Návod použije standardní smlouvy OpenZeppelin ERC721, které jsou zlatým standardem inteligentních smluv. Pro nasazování inteligentních smluv existují různé nástroje, ale nejrychlejší a nejjednodušší nástroj pro kompilaci a nasazení smluv je CL3 web3.
Příprava prostředí
Následující věci je třeba provést jednou, pak lze nasazovat a měnit, jak je libo.
Nainstalujte nástroj CLI
Tento řádek nainstaluje nástroj, lze jej tedy okamžitě používat. Pokud máte obavy, co dělá, můžete si přečíst kód install.sh.
curl -LSs https://raw.githubusercontent.com/gochain/web3/master/install.sh | sh
Nastavení sítě
Zde lze použít GoChain, takže není třeba platit 10 USD za nasazení smlouvy a pak 10 USD za každé vyražené NFT. S GoChain bude třeba zaplatit jen zlomek penny a je 100% kompatibilní s ETH. Níže uvedený řádek můžete samozřejmě změnit tak, aby ukazoval na Ethereum, a pokud chcete zaplatit další náklady.
export WEB3_NETWORK=gochain # for ethereum: # export WEB3_NETWORK=ethereum
Přidat a nastavit gas
Pro tyto transakce budete muset použít účet, který obsahuje trochu gas, nebo vytvořit nový a do něj gas odeslat. Bude to GO na GoChain nebo ETH pro Ethereum.
Pro nový účet, spusťte:
web3 account create
A dostanete:
Private key: 0xABC123 Public address: 0xXYZ456
Zašlete nějaký GO na „Public address“. Zkopírujte „Private key“ (nebo použijte stávající, který již máte, pokud chcete) a spusťte:
export WEB3_PRIVATE_KEY=0xABC123
Uchovávejte také kopii tohoto soukromého klíče někde v bezpečí, abyste jej mohli příště použít.
Nasazení NFT
Teď už je vše nastaveno a můžete se začít bavit
Vytvoření smlouvy
Web3 CLI má zabudované generátory kódu pro běžné smlouvy, jako jsou ERC20 a ERC721. Pro vytvoření:
web3 generovat smlouvu erc721 --symbol KATS - název "Krypto Kats" -- base-uri https://kryptokats.com/token/
Tím se vygeneruje soubor s názvem KATS.sol, což je Solidity program pro novou smlouvu NFT.
Nasazení smlouvy
Odtud jej potřeba jen zkompilovat a nasadit. Web3 CLI opět usnadňuje tuto část:
web3 contract build KATS.sol web3 contract deploy KATS.bin
Tím dostanete novou adresu smlouvy. Nyní je NFT smlouva nasazena.
Vytvoření NFT
Nyní, když je smlouva nasazena, jednoduše je potřeba vytvořit další. Nejprve nastavíme adresu kontraktu jako proměnnou prostředí, takže ostatní příkazy budou tuto smlouvu používat:
export WEB3_ADDRESS=0xCONTRACT_ADDRESS
Při vytváření budete muset uvést adresu osoby, která bude vlastnit tento nový NFT:
web3 contract call --wait --abi KATS.abi --gas-limit 2000000 --function mint 0xABC
Tato funkce vyrazí zcela nový NFT a dává jej na adresu 0xABC. Nové předvolby OpenZeppelin pro ERC721 mají automaticky dané ID, takže ve výstupu uvidíte nové ID tokenu – např.:
Parsed Logs: [ { "name": "Transfer", "fields": { "from": "0x00000", "to": "0x000ABC", "tokenId": "0x00001" } } ]
Tento výstup byl zkrácen, odstraněna spousta nul, ale můžete vidět, že nové ID tokenu je číslo 1.
Přenos NFT
Nyní, pokud vlastníte NFT a chcete jej převést, můžete zavolat funkci transferFrom:
web3 contract call --wait --abi KATS.abi --gas-limit 2000000 --function transferFrom 0xABC 0xXYZ 1
To přenese token s ID 1 na nového vlastníka v 0xXYZ. Tokeny můžete prohlížet a hledat v Průzkumníku GoChain.
Závěr
Dvě naprosto zásadní věci, které kdy s NFT uděláte, je jejich vytváření a poté je lze převádět. NFT jsou v zásadě důkazem vlastnictví, takže hlavní věcí, kterou můžete s jedním udělat, je dokázat, že něco vlastníte nebo prodáte/převedete na někoho jiného. Doufáme, že článek pro vás byl přínosný.
Nešlo by to vysvětlit podrobněji? Především tu spoustu zkratek.
No pokud nejste vývojář (celkově článek působí jako nějaký překlad/přepis bez hlubšího porozumnění autorky), tak bych spíše zkusil Rarible, aspoň mě tohle nejčastěji vyplivlo po zadání “create nft” (na youtube je spousta návodů, jak na to, ale řekl bych že ani nejsou potřeba, je to easy).
PS: Možná taky zkusím narvat tam něco např. nějakou fototvorbu 🙂
Zkratky klidně vysvětlím, to není problém. Jen to nebude na debatu pod článkem. Je pravda, že tohle je trochu mimo to, co normálně dělám, ale určitě najdeme cestu. Kdybyste se o tom chtěl více pobavit, stačí napsat.
ne “solidní” ale v Solidity, což je programovací jazyk
Rychlejší prsty. Díky moc. 🙂