Web3: Come creare una collezione NFT con Solana

Bentornati a tutti! Dopo la divagazione di settimana scorsa, che mi ha portato a scontrarmi con il mio personale Blog Dilemma, ritorno a parlare di web3. Oggi vorrei raccontarvi come è possibile creare una collezione NFT con Solana.

Come sapete il web3 è uno degli argomenti più effervescenti del momento che sta riuscendo a catalizzare l’attenzione di investitori, imprenditori e innovatori. Nei precedenti articoli vi ho parlato dell’impatto che sta avendo (o che potrebbe avere) sul mondo dei social, del gaming e della formazione.

Se non li avete ancora letti e vi piacerebbe approfondire ulteriormente l’argomento potreste recuperare quegli articoli, forniscono una panoramica dell’ondata di innovazione che sta travolgendo internet. Se invece non volete più perdervi nessuna puntata di questo blog, iscrivetevi pure alla newsletter (no spam, solo nuovi post e poi è gratis 🙂 ).

Vi ho anche già parlato della mia prima app decentralizzata nel web 3 con Solana, in quell’articolo analizzo tutti i vantaggi di questa blockchain. Come vi ho raccontato 3 settimane fa, sto continuando ad apprendere nozioni di sviluppo blockchain, facendo piccoli esperimenti su progetti personali.

Oggi voglio approfondire uno di questi progetti che mi ha portato a creare una collezione NFT con Solana, ospitata su un mio sito web (e non su un marketplace di terzi).

Nell’articolo toccherò i seguenti argomenti:

  • Piccola introduzione sul mondo NFT
  • Perché creare una collezione NFT con Solana?
  • Come creare una collezione NFT con Solana
  • Piccola demo: La collezione rappresenta opere d’arte di città italiane, partendo con il primo drop dalle principali opere della mia città, Brescia 🙂
NFT Arte Italia - Toplus Demo
NFT Arte Italia – Toplus Demo

Siete pronti, si parte!

Avvertenze: questo articolo è rivolto sia a curiosi dell’argomento sia a sviluppatori (spero che siano anch’essi curiosi). Se la parte di implementazione può risultare di difficile comprensione per chi non è uno sviluppatore, suggerisco di saltarla.

Cosa sono gli NFT?

Questo paragrafo non vuole essere una spiegazione esaustiva sulla tecnologia NFT dato che probabilmente nell’ultimo anno avrete già sentito parlare di questo argomento. Inoltre, su internet si trovano tantissime guide molto dettagliate, io mi limiterò a fornire le nozioni di base necessarie per comprendere il resto dell’articolo.

Gli NFT, acronimo di Non Fungible Token, sono dei token crittografici generati su una blockchain che per loro natura sono distinguibili l’uno dall’altro, a differenza delle cryptovalute che sono dei token fungibili (non è possibile distinguere un bitcoin da un altro bitcoin, così come avviene con le monete fiat).

Per questa loro particolare caratteristica gli NFT permettono di certificare il possesso di una determinata risorsa digitale a cui vengono associati. Questo ha permesso alla tecnologia di trovare terreno fertile nell’ambito della crypto art, della musica e del gaming e di creare un grande entusiasmo attorno al trend.

Su questa tecnologia c’è attualmente parecchia confusione, acquistare un NFT non significa comprare l’immagine o il video a cui vengono associati, bensì ottenere un certificato associato a quello specifico file. Il file di per sé può essere scaricato (e quindi a tutti gli effetti posseduto) da chiunque, l’elemento che viene acquisito, e che ne costituisce il valore è il certificato!

Sicuramente avrete sentito parlare delle cifre mirabolanti ai quali sono stati venduti alcuni NFT. C’è chi pensa che sia una bolla (probabilmente ha ragione) e c’è chi pensa che sia il futuro (probabilmente ha ragione). La verità ad oggi non si può sapere, ma è plausibile che sarà nel mezzo.

Facile fare previsioni così Toplus, hanno ragione tutti ehehe
Facile fare previsioni così Toplus, hanno ragione tutti ehehe

Attualmente c’è un hype smisurato attorno a qualsiasi progetto NFT e questo porta investitori a spendere cifre folli. Probabilmente, tanti progetti cadranno nel dimenticatoio, ma tra questi sicuramente qualcuno riuscirà ad emergere e a consolidarsi, un po’ come è stato per la bolla delle dot-com del 2000.

Valore degli NFT

Se vi state chiedendo quale sia un indicatore che permette di misurare il valore di un NFT, può tornare utile la seguente formula (tratta da questo articolo molto interessante di Forbes):

Valore NFT = Scarsità + Utilità + Reputazione + Liquidità

Scarsità: rappresenta quante poche “copie” vengono create di quello specifico NFT. Riprende un po’ il mondo dell’arte, più un elemento è raro, più acquisisce il valore.

Utilità: rappresenta che cosa è possibile fare con l’NFT che si possiede. Durante l’hype smisurato dello scorso anno, tante persone hanno mosso dei dubbi circa le opere d’arte digitali fini a se stesse. I più furbi hanno cercato di correre subito ai ripari garantendo agli acquirenti degli NFT dei benefit. Gli NFT sono diventati quindi delle chiavi di accesso per delle community (DAO – Decentralized Autonomous Organization), dove i membri possono accedere a servizi esclusivi. Personalmente, buona parte delle community che ho visto nascere non mi hanno convinto del tutto. Un alto discorso è quello relativo al gaming, dove effettivamente gli NFT diventano parte integrante del gioco e sono necessari per giocare.

Reputazione: il creatore degli NFT incide molto sul valore dello stesso. Se domani pubblicasse una collezione NFT un Justin Bieber qualsiasi avrebbe molto più probabilità di fare sold-out rispetto alla collezione di Toplus. Come dite l’ha già fatto? inBetweeners NFT (ps il curatore delle opere si chiama Gianpiero ed è italiano).

Liquidità: rappresenta quanto è facile acquistare un certo NFT, ovvero quanti ne sono disponibili in circolazione.

Quindi si possono delineare i seguenti motivi per cui ha senso comprare un NFT:

  • Collezionismo
  • Status: oggi è possibile mettere NFT come immagini di profilo su vari social
  • Trading: tanti acquistano sperando di rivendere quando un artista aumenta le sue quote
  • Utilità: entrare a far parte di particolari community
  • Gaming: accedere a videogiochi

NFT su Ethereum

Gli NFT sono stati resi popolari dalla blockchain Ethereum, grazie allo standard ERC-721 del 2017, che definisce le caratteristiche degli smart contract per la rappresentazione di un NFT.

Fino al 2021 la gran parte del mercato NFT ha visto come protagonista Ethereum. Sono nati difatti tantissimi diversi marketplace di arte digitale per la compravendita di NFT, su tutti possiamo citare questi tra i più famosi OpenSea, SuperRare e Rarible.

Collegandosi con il proprio wallet a queste piattaforme è possibile realizzare (mintare in gergo) i propri NFT, acquistare NFT creati da altri artisti o mettere in vendita gli NFT posseduti.

Come ho già spiegato in questo articolo, Ethereum ha un grosso problema di costi di transazione, rendendo quindi uno scoglio l’acquisto e la vendita di NFT sotto un determinato valore. Inoltre, per tenere in piedi la loro infrastruttura (e guadagnarci anche, giustamente) queste piattaforme prevedono dei costi aggiuntivi sia sulla creazione che sull’acquisto di NFT.

I costi non hanno ovviamente fermato la diffusione delle piattaforme, OpenSea è attualmente valutata attorno ai 13 miliardi di $, e ha raggiunto la cifra di 3,3 miliardi di $ di transato mensile in Ethereum. Niente male!

Per contrastare gli alti costi di transazione, si sono trovate delle soluzioni alternative: sono nate per esempio delle sidechain di Ethereum (blockchain alternative ma compatibili), come per esempio Polygon, che permette di scambiare NFT a basso costo, favorendo l’ambito dell’arte digitale e del gaming (come nel caso di Axie Infinity).

Perché creare una collezione NFT con Solana?

L’alta velocità e i bassi costi di transazione di Solana rendono la blockchain molto appetibile per lo sviluppo di progetti NFT.

Alcune statistiche prese dal sito ufficiale di Solana
Alcune statistiche prese dal sito ufficiale di Solana

Inoltre, sempre dal sito ufficiale, si possono evincere le seguenti caratteristiche:

  • Meccanismi di asta e royalties perpetue sono codificati direttamente nell’NFT, Solana supporta un’esperienza on-chain totalmente decentralizzata per artisti e collezionisti.
  • Con il suo standard NFT (Metaplex) estremamente configurabile permette agli artisti di concentrarsi sulle opere d’arte e non sull’implementazione del contratto.
  • Si appoggia su degli storage permanenti per il salvataggio dei file, come per esempio Arweave.

Grazie a Metaplex (il tool che ho utilizzato per la demo), è possibile per uno sviluppatore realizzare in modo semplice delle collezioni NFT. Come vedete i costi per creare e mettere all’asta un NFT sono estremamente bassi rispetto a quelli su Ethereum.

costi di minting e auction su Metaplex - Solana
costi di minting e auction su Metaplex – Solana

Metaplex fornisce una serie di tool per la creazione e per la vendita di NFT, per sviluppatori e per creatori:

  • CandyMachine: è la “macchinetta delle caramelle“, inserisci il gettone e scende un nuovo NFT!
  • StoreFront: offre la possibilità di implementare un marketplace partendo dal loro codice!

In questo modo è possibile creare la propria collezione NFT senza dovere passare per un marketplace di terzi come OpenSea o altri. I creatori potranno in questo modo liberarsi di tutti i costi di transazione trattenuti dalle piattaforme in fase di creazione e di acquisto.

È possibile anche creare NFT su Solana senza utilizzare Metaplex, ma attualmente richiede competenze tecniche più avanzate in quanto, a differenza di Ethereum, su Solana bisogna gestire la concorrenza degli eventi di minting e acquisto degli utenti dato che le transazioni possono avvenire anche in parallelo.

Tutti questi aspetti positivi di cui abbiamo parlato stanno attirando l’attenzione della community NFT su Solana.

Come creare una collezione NFT con Solana

Dopo tante chiacchiere arriviamo al sodo 🙂

Se non sei uno sviluppatore questa parte potrà risultarti un po’ difficile (o noiosa), puoi andare direttamente alla demo!

Anche per questo progetto ho seguito un percorso di apprendimento realizzato da buildspace. Per chi ancora non li conoscesse è una piattaforma finalizzata alla diffusione della conoscenza in ambito blockchain, per appassionati e sviluppatori.

Se volete seguire il tutorial completo vi consiglio di iscrivervi alla piattaforma è spiegato molto bene e fornisce tutti gli strumenti per andare da 0 a 100!

In questo articolo vi parlerò di quali sono gli step necessari per raggiungere l’obiettivo, ma non scenderò nel dettaglio del codice. Se siete comunque interessati potete però dare un’occhiata al mio repository github.

Come vi ho accennato in precedenza ho utilizzato la CandyMachine (versione 2) di Metaplex per realizzare questa collezione NFT. Uno dei vantaggi di questa soluzione è data dal fatto che Metaplex si occuperà di creare e pubblicare il nostro program Solana, ponendosi a tutti gli effetti come un servizio per implementare e pubblicare smart contract.

Pubblicare la propria CandyMachine sulla blockchain ha un costo, proporzionale al numero di NFT presenti nella collezione. Questa operazione se svolta in devnet è gratuita, visto che i token non hanno valore, il discorso è diverso se invece viene svolta sulla mainnet di Solana, dove bisogna pagare utilizzando SOL.

Configurare Metaplex

Prima di tutto bisogna predisporre tutti i tool necessari per potere utilizzare Metaplex, trovate il tutorial ufficiale qua e ovviamente dovete avere installato anche Solana.

Una volta che avete predisposto solana, git, node, yarn e ts-node. Potete procedere a clonare metaplex e ad installarlo con yarn. Come al solito predisporre l’ambiente comporta alcune perdite di tempo (e ricerche nei meandri di stackoverflow), ma è una cosa che va fatta, almeno una volta nella vita 😀

Avevi detto che era semplice
Avevi detto che era semplice

Una volta configurato Metaplex, bisogna assicurarsi di avere un wallet Solana in locale. Per questo esempio ho lavorato sulla devnet di Solana, una blockchain di sviluppo equivalente a quella principale, con la differenza che tutti i token sono disponibili gratuitamente e non hanno quindi valore economico.

Per creare e pubblicare la collezione NFT, nel mio caso di 10 elementi (numero massimo su devnet) bisogna preparare i seguenti file:

  • cartella assets, contenente:
    • le immagini numerate da 0 a 9
    • un file json per ogni immagine, numerati da 0 a 9
  • file config.json per configurare la CandyMachine

Come nell’esempio:

Il file .json per ogni immagine serve a specificare le caratteristiche dei singoli NFT, mentre il file config.json fornisce i dettagli della CandyMachine, come per esempio il prezzo, la quantità, la data di rilascio, lo storage utilizzato e a chi vanno indirizzate le transazioni di acquisto. Trovate i dettagli nella documentazione.

Una volta predisposti i file e completate le configurazioni bisogna assicurarsi di avere dei token sul wallet locale, qualora mancassero basta fare un airdrop per ottenerli gratuitamente (su devnet).

In seguito bisogna digitare il comando di upload:

ts-node ~/metaplex-foundation/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts upload -e devnet -k ~/.config/solana/devnet.json -cp config.json ./assets

