Come si costruisce un NFT?

Come si costruisce un NFT?

Di Tiziana Farina


nft certificato digitale API metadata

NFT sta per Non Fungible Token, ossia è un token non fungibile. Questa è una differenza sostanziale con  le cryptovalute, che, essendo denaro a tutti gli effetti sono fungibili, ossia, detto alla spicciola, una crypto vale  l’altra. Se tu mi dai cinque euro e io te ne restituissi cinque dei miei cambierebbe qualcosa? No, perché  appunto il denaro è fungibile, questi tokens non lo sono. 

Gli NFT sono dei certificati digitali, che attestano l’originalità e la proprietà univoca di un bene fisico o digitale.  

È questo uno dei motivi per i quali hanno assunto rilevanza ad esempio nell’acquisto di opere d’arte digitali: l’opera in sè infatti può essere facilmente riproducibile e il suo proprietario potrebbe venire usurpato in qualsiasi  momento del suo diritto; il proprietario dell’opera coniata, dunque, ha potere assoluto nel rivendicare il suo diritto di proprietà.

Questa relazione tra il proprietario e il token è protetta dalla blockchain di Ethereum, dove nessuno può  modificare il record di proprietà o duplicare un nuovo token. Ma ora basta parlare. Ti incuriosiscono gli NFT e vorresti costruirne uno? Proviamoci insieme!

Come si costruisce un NFT?

Nel momento in cui scrivo questo tutorial mi cimento anche io per la prima volta, quindi sarà un po’ come  essere coding buddies.  

Gli unici prerequisiti sono avere VSC e Node installati nel tuo computer, se non li hai clicca qui:

∙ VSC: https://code.visualstudio.com/ 

∙ Node https://nodejs.org/it/ 

Altra cosa di cui abbiamo bisogno per iniziare è il wallet virtuale Metamask:

  • https://metamask.io/download/ 

Questo servirà per interagire con il blockchain di Ethereum tramite un’estensione sul browser.   

 

 Sei pront*? Iniziamo!

Per prima cosa abbiamo bisogno di disporre anche di una minima quantità di Ethereum al fine di  fare dei test, non ci sarà bisogno di metterne dei reali, perchè a questo fine ci faremo aiutare da un  faucet di ETH, ossia una pagina web che ne distribuisce piccole quantità. 

  • Dalla home su Metamask vai su reti 🡪 show/hide test networks 🡪 fai switch su test network  ON e scegli una rete di test.
  • Copia e incolla il codice sulla pagina web della rete, io ho usato  la rete di test Goerli.  

Il prossimo step è quello di interagire con il network di Ethereum, e per farlo occorre connettersi  a un client di Ethereum. Useremo il provider di Alchemy, e creiamo la nostra app usando la versione free.  

 Copiamo la chiave API e salviamola sul note: view details 🡪 view key  

Il progetto prende forma

Inizializziamo il progetto dalla nostra bash:

mkdir nft-project 

cd nft-project 

Creiamo un’altra directory all’interno del nostro progetto e chiamiamo node.js:

mkdir ethereum  

cd ethereum 

npm init

Installiamo Hardhat, un Ethereum development environment (n.b.: per chi ha Windows ho avuto qui la necessità di aprire Powershell perchè il comando non veniva riconosciuto nella bash):

npm install –save-dev hardhat 

npx hardhat 

E selezioniamo l’opzione: ‘Create an empty hardhat.config.js’ .

Torniamo indietro nella root directory del nostro progetto e usiamo Next.js per inizializzare la web app cd ..  

mkdir web 

cd web  

npx create-next-app@latest 

Next.js è un framework di sviluppo Web open source basato su Node.Js  
fonte: Wikipedia.

Definire le variabili

Lanciamo i seguenti comandi per creare un file di enviroment dentro la cartella ethereum, riprendendo da dove  eravamo rimasti e apriamo VSC per andare a modificare il file di environment

cd ..  

cd Ethereum 

touch .env 

npm install dotenv –save

Quando definiamo le variabili, una variabile sarà l’alchemy key che abbiamo salvato in precedenza, una la Metamask private key, e l’ultima l’indirizzo Metamask.

Nel nostro file .env dovranno essere scritte così

DEV_API_URL = ALCHEMY_KEY 

PRIVATE_KEY = METAMASK_PRIVATE_KEY 

PUBLIC_KEY = METAMASK_ADDRESS 

Come settare lo smart contract?

Lo smart contract è il contratto digitale dove gli accordi tra gli utilizzatori sono settati nel codice. Per farlo torniamo nella bash per creare due nuove directories all’interno di ethereum, una per i contratti e una per gli  scripts, poi installiamo Open Zeppelin, una libreria open source in tema di smart contracts. 

mkdir contracts 

mkdir scripts 

npm install @openzeppelin/contracts 

All’interno della cartella ‘contracts’ creiamo il file del nostro primo contratto con il comando touch. touch myFirstContract.sol 

L’estensione .sol si riferisce al Solidity Language, il linguaggio degli smart contracts. Se non ce l’hai, installa il compiler su VSC, inoltre ti consiglio questo indirizzo dove puoi consultare un esempio di contratto smart: https://ethereum.org/en/developers/docs/smart-contracts/languages/.

Costruire i Metadata del nostro NFT 

I metadata sono gli elementi descrittivi dell’NFT; ai fini del nostro tutorial, immagazzineremo i metadata  dell’NFT semplicemente da fare in modo che la nostra API restituisca il file JSON. Nel nostro progetto aperto su VSC creiamo una nuova cartella su web 🡪 pages 🡪 api 🡪 e la chiamiamo erc721 dal nome della forma più usata di NFT, l’ERC-721 appunto, detta anche forma standard. All’interno creiamo un file JS dove inseriamo i metadata.

Per esempi esplicativi della struttura del Metadata di un ERC721 consulta questa documentazione di Opensea:  https://docs.opensea.io/docs/metadata-standards.

Lanciamo poi il comando:npm run dev dalla directory web/my-app.

Fase di deploy e considerazioni finali

Poichè la nostra app è solamente in locale, può essere utile scaricare un tool come ngrok per esporla ad un accesso pubblico.

Per il deploy useremo il nostro indirizzo ngrok, che verrà inserito nella funzione baseURI dello smart contract come nell’esempio:

function _baseURI() internal pure override returns (string memory) {  return "API_URL.ngrok.io/api/erc721/"; 

}

Per compilare usiamo hardhat e per rendere il processo più semplice, ti suggerisco di usare ethers.js, una libreria che ambisce a diventare la più completa per interagire con la Blockchain di Ethereum. Una volta installata ethers.js, lanciamo il comando dalla cartella Ethereum: npx hardhat compile

Creo infine un file deploy.js su ethereum/scripts/deploy.js.

Per maggiori info sulla fase di deploy è possibile consultare il tutorial di Hardhat su https://hardhat.org/guides/deploying.html, dove è disponibile un modello di script di deploy. A questo punto, una volta messo in run lo script di deploy, se tutti i passaggi sono stati eseguiti correttamente, nel tuo terminale apparirà l’indirizzo del network di test dove sarà visibile la tua NFT!

Oltre a questi brevi cenni sul deploy, in questo tutorial su come costruire NFT, non ci occuperemo della coniazione della NFT ma essere arrivati fino a qui è già una grandissima soddisfazione. Dallo spunto iniziale offerto, si può partire per creare il tuo token personalizzato, arricchendolo dei metadati che preferisci e con lo smart contract che meglio credi.

Impara a programmare in 3 mesi con il Corso di Coding Hackademy su Laravel PHP

Diventa Sviluppatore web in 3 mesi

Scopri il coding bootcamp Hackademy

Programma Completo