Autore: Ash Li, Noah Ho

Fonte: https://www.spectrumlab.io/zh/reports/erc6551%E7%95%B6nft%E7%A2%B0%E4%B8%8A%E5%90%88%E7%B4%84%E9% 8C%A2%E5%8C%85

Le discussioni sul protocollo ERC-6551 si stanno gradualmente riscaldando nella comunità. Questo protocollo offre un enorme potenziale di espansione a NFT. ERC-6551 crea un portafoglio contrattuale unico per ogni NFT tramite un conto Token Bond (TBA), consentendogli di detenere risorse e registrare le azioni correlate. Ciò crea la possibilità di verificare l'identità dei token non fungibili (NFT) e degli NFT combinati. Scavando più a fondo, possiamo scoprire che ERC-6551 fornisce in realtà un portafoglio completamente funzionale per NFT e la "chiave" di questo portafoglio è l'NFT stesso. Questo articolo esaminerà la cronologia dello sviluppo standard di NFT e tratterà i precedenti tentativi di espandere NFT. Poiché il nucleo di TBA è il portafoglio contrattuale, forniremo anche una breve introduzione al portafoglio contrattuale. Infine, approfondiremo i dettagli di implementazione del protocollo e le sue potenziali applicazioni.

1. Storia e situazione attuale degli standard NFT

In quanto speciale criptovaluta e risorsa artistica digitale, NFT fornisce un nuovo vettore digitale per le opere d'arte ed espande gli scenari applicativi della tecnologia blockchain. A differenza dei tradizionali token fungibili, ogni NFT è unico e associato a metadati specifici, come opere d'arte, oggetti di gioco, musica e altri materiali elettronici. Pertanto, NFT può essere utilizzato come certificato di proprietà di dati elettronici che le persone possono raccogliere o scambiare. Il 3 maggio 2014, l'artista digitale Kevin McCoy ha creato la prima opera NFT conosciuta "Quantum". È un ottagono pixelato fatto di varie forme, reso in modo psichedelico. Tuttavia, è stato solo con l'emergere di ERC-721 (Ethereum Request for Comments 721) che NFT ha avuto veramente uno standard unificato, offrendo agli sviluppatori la comodità di applicarlo in diversi progetti.

ERC-721

ERC-721 è strettamente legato alla storia dello sviluppo di CryptoPunks. CryptoPunks è uscito nel 2017 e include 10.000 immagini pixel art uniche da 24x24. È il suo successo che ha attirato l'attenzione diffusa da parte degli sviluppatori e della comunità, facendo sì che sempre più persone si rendessero conto dell'enorme potenziale di NFT. Da allora, è diventato il modello per molti progetti NFT e ha portato alla formulazione dello standard ERC-721. Lo standard è stato fondato da Dieter Shirley, CTO di CryptoKitties. Nel gennaio 2018, William Entriken, Dieter Shirley, Jacob Evans e Nastassia Sachs hanno proposto congiuntamente lo standard ERC-721. Questo standard di token non fungibili implementa l'ABI relativo ai token nei contratti intelligenti, gettando le basi per la creazione, la gestione e il trasferimento di risorse digitali uniche su Ethereum, aprendo un nuovo capitolo agli artisti, ai collezionisti e al mercato dell'arte digitale.

Le caratteristiche principali di ERC-721 sono le seguenti:

  • Unicità: a differenza dei token ERC-20 (che sono fungibili e ogni token è identico a ogni altro token), ogni token ERC-721 è unico.

  • Proprietà e trasferimento: questo standard di token consente di determinare il proprietario di un determinato token e consente al proprietario o alla persona approvata di trasferire il token.

  • Associazione metadati: consente di associare metadati a ciascun token, che possono includere un'immagine, una descrizione o altre proprietà rilevanti del token.

Per garantire il suo status di standard, ERC-721 definisce i seguenti metodi ed eventi chiave:

  • Metodi come balanceOf(),ownerOf(), approve(), getApproved(), setApprovalForAll(), isApprovedForAll(), transferFrom() e safeTransferFrom().

  • ed eventi come Transfer() e Approval().

In breve, lo standard ERC-721 fornisce un meccanismo per asset unici su Ethereum, garantendo l'unicità e la proprietà di ciascun asset e consentendone la verifica, lo scambio e la gestione. ERC-721, lo standard per i token non fungibili, ha ottenuto un successo esplosivo nei campi dell'arte digitale e degli oggetti da collezione. ERC-721 definisce in modo importante

Tuttavia, sebbene abbia portato molti progetti famosi nelle applicazioni NFT, esistono ancora alcune limitazioni, ad esempio non possono operare come agenti o essere direttamente correlati ad altre risorse on-chain. Per risolvere questi problemi la comunità ha proposto una serie di estensioni e nuovi standard, i più rappresentativi dei quali sono EIP3664 e EIP3525.

ERC-3664

Già nel maggio 2021, il team DRepublic ha proposto EIP-3664, un protocollo di estensione degli attributi NFT. In modo ingegnoso, questa proposta risolve i limiti degli standard NFT tradizionali come ERC-721 o ERC-1155, come l’insufficiente espressività degli attributi, la difficoltà di integrazione tra NFT e l’archiviazione centralizzata degli attributi.

Nello specifico, EIP-3664 non richiede modifiche agli standard ERC-721 ed ERC-1155 esistenti. Aggiunge dinamicamente proprietà all'NFT utilizzando la funzione di callback dell'interfaccia IERC721Receiver o IERC1155Receiver nel metodo mint dell'NFT. Oppure si può farlo riscrivendo il metodo di fusione. Utilizzando questo protocollo, un NFT può avere un numero qualsiasi di attributi ad esso associati senza limiti.

In EIP-3664, tutti gli attributi implementano l'interfaccia IERC3664. Gli attributi di base includono diversi campi di base come ID, nome, simbolo, indirizzo URI, saldo, ecc., che vengono utilizzati per descrivere i metadati di NFT. Con EIP-3664, le estensioni degli attributi NFT diventano più flessibili e personalizzabili. Fornisce un metodo di implementazione standardizzato per le funzioni degli attributi NFT e si integra perfettamente con l'ecosistema NFT esistente.

ERC-3525

EIP-3525 introduce token semi-fungibili (SFT), che possono essere visti come risorse tra token fungibili (FT) e token non fungibili (NFT). Similmente agli NFT, i token SFT possono essere trasferiti intatti da un indirizzo di portafoglio a un altro. Ma analogamente a FT, SFT consente di trasferire solo una parte del valore tra token diversi. Ad esempio, è possibile trasferire solo una parte della "vita" di un terreno su un altro pezzo di terreno. Indubbiamente, SFT supera FT nella personalizzazione e supera NFT in efficienza.

ERC3525 consente la costruzione di strutture SFT multi-livello, simili alle matrioske russe, per realizzare mondi virtuali più complessi e definire regole di interazione tra i diversi livelli. Utilizzando ERC3525, NFT può trasportare qualsiasi valuta digitale. Ciò significa che i token con valore economico possono essere incorporati nella NFT per ottenere funzioni e metodi di interazione più ricchi. Ad esempio, una SFT può contenere una NFT che porta valore e altri token possono essere nidificati all'interno della NFT. Attraverso ERC3525, gli sviluppatori possono definire le regole e la logica di SFT attraverso contratti intelligenti e personalizzare specifiche regole comportamentali e regole di transazione. Queste caratteristiche rendono ERC3525 uno degli standard più importanti nel campo NFT, offrendo agli sviluppatori e alle parti coinvolte nel progetto più spazio per la creatività.

2.ERC-6551

introdurre

Al fine di migliorare la scalabilità e la praticità di NFT, la proposta ERC-6551 mira a dare a ciascun NFT gli stessi diritti e interessi degli utenti di Ethereum. Ciò significa che NFT non solo può conservare risorse, ma anche registrare la cronologia delle transazioni, aumentando notevolmente il suo ambito di applicazione. Secondo questa proposta, i titolari di NFT possono creare un portafoglio contrattuale esclusivo chiamato TBA (Token Bond Account) affinché i loro NFT possano eseguire varie operazioni sulla catena. Ciò si ottiene definendo un registro unificato – Registro. Questo registro è dedicato all'assegnazione di indirizzi di conti smart contract univoci e fissi a tutti gli NFT e a garantire che il controllo dell'account rimanga interamente nelle mani del titolare dell'NFT. In particolare, questa proposta è pienamente compatibile con gli standard ERC-721 o 1155 esistenti senza alcuna modifica, adattandosi anche alla maggior parte delle infrastrutture che supportano gli account Ethereum.