Metaplex si occuperà di caricare i file sullo storage e di creare il vostro program per mintare e vendere NFT. Tadaaam Il gioco è fatto!

Creare un sito per visualizzare e vendere gli NFT

A questo punto abbiamo pubblicato la nostra collezione NFT ed il program che permette di mintare questi NFT. Ora bisogna creare un frontend che consenta agli utenti di accedere alla nostra CandyMachine e mintare gli NFT. Per questo progetto ho utilizzato React per la parte di frontend.

Come prima cosa è necessario permettere all’utente di autenticarsi nel web3 utilizzando il suo wallet. Per questa applicazione ho implementato l’integrazione con il wallet Phantom, uno dei più diffusi su Solana. È necessario utilizzare la seguente libreria javascript @solana/web3.js.

L’applicazione verifica quindi la presenza del wallet sul browser, se l’utente ha già effettuato l’accesso lo indirizza automaticamente nell’app, altrimenti permette all’utente di procedere alla connessione attraverso il pulsante “Connect to Wallet”.

Una volta verificata l’identità dell’utente è possibile procedere con l’integrazione alla blockchain per comunicare con il program della nostra CandyMachine.

Durante la fase di upload, la libreria di MetaPlex genera una chiave pubblica che rappresenta l’id del program al quale bisogna connettersi. Questa chiave pubblica va salvata nelle variabili d’ambiente, insieme all’indirizzo della devnet di Solana al quale bisognerà effettuare le chiamate (RPC).

Inoltre viene generato anche una cartella .cache, contenente il file devnet-temp.json che contiene varie informazioni di pubblicazione relativi agli NFT, tra cui i link delle immagini correlate agli stessi.

Per comunicare con la blockchain Solana bisogna creare una Connection con la quale si può instanziare un Provider Solana. Raggiunto questo step, si può fare una chiamata per ottenere i metadati (file .idl) del nostro program, sfruttando l’id dello stesso. Questi metadati forniscono le informazioni necessarie per effettuare le RPC.

La prima chiamata da fare serve per ottenere lo stato della CandyMachine:

Chiamata su Solana per ottenere lo stato della CandyMachine
Chiamata su Solana per ottenere lo stato della CandyMachine

Come vedete dal codice è possibile scoprire quanti NFT sono già stati mintati, quanti sono ancora disponibili e la data di rilascio della collezione. Inoltre recuperando i link degli NFT dal file devnet-temp.json e possibile mostrare tutti gli NFT presenti nella collezione.

Mintare gli NFT

Ora manca solo l’implementazione della chiamata per inserire un gettone nella CandyMachine e mintare gli NFT. Il codice per effettuare questa operazione è messo a disposizione nelle librerie di Metaplex. In breve, vengono messe insieme una serie di istruzioni all’interno della stessa transazione che permettono di:

  • creare un account sul program per l’utente che sta effettuando l’acquisto
  • inizializzare il mint del token
  • effettuare l’associazione tra il token e l’account
  • finalizzare il mint del token

Queste istruzioni permettono al program di trasferire il costo del token dall’acquirente al wallet del creatore e di inviare il token nel wallet dell’acquirente. La CandyMachine si occupa di effettuare queste transazioni su Solana.

L’integrazione con la blockchain a questo punto può ritenersi conclusa! Come potete notare, per quanto riguarda lo sviluppo frontend c’è un certo parallelismo con l’integrazione ad un backend tradizionale. Ovviamente ci sono alcuni concetti che differenziano le tecnologie e sicuramente ci sono delle nozioni di base da apprendere per iniziare a lavorarci.

Però, sviluppare nel web3, non significa solamente programmare smart contract su blockchain, c’è tanto lavoro da fare anche sugli aspetti di frontend che permettono a tutti gli effetti di rendere le applicazioni decentralizzate fruibili a tutti gli utenti su internet.

Bonus: learn and earn!

Questo percorso di apprendimento di buildspace sposa l’approccio learn and earn. Ho ricevuto quindi un premio per avere completato il percorso, un NFT (Ethereum) pubblicato sulla piattaforma OpenSea!

quanto è bello guadagnare NFT mentre impari

Finalmente la demo – NFT con Solana

Potete trovare la demo al seguente link! Nel resto dell’articolo vi spiegherò passo passo come è possibile interagire con questa applicazione web3 per ottenere gli NFT della mia collezione!

Entrando vi troverete questa landing page:

NFT Arte Italia con Solana
NFT Arte Italia con Solana

Accedere al web3

Se non avete installato il wallet Phantom la pagina web vi avviserà che è necessario averlo per potere procedere. Potete farlo gratuitamente dal loro sito installando l’estensione del browser e seguendo la procedura guidata (attenti a memorizzare in modo sicuro sia la password sia la chiave privata!).

Dovete considerare che il wallet vi permette di identificarvi (attraverso la chiave pubblica) nel web3, ed è un po’ il corrispettivo di quello che attualmente rappresentano gli account nei siti del web2, con la grossa differenza che con un unico wallet potete autenticarvi su qualsiasi applicazione nel web3 e che tutti i token e gli asset che acquisite su un sito rimangono nel vostro wallet.

Una volta che vi siete assicurati di avere installato il wallet è necessario seguire la seguente procedura per impostare il wallet sulla devnet e ottenere dei token in modo gratuito (airdrop). Potrà sembrarvi un po’ complesso all’inizio ma vi assicuro che una volta compreso (e avviato) il meccanismo risulterà più semplice di quanto non sembri.

Cliccando sul pulsante “Connect to Wallet” Phantom vi chiederà di autenticarvi e di confermare la condivisione delle vostre informazioni di base con l’applicazione, procedura necessaria per instaurare una connessione con una qualsiasi applicazione nel web3.

Autenticazione con il Wallet Phantom
Autenticazione con il Wallet Phantom

Una volta inserita la password e confermato l’accesso con l’applicazione, sarete autenticati nell’applicazione e potrete visualizzare gli NFT!

Eccovi dentro NFT Arte Italia!

Come scoprirete, è possibile visualizzare gli NFT disponibili e le altre informazioni relative alla CandyMachine, come la data di rilascio e gli NFT ancora disponibili. Sono tutte delle spettacolari foto (fatte da me) di opere d’arte della mia splendida città Brescia 😀

Mintare un NFT

Arriviamo al bello, ora potrete mintare ed ottenere nel vostro wallet uno a caso tra questi NFT. Questa operazione, sulla mainnet, prevede ovviamente un costo, dato che la transazione di SOL avviene dal vostro wallet verso il wallet del creatore, che in questo caso sono io.

Dato che questa demo è a scopo didattico e che il program è pubblicato sulla devnet, la transazione che avviene non ha nessun valore, in quanto i token SOL sulla rete di sviluppo sono gratuiti. In poche parole, a voi non costa niente e io non guadagno niente 🙂

Per mintare un NFT basta cliccare sul pulsante “Ottieni il tuo NFT”. Ce ne sono solamente 10 disponibili, quindi i primi 10 che parteciperanno potranno ottenere il proprio, hurry up! Il costo per il ottenere un NFT è di 0.01 SOL, parametro configurabile in fase di creazione della collezione, più il costo della transazione (0.00197 SOL).

Cliccando sul pulsante vi verrà chiesto di confermare la transazione dal vostro Phantom Wallet (ovviamente sarà necessario avere dei token disponibili, dovreste ancora averne in seguito all’airdrop di prima, altrimenti fatene un altro):

Conferma transazione con il wallet Phantom
Conferma transazione con il wallet Phantom

Dopo avere cliccato su “Approve” e avere atteso un minuto, se l’operazione è andata a buon fine potrete aprire il vostro wallet e nella sezione Collectibles (seconda icona in basso da sinistra), troverete l’NFT che avrete ottenuto. Figo no?

Solana NFT Arte Italia - Brescia - Castello Silver
NFT Arte Italia – Brescia – Castello Silver

That’s all folks! Complimenti a chi è arrivato fino in fondo ed è riuscito ad ottenere il suo NFT 😀

Per migliorare l’esperienza della demo ho deciso di pianificare come data di rilascio il 30 gennaio 2022, alle ore 21:00 italiane, ovvero la sera della pubblicazione di questo articolo, in modo da dare opportunità a più persone di ottenere il proprio NFT.

Conclusioni

Spero con questo articolo di avervi fornito una panoramica sulla creazione di NFT con Solana e Metaplex. È un ambito in forte espansione e che può creare opportunità per tantissime persone.

Gli NFT non si fermano all’arte digitale, ma rappresentano uno strumento in grado di creare una connessione tra un soggetto e la propria community. Chi riesce a comprendere e ad applicare questa tecnologia nel proprio ambito lavorativo può fornire qualcosa in più rispetto ai proprio concorrenti chi si rifiutano di comprendere e accettare l’innnovazione.

Fatemi sapere nei commenti o in privato se avete trovato utile questo articolo ed iscrivetevi alla newsletter se volete rimanere aggiornati con le novità di questo blog!

Per chiunque fosse riuscito ad ottenere il proprio NFT può seguirmi e taggarmi su twitter con lo screenshot!

Alla prossima!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *