ERC-721: lo standard Ethereum per i token non fungibili

ERC-721: lo standard Ethereum per i token non fungibili

ERC-721 è uno standard per i token non fungibili (NFT) su Ethereum. Uno standard è un insieme pubblicato di regole. Non fungibile significa che ogni token è distinto dagli altri. ERC-721 specifica un’interfaccia, ovvero l’elenco di funzioni ed eventi che uno smart contract mette a disposizione. Uno smart contract è un programma memorizzato su una blockchain. Per ERC-721, un token è un’unità emessa su una blockchain esistente tramite uno smart contract.

ERC-721 è pubblicato come Ethereum Improvement Proposal (EIP), ovvero un documento di progettazione per la comunità Ethereum. Il numero della proposta è 721, per cui ERC-721 viene anche indicato come EIP-721. ERC è la categoria delle proposte per gli standard a livello applicativo, cioè gli standard che le applicazioni su Ethereum seguono, come gli standard dei token.

Il codice di ERC-721 chiama la sua interfaccia ERC721. Un token ERC-721 è un token emesso da un contratto che segue ERC-721.

Una funzione è un’operazione con nome che un contratto mette a disposizione e che un utente può richiamare. Un evento è una notifica che un contratto registra sulla blockchain quando qualcosa cambia, in modo che un software possa seguire la modifica. Emettere un evento significa registrarlo.

Una blockchain è il registro condiviso delle transazioni, mantenuto in ordine. Una transazione è una richiesta che un utente invia a una blockchain, ad esempio una richiesta di spostare un token. Un indirizzo è un identificativo su una blockchain per un utente o per uno smart contract.

Cosa specifica lo standard ERC-721?

Lo standard ERC-721 specifica un’interfaccia: le funzioni che un contratto deve fornire e gli eventi che deve emettere. Il software può quindi richiamare i contratti che seguono ERC-721 allo stesso modo.

ERC-721 richiede inoltre il rilevamento dell’interfaccia tramite ERC-165, uno standard che permette a un contratto di dichiarare quali interfacce supporta.

ERC-721 descrive due estensioni facoltative. L’estensione dei metadati aggiunge funzioni che restituiscono un nome e un simbolo per i token di un contratto e un link per ciascun ID del token, mentre un’estensione di enumerazione aggiunge funzioni che elencano i token tracciati da un contratto.

ERC-721 è uno standard NFT tra altri, ed è stato scritto per Ethereum. Altre blockchain e altri standard possono funzionare in modo diverso da ERC-721.

Un contratto che segue ERC-721 distingue i propri token tramite l’ID del token, un numero che il contratto assegna a ciascun token. L’indirizzo del contratto che tiene traccia dei token, insieme a un ID del token, identifica un singolo token, e ERC-721 richiede che l’ID di un token resti invariato per tutta la durata di esistenza del contratto.

ERC-721 contro ERC-20: in cosa differiscono i due standard?

ERC-721 ed ERC-20 differiscono per ciò che un contratto tiene traccia, per ciò che un trasferimento specifica e per ciò che un’approvazione copre. ERC-20 è uno standard per i token fungibili, cioè token le cui unità sono intercambiabili, per cui un’unità equivale a un’altra. ERC-721 è uno standard per i token non fungibili, che un contratto distingue tramite l’ID del token, per cui scambiarne due non equivale a uno scambio alla pari.

  • Un contratto ERC-20 registra quante unità possiede ciascun indirizzo, mentre un contratto ERC-721 registra quale indirizzo controlla ciascun ID di token.
  • Un trasferimento ERC-20 specifica una quantità di token, mentre un trasferimento ERC-721 specifica un ID di token.
  • Un’approvazione ERC-20 copre una quantità che un altro indirizzo può trasferire, mentre un’approvazione ERC-721 copre un singolo ID di token oppure, quando indica un operatore, tutti i token che un indirizzo controlla nello stesso contratto. Un operatore è un indirizzo a cui l’indirizzo che controlla i token ha concesso l’autorizzazione a trasferirli tutti.

Quali funzioni ed eventi definisce ERC-721?

Questa tabella elenca, per nome, le funzioni e gli eventi definiti da ERC-721, insieme alla funzione di rilevamento dell’interfaccia proveniente da ERC-165, indicando cosa fa ciascuno di essi.

Nome

Tipo

Cosa fa

balanceOf

funzione

Restituisce quanti token controlla un indirizzo.

ownerOf

funzione

Restituisce l’indirizzo che controlla un ID di token.

transferFrom

funzione

Sposta un ID di token da un indirizzo a un altro.

safeTransferFrom

funzione

Sposta un ID di token da un indirizzo a un altro ed esegue anche un controllo sul ricevente quando l’indirizzo destinatario è uno smart contract.

approve

funzione

Permette a un indirizzo specifico di trasferire un ID di token.

getApproved

funzione

Restituisce l’indirizzo approvato a trasferire un ID di token.

setApprovalForAll

funzione

Permette a un indirizzo di abilitare o disabilitare un operatore per tutti i propri token nello stesso contratto.

isApprovedForAll

funzione

Restituisce se un indirizzo è un operatore per un altro indirizzo.

supportsInterface

funzione, da ERC-165

Restituisce se un contratto supporta una determinata interfaccia.

Transfer

evento

Annuncia che l’indirizzo che controlla un token è cambiato.

Approval

evento

Annuncia che l’indirizzo approvato per un ID di token è stato cambiato o riconfermato.

ApprovalForAll

evento

Annuncia che un operatore è stato abilitato o disabilitato.

Quale funzione controlla il contratto ricevente?

La funzione safeTransferFrom esegue un controllo sul ricevente dopo aver spostato un token. Quando l’indirizzo destinatario è uno smart contract, il contratto ERC-721 richiama su di esso una funzione chiamata onERC721Received, ovvero la funzione del ricevente. Il contratto ricevente fornisce questa funzione, che restituisce una risposta specifica definita da ERC-721 e che segnala al contratto ERC-721 che il contratto ricevente accetta il trasferimento. Se il contratto ricevente restituisce qualcos’altro, la transazione viene annullata, operazione che ERC-721 definisce “revert”.

La funzione transferFrom non richiama alcuna funzione del ricevente. ERC-721 lascia al chiamante, ovvero a chi invia la transazione che richiama la funzione, il compito di verificare che l’indirizzo destinatario sia in grado di ricevere i token. Un token inviato a un contratto che non fornisce la funzione del ricevente potrebbe andare perso.

Come funzionano approvazioni e operatori?

Un’approvazione permette a un altro indirizzo di trasferire un token. La funzione approve indica un singolo indirizzo per un singolo ID di token, mentre getApproved restituisce tale indirizzo. ERC-721 stabilisce che l’indirizzo approvato viene azzerato quando il token viene trasferito.

Un operatore è un indirizzo a cui è stato concesso, tramite setApprovalForAll, il permesso di trasferire tutti i token che un altro indirizzo controlla nello stesso contratto. ERC-721 richiede che un contratto consenta più di un operatore per ciascun indirizzo che controlla dei token, e isApprovedForAll restituisce se un indirizzo è un operatore per un altro indirizzo.

Secondo ERC-721, un trasferimento può essere richiesto dall’indirizzo che controlla il token, da un operatore di quell’indirizzo, oppure dall’indirizzo approvato per quell’ID di token.

Cosa aggiunge l’estensione facoltativa dei metadati?

L’estensione facoltativa dei metadati di ERC-721 aggiunge tre funzioni a un contratto: name, symbol e tokenURI. I metadati sono dati che descrivono i token, e queste tre funzioni li restituiscono.

La funzione name restituisce un nome per i token tracciati da un contratto, mentre symbol ne restituisce un nome abbreviato.

La funzione tokenURI restituisce un URI per un singolo ID di token. Un URI, abbreviazione di uniform resource identifier, è un link. Un contratto che omette l’estensione non ha alcun URI.

ERC-721 stabilisce che l’URI restituito da tokenURI può puntare a un file JSON, un formato testuale per dati strutturati. Il file può contenere i campi nome, descrizione e immagine.

ERC-721 permette a un contratto di modificare l’URI restituito per un ID di token, cosicché lo stesso ID di token possa in seguito rimandare a un file diverso. ERC-721 non specifica dove venga memorizzato il file a cui punta l’URI.

Cosa lascia ERC-721 alla discrezione di ciascun contratto?

A partire da ottobre 2026, ERC-721 non definisce il contenuto di un token, eventuali diritti collegati a un token, dove siano memorizzati i file di un token, come i token vengano creati o distrutti, né lo status legale di un token. La voce del glossario Non-fungible token (NFT) spiega cosa venga escluso dal record di un token, ovvero dalle informazioni che un contratto conserva su ciascun token.

I contratti che seguono ERC-721 possono comunque differire nel comportamento. ERC-721 elenca i casi in cui un trasferimento deve fallire e permette a un contratto di annullare un trasferimento in altri casi, ad esempio mentre i trasferimenti sono sospesi. Un contratto può quindi rifiutare un trasferimento per motivi che ERC-721 non elenca.

5 gennaio 2026

Notizie GoMining

Potresti essere interessato a: