Di CryptoKitties ne hanno parlato tutti, chi in bene, chi in male. Non tutti hanno compreso le reali potenzialità del progetto, molti se ne sono lamentati solamente per aver congestionato la rete Ethereum. Come se avere troppo successo fosse un problema… sorvoliamo però sulla questione.
Quello di cui ci interessiamo in questo articolo è di andare ad analizzare ciò che di tecnologicamente interessante ha stimolato quel progetto, ovvero la proposta dello standard ERC721, atto proprio a definire le modalità di manipolazione di token non fungibili.
Cosa sono i token non fungibili? Vediamolo assieme.
Non tutti i token sono uguali
Oggi siamo oramai abituati a possedere e a gestire nei nostri wallet Ethereum tutta una serie di monete che non siano ether. Questo tipo di monete, nella stragrande maggioranza dei casi, sono dei token ERC20. ERC20 è uno standard per contratti definito per gestire l’utilizzo di token così detti fungibili, ovvero i quali, posti uno a fianco all’altro due token dello stesso tipo, essi sono di uguale valore e sostituibili. Una moneta, è un bene fungibile.
Se io ho una moneta da 1 Euro, posso senza problemi sostituirla con un’altra moneta da 1 Euro, ed avrò lo stesso valore. Se io ho un ether od un token, posso entrambi sostituirli con un ether od un token equivalenti, ed otterrò lo stesso valore. Semplice.
Ora immaginiamo di avere un bene non fungibile, ovvero per cui non valga questa proprietà di sostituibilità. Ad esempio un paio di scarpe. Posto un determinato tipo di paio di scarpe, con un certo colore, una misura, un design unici e caratteristici, pongo a fianco un altro paio di scarpe. Sono sempre scarpe, ma potranno essere diverse: potranno essere di un altro numero, avere un altro colore od avere un design completamente differente. Se volessi rappresentarle con un token, questi dovrebbero essere necessariamente “non fungibili”, e per i CryptoKitties è lo stesso. Da cui la necessità di uno standard.
ERC721
Lo standard ERC721 viene steso e proposto su Github (https://github.com/ethereum/EIPs/issues/721) il 22 settembre di quest’anno, da un certo Dieter Shirley, Direttore della Blockchain Technology ad Axiom Zen, proprio l’azienda che ha realizzato i CryptoKitties. I detrattori del progetto dovranno almeno prendere atto di questo. Lo standard in questione è ancora in definizione, nonostante i propositori siano già usciti col servizio, e si occupa di definire la tracciabilità e la proprietà quelli che loro chiamano NFT (Non-fungible Token).
Ogni NFT sottostà a queste rigide regole:
- Ogni NFT è unico
- Ogni NFT è indivisibile, non è cioè possibile possedere una porzione di NFT
- Ogni NFT possiede un ID univoco, tale cui la coppia (indirizzo contratto, token ID) sia unica all’interno dell’ecosistema Ethereum
Oltre a questo, pone anche delle funzionalità facoltative per i token, ovvero:
- È possibile per ciascun NFT possedere dei metadata specifici
- È possibile definire per una tipologia di NFT un simbolo e un nome, come per gli ERC20
Gli obiettivi primari di questo standard sono due, ovvero:
- Realizzare un’interfaccia comune per l’interazione tra contratti, indipendentemente dalla tipologia di token, e dal contratto che li utilizza
- Definire un’interfaccia comune per permettere ai wallet del futuro di gestire ciascuno di questi token, indipendentemente dalla loro tipologia, come oggi accade con gli ERC20
Come obiettivo secondario, ci si è concentrati nel mantenere l’interfaccia quanto più simile ai token ERC20, dove possibile, per semplificare in primis la vita degli sviluppatori. Ovviamente, laddove vi fossero importanti differenze legate alla fungibilità, delle scelte differenti sono state prese.
Ma cosa definisce lo standard, e quali funzioni potremo svolgere dai nostri wallet?
Definizione dello standard
Stando all’ultima versione pubblicata, le caratteristiche minime da implementare per essere “ERC721 compliant” sono le seguenti. Compatibili con l’ERC20:
- Sarà possibile definire un nome comune del token, questa parte è opzionale
- Sarà possibile definire un simbolo comune del token, anche questa parte è opzionale
- Sarà possibile contare il quantitativo di NFT posseduti da un particolare indirizzo
Le funzionalità invece specifiche dell’NFT sono le seguenti:
- Dato un ID, sarà possibile ricavarne l’indirizzo del proprietario
- Dato un ID ed un destinatario, sarà possibile trasferire la proprietà del token al destinatario
- Dato un ID ed un destinatario, sarà possibile AUTORIZZARE il destinatario a richiedere la proprietà del token
- E quindi, se siete il destinatario, dato quell’ID potrete ricevere la proprietà del token
- Dato un indirizzo ed un indice, sarà possibile ricevere l’ID del token relativo da esso posseduto. Questo può essere utile, ad esempio, all’enumerazione dei token posseduti da un utente
- Dato un ID, sarà possibile ricevere le informazioni relative ad eventuali metadata specifici associati. Questi metadata dovranno essere codificati in forma di URL, e l’URL dovrà utilizzare il protocollo IPFS, HTTP, o in futuro Swarm
Conclusioni
Gli aggiornamenti sul protocollo terminano qui, lo standard sembra essere in via di conclusione, ed è improbabile che vi saranno grossi stravolgimenti.
In un futuro prossimo potremo avere dei wallet generici in grado di gestire delle proprietà personali di ogni tipo, che siano essi dei beni digitali, dei biglietti per eventi, degli oggetti collezionabili, degli item in un videogioco di ruolo, o qualsiasi altra cosa che abbia un valore unico e distinguibile da ciascun altro elemento simile, ed avremo contratti anche complessi in grado di amministrarli. E tutto questo, grazie ai cripto gattini.
Commenti