Questa innovazione fornisce a NFT le stesse funzioni dei conti Ethereum, aprendo molti nuovi scenari applicativi per NFT. Ad esempio, asset complessi nella realtà, come personaggi di giochi di ruolo, automobili composte da più parti, portafogli di investimento diversificati e persino tessere associative, possono essere tutti convertiti in moduli NFT attraverso questa proposta. Inoltre, questa proposta non solo è compatibile con tutti gli standard di asset on-chain esistenti, ma offre anche possibilità di espansione per nuovi standard di asset in futuro.

Come accennato in precedenza, ERC-6551 consente la creazione di un portafoglio dedicato alle interazioni on-chain per ciascun NFT. Questo tipo di portafoglio è diverso dai portafogli che utilizziamo comunemente su piattaforme come Metamask. In realtà è un portafoglio a contratto, ovvero un contratto intelligente distribuito sulla rete Ethereum. Prima di approfondire come viene implementato, comprendiamo innanzitutto le principali differenze tra questi due portafogli.

Conto contrattuale

Un conto Ethereum è un'entità che detiene un saldo di Ethereum (ETH) e può inviare transazioni sulla rete Ethereum. Gli account possono essere controllati dagli utenti o distribuiti come contratti intelligenti.

I conti in Ethereum hanno 4 campi:

  • nonce: contatore utilizzato per visualizzare il numero di transazioni inviate dall'account esterno o il numero di contratti creati dall'account contrattuale. Ogni account può eseguire solo una transazione con un determinato nonce per prevenire attacchi di replay, che si riferiscono alla trasmissione e alla riesecuzione di una transazione firmata più volte.

  • saldo: modello contabile del saldo, il numero di Wei posseduti da questo indirizzo. Wei è l'unità di misura di Ethereum.

  • codeHash: questo hash rappresenta il codice dell'account sulla Ethereum Virtual Machine (EVM). Gli account a contratto hanno frammenti di codice programmati che possono eseguire diverse azioni. Questo codice EVM viene eseguito se l'account riceve una chiamata di messaggio. A differenza di altri campi dell'account, questo non può essere modificato. Tutti i frammenti di codice vengono salvati con l'hash corrispondente nel database statale per il successivo recupero. Questo valore hash è chiamato codeHash. Per gli account di proprietà esterna, il campo codeHash è l'hash della stringa vuota.

  • storageRoot: hash di archiviazione. Merkle Patricia trie hash a 256 bit del nodo radice che ha codificato il contenuto memorizzato dell'account (una mappa di valori interi a 256 bit) e codificato come trie come mappa dell'hash Keccak a 256 bit da intero a 256 bit chiavi per la codifica RLP valore intero a 256 bit. Questo Trie codifica un hash del contenuto dello spazio di archiviazione di questo account ed è vuoto per impostazione predefinita.

Esistono due tipi di conti Ethereum: conti esterni (chiavi private gestite dall'utente) e conti contrattuali.

  1. Account di proprietà esterna (EOA): controllati dalla chiave privata, il suo codeHash è vuoto. Tali account possono inviare e ricevere criptovalute e interagire con contratti intelligenti. Il nostro portafoglio Metamask comunemente utilizzato appartiene a questo.

  2. Conto contrattuale (CA): non esiste una chiave privata e il suo codeHash non è vuoto. Si tratta di un contratto intelligente distribuito sulla rete Ethereum che controlla il portafoglio del contratto attraverso account esterni che interagiscono con il contratto.

Esistono portafogli di contratto standard in CA, come i portafogli astratti di account ERC4337, e portafogli di tipo AA nativi, come le catene ZkSync e StarkNet, in cui non ci sono transazioni tradizionali e tutti i conti sono conti di contratto. Attualmente, il portafoglio ha problemi con i diritti di proprietà e di firma. Ad esempio, la chiave privata è difficile da proteggere. Gli utenti perderanno tutte le risorse se perdono la chiave privata. Ci sono anche problemi con l'algoritmo di firma troppo piccolo e l'autorità troppo alto. Inoltre, la commissione di gestione può essere pagata solo in una valuta unica tramite il pagamento ETH.

Senza modificare il livello del protocollo di consenso, può aiutare Ethereum a muoversi nella direzione dell'astrazione dell'account. ERC4337 può realizzare l'aggiornamento dell'astrazione dell'account attraverso contratti intelligenti, dall'avvio originale dell'intera transazione alla sua inclusione nell'intera blockchain è stato aggiornato e modificato ed è stata introdotta UserOperation per descrivere la struttura delle transazioni inviate per conto degli utenti. Bundler impacchetterà le transazioni in questi pool di memoria per ridurre i costi di transazione degli utenti. Lo scenario multi-segno è più completo per ottenere il ripristino sociale , ecc. Aggiornamenti funzionali.

compiere

Secondo lo standard ERC-6551, i titolari di NFT possono implementare un nuovo contratto intelligente, vale a dire TBA, sulla rete Ethereum o su altre blockchain supportate da EVM interagendo con il Register Contract. La proprietà di TBA appartiene al titolare dell'NFT e cambierà con il trasferimento di NFT. Solo il titolare dell'NFT può controllare questo TBA. Il codice del TBA, le sue regole, traggono origine dal bando del Contratto di Attuazione.

Il seguente diagramma mostra come funziona ERC-6551: Supponiamo che un utente sia titolare di NFT e il suo account utente possieda due NFT, n. 123 del contratto A e n. 456 del contratto B. L'account utente interagisce con il registro senza autorizzazione, ovvero il contratto di registro, e inserisce le informazioni NFT e l'indirizzo del contratto per creare un TBA. Quando l'account utente richiama il contratto di registrazione, inserire le informazioni NFT del token n. 123 e l'indirizzo dell'implementazione A (0x321…) e verrà creato l'account del portafoglio del contratto A (0x123…). La sua proprietà appartiene al titolare del token NFT n. 123 e le sue funzioni e regole derivano dalle disposizioni dell'Implementazione A. Quando l'Account Utente richiama nuovamente il contratto di registrazione e modifica il contenuto di input, viene generato un altro TBA. Ma per un NFT specifico e un contratto di implementazione, può esserci un solo TBA corrispondente univoco.

La creazione e il comportamento del TBA dipendono completamente dal contratto di registrazione e dal contratto di implementazione. Le regole di questi contratti determinano le caratteristiche e le funzioni del TBA. EIP-6551 fornisce modelli di codice per questi contratti. Approfondiremo questi modelli nelle sezioni seguenti. Tuttavia, questi modelli non sono le uniche opzioni; il loro codice determina il modo in cui TBA viene distribuito e implementato funzionalmente. Ciò offre agli sviluppatori un'ampia gamma di possibilità di espansione. Ad esempio, un contratto di registrazione può stabilire quali NFT possono essere registrati utilizzando il contratto di registrazione. Il contratto di implementazione può definire le funzioni e le regole del TBA, come impostare il limite giornaliero delle transazioni del TBA o specificare i tipi di asset che può detenere.

Contratto di attuazione

Tutti i TBA creati registrando un contratto possono selezionare il contratto di implementazione che desiderano utilizzare per l'account. Il contratto di implementazione registra le funzioni e le regole dell'account del contratto intelligente. Deve implementare almeno le seguenti funzioni:

eseguireCall(): una funzione utilizzata per eseguire qualsiasi funzione di contratto intelligente che interagisce con un contratto esterno. Ad esempio, per vendere l'asset incluso in un conto legato a un NFT, potrebbe essere necessario richiamare una funzione nel contratto Uniswap. executeCall ti consente di effettuare questa chiamata di funzione per conto del tuo account smart contract, permettendoti di acquistare, vendere/scambiare qualsiasi asset desideri.

token(): una funzione di visualizzazione di sola lettura che restituisce l'identificatore dell'NFT che possiede l'account associato al token. Restituisce l'ID della catena (se l'NFT è sulla rete principale, Polygon, Optimism, ecc.), l'indirizzo del contratto NFT e l'ID del token NFT.

proprietario(): Restituisce l'indirizzo del proprietario dell'NFT che controlla l'account legato al token. Seguendo l'esempio sopra, questo sarebbe l'indirizzo dell'account utente.

nonce(): restituisce il nonce corrente di questo portafoglio smart contract. Ogni transazione andata a buon fine aumenterà il nonce di 1, con un valore iniziale pari a 0.

Infine, pur non essendo una chiamata di funzione, il contratto di implementazione che lega l’account al token deve avere una funzione receiver() per poter ricevere l’asset nativo (come ad esempio ETH) direttamente al suo indirizzo.

Registrare il contratto

Quello che segue è uno smart contract del Registro scritto in linguaggio Solidity:

Questo codice può mostrare che i parametri richiesti per creare un account per un determinato NFT includono l'indirizzo del contratto di esecuzione dell'implementazione, chainId l'id della catena target, tokenContract corrispondente al contratto a cui appartiene l'NFT, tokenId corrispondente all'id a cui appartiene l'NFT NFT appartiene e il valore di offuscamento sale. Per creare un account NFT basato sulla demo Fast Dapp, devi solo inserire l'indirizzo e l'ID del contratto NFT e il resto dei campi viene generato automaticamente. I passaggi sono relativamente semplici.

La proposta ERC-6551 è un nuovo standard Token che è un aggiornamento sovversivo allo standard NFT originale ERC-6551 utilizza un registro senza autorizzazione compatibile con l'NFT ERC-721 esistente. Il registro è un contratto intelligente che funge da factory e directory per i TBA. Chiunque può creare un TBA per qualsiasi token ERC-721 chiamando una funzione sul registro e pagando una piccola tariffa. Lo smart contract del registro ha due funzioni:

createAccount: distribuisce un nuovo account associato a token per un determinato NFT ERC-721 e un'implementazione specifica.

account: una funzione di visualizzazione di sola lettura che restituisce l'indirizzo dell'account associato al token per un determinato NFT ERC-721 e viene fornita la sua implementazione.

potenziali applicazioni

Dopo l’incidente di Azuki, gli NFT a immagine statica singola sono diventati significativamente meno attraenti, causando una diminuzione del valore di molti progetti importanti. Tuttavia, gli NFT altamente interattivi e componibili potrebbero essere la chiave per la ripresa del mercato. Dai giochi blockchain, alla musica, al DID al metaverso, questi campi sono pieni di potenziale infinito.

Gli NFT sono più che semplici risorse; hanno anche una propria identità on-chain e proprietà del contenitore e possono interagire con applicazioni decentralizzate (Dapps). Ciò significa che tutte le interazioni con l’NFT vengono registrate direttamente sull’NFT stesso, anziché sul conto del titolare. Inoltre, poiché gli NFT si basano su contratti intelligenti, il loro comportamento e le loro interazioni possono essere definiti e controllati attraverso regole contrattuali, garantendo flessibilità e sicurezza.

Il protocollo ERC-6551 ha apportato cambiamenti rivoluzionari nel campo NFT, spostando l'attenzione dai portafogli degli utenti all'NFT stesso, fornendo nuove possibilità per transazioni, giochi, tracciabilità e governance. Con l’ulteriore sviluppo di NFT, questo protocollo ci condurrà in un’era digitale più personalizzata, interattiva e significativa.

Considerare le seguenti quattro potenziali direzioni applicative:

  1. Packaging di asset: NFT può fungere da contenitore di asset, consentendo di impacchettare e scambiare più asset in un unico NFT. Ad esempio, un NFT di un album musicale può contenere più NFT di brani oppure un NFT di una raccolta d'arte può contenere più NFT di opere d'arte. Ciò non solo rende la raccolta più sistematica, ma riduce anche le tariffe del gas durante gli scambi.

  2. Portafoglio di investimenti: NFT può essere utilizzato come strumento di gestione patrimoniale, consentendo agli utenti di archiviare e gestire più token in un TBA. Inoltre, i titolari di NFT possono anche autorizzare gestori di terze parti a condurre transazioni patrimoniali e definire chiaramente le autorizzazioni del gestore nei contratti intelligenti per garantire la sicurezza delle risorse.

  3. Gestione dell'identità NFT: NFT può registrare tutte le sue attività sulla catena, rendendola una vera identità on-chain. Gli utenti possono utilizzare un singolo portafoglio ENS per rappresentare se stessi e utilizzare diversi TBA per rappresentare i propri ruoli in diverse comunità o applicazioni.

  4. NFT modulari: un NFT master può generare un TBA che memorizza i suoi NFT componenti. Ad esempio, nel gioco, il personaggio NFT può essere equipaggiato con vari equipaggiamenti NFT. Ciò non solo rende più possibile la realizzazione del Metaverso, ma può anche essere combinato con l'intelligenza artificiale per creare personaggi NPC più realistici.

In breve, il futuro degli NFT è pieno di infinite possibilità. Dalla gestione delle risorse alla verifica dell’identità fino alla progettazione di giochi modulari, giocheranno un ruolo chiave nel mondo digitale.