introduzione

Ethereum è stata fondata da Vitalik Buterin nel 2014, posizionandosi come piattaforma open source per il lancio di applicazioni decentralizzate (DApp). Molte delle motivazioni di Buterin per la creazione di una nuova blockchain derivavano dalla mancanza di flessibilità del protocollo Bitcoin.

Sin dal suo lancio, la blockchain di Ethereum ha attratto sviluppatori, aziende e imprenditori, generando un settore in crescita di utenti che lanciano contratti intelligenti e applicazioni distribuite.

In questo articolo esamineremo lo standard ERC-20, un quadro importante per la creazione di token. Sebbene sia specifico per la rete Ethereum, il framework ha ispirato anche altri standard blockchain, come BEP-2 di Binance Chain.


Qual è lo standard ERC-20?

In Ethereum, un ERC è una richiesta di commenti di Ethereum. Si tratta di documenti tecnici che delineano gli standard per la programmazione su Ethereum. Non devono essere confusi con le proposte di miglioramento dell’Ethereum (EIP), che, come i BIP di Bitcoin, suggeriscono miglioramenti al protocollo stesso. Gli ERC mirano invece a stabilire convenzioni che rendano più semplice l’interazione tra domande e contratti.

Scritto da Vitalik Buterin e Fabian Vogelsteller nel 2015, ERC-20 propone un formato relativamente semplice per i token basati su Ethereum. Seguendo lo schema, gli sviluppatori non hanno bisogno di reinventare la ruota. Possono invece costruire una base già utilizzata in tutto il settore.

Una volta creati, i nuovi token ERC-20 sono automaticamente interoperabili con servizi e software che supportano lo standard ERC-20 (portafogli software, portafogli hardware, scambi, ecc.).

Va notato che lo standard ERC-20 è stato sviluppato in un EIP (nello specifico, EIP-20). Ciò è accaduto un paio d'anni dopo la proposta originale a causa del suo utilizzo diffuso. Tuttavia, anche anni dopo, il nome “ERC-20” è rimasto.


Un breve riepilogo sui token Ethereum

A differenza dell’ETH (la criptovaluta nativa di Ethereum), i token ERC-20 non sono detenuti da conti. I token esistono solo all'interno di un contratto, che è come un database autonomo. Specifica le regole per i token (ovvero nome, simbolo, divisibilità) e mantiene un elenco che mappa i saldi degli utenti sui loro indirizzi Ethereum.

Per spostare i token, gli utenti devono inviare una transazione al contratto chiedendogli di destinare parte del proprio saldo altrove. Ad esempio, se Alice vuole inviare 5.000 BinanceAcademyTokens a Bob, chiama una funzione all'interno dello smart contract BinanceAcademyToken chiedendogli di farlo.


Users interacting with a smart contract


La sua chiamata è contenuta in quella che sembra essere una normale transazione Ethereum che paga 0 ETH al contratto token. La chiamata è inclusa in un campo aggiuntivo nella transazione, che specifica cosa vuole fare Alice: nel nostro caso, trasferire i token a Bob.

Anche se non sta inviando ether, deve comunque pagare una commissione in esso denominata per includere la sua transazione in un blocco. Se non ha ETH, deve ottenerne alcuni prima di trasferire i token.

Ecco un esempio reale di quanto sopra su Etherscan: qualcuno sta effettuando una chiamata al contratto BUSD. Puoi vedere che i token sono stati trasferiti e che è stata pagata una commissione, anche se il campo Valore mostra che sono stati inviati 0 ETH.

Ora che siamo al passo con i tempi, diamo uno sguardo dietro il cofano per comprendere meglio la struttura di un tipico contratto ERC-20.


Come vengono creati i token ERC-20?


Illustration of an ERC-20 token being created


Per essere conforme a ERC-20, il contratto deve includere sei funzioni obbligatorie: totalSupply, saldoOf, trasferimento, trasferimentoDa, approvazione e indennità. Inoltre, è possibile specificare funzioni opzionali, come nome, simbolo e decimale. Potrebbe essere chiaro cosa fanno queste funzioni dai loro nomi. In caso contrario, non preoccuparti: li analizzeremo.

Di seguito sono riportate le funzioni così come appaiono nel linguaggio Solidity appositamente creato da Ethereum.


fornitura totale

la funzione totalSupply() restituisce la visualizzazione pubblica (uint256)

Quando chiamata da un utente, la funzione di cui sopra restituisce la fornitura totale di token contenuta nel contratto.


equilibrio di

funzione saldoDi(indirizzo_proprietario) visualizzazione pubblica restituisce (saldo uint256)

A differenza di totalSupply, balanceOf accetta un parametro (un indirizzo). Quando viene chiamato, restituisce il saldo dei token posseduti da quell'indirizzo. Ricorda che gli account sulla rete Ethereum sono pubblici, quindi puoi interrogare il saldo di qualsiasi utente purché ne conosca l'indirizzo.


trasferimento

trasferimento funzione (indirizzo _to, uint256 _valore) ritorni pubblici (esito bool)

transfer trasferisce opportunamente i token da un utente a un altro. Qui fornisci l'indirizzo a cui desideri inviare e l'importo da trasferire.

Quando viene chiamato, il trasferimento attiva qualcosa chiamato evento (trasferimento di eventi, in questo caso), che sostanzialmente dice alla blockchain di includere un riferimento ad esso.


trasferito da

funzione transferFrom(indirizzo _from, indirizzo _to, uint256 _valore) pubblico restituisce (esito bool)

La funzione transferFrom è una pratica alternativa al trasferimento che consente un po' più di programmabilità nelle applicazioni decentralizzate. Come il trasferimento, viene utilizzato per spostare i token, ma tali token non devono necessariamente appartenere alla persona che chiama il contratto.

In altre parole, puoi autorizzare qualcuno (o un altro contratto) a trasferire fondi per tuo conto. Un possibile caso d'uso prevede il pagamento di servizi basati su abbonamento, in cui non si desidera inviare manualmente un pagamento ogni giorno/settimana/mese. Invece, lasci semplicemente che un programma lo faccia per te.

Questa funzione attiva lo stesso evento del trasferimento.


approvare

la funzione approva(indirizzo_spender, uint256_valore) restituisce pubblici (successo bool)

approvare è un'altra funzione utile dal punto di vista della programmabilità. Con questa funzione puoi limitare il numero di token che uno smart contract può prelevare dal tuo saldo. Senza di esso, corri il rischio che il contratto non funzioni correttamente (o venga sfruttato) e che ti rubino tutti i fondi.

Prendiamo di nuovo il nostro esempio di modello di abbonamento. Supponiamo che tu abbia un'enorme quantità di BinanceAcademyTokens e desideri impostare pagamenti ricorrenti settimanali su una DApp in streaming. Sei impegnato a leggere i contenuti di Binance Academy giorno e notte, quindi non vuoi prenderti il ​​tempo ogni settimana per creare una transazione manualmente.

Hai un enorme saldo di BinanceAcademyTokens, che supera di gran lunga quello necessario per pagare l'abbonamento. Per evitare che la DApp li esaurisca tutti, puoi impostare un limite con approva. Supponiamo che il tuo abbonamento costi un BinanceAcademyToken a settimana. Se limiti il ​​valore approvato a venti token, potresti ricevere il pagamento automatico dell'abbonamento per cinque mesi.

Nel peggiore dei casi, se la DApp tenta di prelevare tutti i tuoi fondi o se viene rilevato un bug, puoi perdere solo venti token. Potrebbe non essere l’ideale, ma è sicuramente più allettante che perdere tutte le tue partecipazioni.

Quando viene chiamato, approve attiva l'evento di approvazione. Come l'evento di trasferimento, scrive i dati sulla blockchain.


indennità

indennità funzione (indirizzo_proprietario, indirizzo_spender) restituzione della visualizzazione pubblica (uint256 rimanenti)

l'indennità può essere utilizzata insieme ad approvare. Quando hai concesso a un contratto il permesso di gestire i tuoi token, potresti usarlo per verificare quanti ne puoi ancora ritirare. Ad esempio, se il tuo abbonamento ha esaurito dodici dei venti token approvati, la chiamata alla funzione di indennità dovrebbe restituirne un totale di otto.


Le funzioni opzionali

Le funzioni precedentemente discusse sono obbligatorie. D’altra parte, non è necessario includere nome, simbolo e decimale, ma possono rendere il tuo contratto ERC-20 un po’ più carino. Rispettivamente, ti consentono di aggiungere un nome leggibile dall'uomo, impostare un simbolo (ad esempio ETH, BTC, BNB) e specificare per quante cifre decimali sono divisibili i token. Ad esempio, i token utilizzati come valute possono trarre maggiori vantaggi dall’essere più divisibili rispetto a un token che rappresenta la proprietà di una proprietà.


Dai un'occhiata a questo esempio su GitHub per vedere questi elementi in un contratto reale.


Cosa possono fare i token ERC-20?


Illustration of various uses of ERC-20 tokens


Mettendo insieme tutte le funzioni di cui sopra, abbiamo un contratto ERC-20. Possiamo interrogare la fornitura totale, controllare i saldi, trasferire fondi e dare autorizzazioni ad altre DApp per gestire i token per noi.

Gran parte del fascino dei token ERC-20 è la loro flessibilità. Le convenzioni stabilite non limitano lo sviluppo, quindi le parti possono implementare funzionalità aggiuntive e impostare parametri specifici in base alle proprie esigenze.


Stablecoin

Le stablecoin (token ancorati alle valute legali) utilizzano spesso lo standard dei token ERC-20. La transazione sul contratto BUSD a cui abbiamo fatto riferimento in precedenza è un esempio e la maggior parte delle principali stablecoin sono disponibili anche in questo formato.

Per una tipica stablecoin fiat-backed, un emittente detiene riserve di euro, dollari, ecc. Quindi, per ogni unità della propria riserva, emette un token. Ciò significa che se 10.000 dollari fossero rinchiusi in un caveau, l’emittente potrebbe creare 10.000 token, ciascuno riscattabile per 1 dollaro.

Questo è abbastanza facile da implementare in Ethereum, tecnicamente parlando. Un emittente lancia semplicemente un contratto con 10.000 token. Quindi, li distribuiranno agli utenti con la promessa che potranno successivamente riscattare i token per un importo proporzionato di valuta fiat.

Gli utenti possono fare una serie di cose con i loro token: possono acquistare beni e servizi o utilizzarli nelle DApp. In alternativa, potrebbero richiedere che l’emittente li scambi immediatamente. In tal caso, l'emittente brucia i token restituiti (rendendoli inutilizzabili) e ritira la quantità corretta di fiat dalle proprie riserve.

Il contratto che regola questo sistema, come già accennato, è relativamente semplicistico. Tuttavia, il lancio di una stablecoin richiede molto lavoro su fattori esterni come la logistica, la conformità normativa, ecc.


Token di sicurezza

I token di sicurezza sono simili alle stablecoin. A livello contrattuale, entrambi potrebbero addirittura essere identici poiché funzionano allo stesso modo. La distinzione avviene a livello dell’emittente. I token di sicurezza rappresentano titoli, come azioni, obbligazioni o beni fisici. Spesso (anche se non è sempre così), concedono al titolare una sorta di partecipazione in un’azienda o in un bene.


Gettoni di utilità

I token di utilità sono forse i tipi di token più comuni trovati oggi. A differenza delle due offerte precedenti, non sono supportate da nulla. Se i token garantiti da asset sono come le azioni di una compagnia aerea, allora gli utility token sono come i programmi frequent flyer: svolgono una funzione, ma non hanno alcun valore esterno. I token di utilità possono soddisfare una miriade di casi d'uso, fungendo da valuta di gioco, carburante per applicazioni decentralizzate, punti fedeltà e molto altro.


➠ Vuoi iniziare con la criptovaluta? Acquista etere su Binance!


Puoi estrarre token ERC-20?

Puoi estrarre ether (ETH), ma i token non sono minabili: diciamo che vengono coniati quando ne vengono creati di nuovi. Quando viene lanciato un contratto, gli sviluppatori distribuiscono la fornitura secondo i loro piani e la tabella di marcia.

In genere, ciò avviene tramite un'offerta iniziale di moneta (ICO), un'offerta iniziale di scambio (IEO) o un'offerta di token di sicurezza (STO). Potresti imbatterti in variazioni di questi acronimi, ma questi concetti sono abbastanza simili. Gli investitori inviano ether all'indirizzo del contratto e, in cambio, ricevono nuovi token. Il denaro raccolto viene utilizzato per finanziare l’ulteriore sviluppo del progetto. Gli utenti si aspettano di poter utilizzare i propri token (immediatamente o in un secondo momento) o rivenderli a scopo di lucro man mano che il progetto si sviluppa.

La distribuzione dei token non deve essere automatizzata. Molti eventi di crowdfunding consentono agli utenti di pagare con una gamma di valute digitali diverse (come BNB, BTC, ETH e USDT). I rispettivi saldi vengono quindi assegnati agli indirizzi forniti dagli utenti.


Pro e contro dei token ERC-20

Pro dei token ERC-20

Fungibile

I token ERC-20 sono fungibili: ogni unità è intercambiabile con un'altra. Se possedessi un BinanceAcademyToken, non avrebbe importanza quale token specifico avessi. Potresti scambiarlo con quello di qualcun altro e sarebbero comunque funzionalmente identici, proprio come i contanti o l’oro.

Questo è l'ideale se il tuo token mira a essere una valuta di qualche tipo. Non vorrai unità individuali con tratti distinguibili, il che le renderebbe non fungibili. Ciò potrebbe far sì che alcuni token diventino più o meno preziosi di altri, compromettendone lo scopo.


Flessibile

Come abbiamo esplorato nella sezione precedente, i token ERC-20 sono altamente personalizzabili e possono essere adattati a molte applicazioni diverse. Ad esempio, possono essere utilizzati come valuta di gioco, in programmi di punti fedeltà, come oggetti da collezione digitali o anche per rappresentare opere d'arte e diritti di proprietà.


Popolare

La popolarità dell’ERC-20 nel settore delle criptovalute è un motivo molto convincente per utilizzarlo come modello. Esistono numerosi scambi, portafogli e contratti intelligenti già compatibili con i token appena lanciati. Inoltre, il supporto e la documentazione degli sviluppatori sono abbondanti.


Contro dei token ERC-20

Scalabilità

Come con molte reti di criptovaluta, Ethereum non è immune ai problemi della crescita. Nella sua forma attuale, non si adatta bene: provare a inviare una transazione nelle ore di punta comporta commissioni elevate e ritardi. Se lanci un token ERC-20 e la rete diventa congestionata, la sua usabilità potrebbe risentirne.

Questo non è un problema esclusivo di Ethereum. Piuttosto, è un compromesso necessario in sistemi distribuiti sicuri. La comunità prevede di affrontare questi problemi nella migrazione a Ethereum 2.0, che implementerà aggiornamenti come Ethereum Plasma ed Ethereum Casper.

Scopri di più sui problemi di scalabilità in Scalabilità Blockchain: Sidechain e canali di pagamento.


Fregature

Sebbene non sia un problema con la tecnologia in sé, la facilità con cui un token può essere lanciato potrebbe essere considerata uno svantaggio per alcuni aspetti. Ci vuole uno sforzo minimo per creare un semplice token ERC-20, il che significa che chiunque potrebbe farlo, nel bene e nel male.

Pertanto, dovresti stare attento a ciò in cui stai investendo. Esistono numerosi schemi piramidali e Ponzi mascherati da progetti blockchain. Fai le tue ricerche prima di investire per giungere alle tue conclusioni sulla legittimità di un'opportunità.

ERC-20, ERC-1155, ERC-223, ERC-721: qual è la differenza?

ERC-20 è stato il primo (e, ad oggi, il più popolare) standard per i token Ethereum, ma non è affatto l’unico. Nel corso degli anni ne sono emersi molti altri, proponendo miglioramenti all’ERC-20 o tentando di raggiungere obiettivi completamente diversi.

Alcuni degli standard meno comuni sono quelli utilizzati nei token non fungibili (NFT). A volte, il tuo caso d'uso trae effettivamente vantaggio dall'avere token univoci con attributi diversi. Se desideri tokenizzare un'opera d'arte, una risorsa di gioco ecc. unica nel suo genere, uno di questi tipi di contratto potrebbe essere più interessante.

Lo standard ERC-721, ad esempio, è stato utilizzato per la popolarissima DApp CryptoKitties. Tale contratto fornisce un'API che consente agli utenti di coniare i propri token non fungibili e di codificare i metadati (immagini, descrizioni, ecc.).

Lo standard ERC-1155 potrebbe essere visto come un miglioramento sia di ERC-721 che di ERC-20. Delinea uno standard che supporta sia token fungibili che non fungibili nello stesso contratto.

Altre opzioni come ERC-223 o ERC-621 mirano a migliorare l'usabilità. Il primo implementa misure di salvaguardia per prevenire trasferimenti accidentali di token. Quest'ultimo aggiunge funzioni extra per aumentare e diminuire l'offerta di token.

Per ulteriori informazioni sull'argomento NFT, assicurati di consultare Una guida agli oggetti da collezione crittografici e ai token non fungibili (NFT).


Pensieri conclusivi

Lo standard ERC-20 domina da anni lo spazio delle criptovalute e non è difficile capirne il motivo. Con relativa facilità, chiunque può implementare un semplice contratto per adattarsi a un'ampia gamma di casi d'uso (token di utilità, stablecoin, ecc.). Detto questo, l’ERC-20 non dispone di alcune delle funzionalità portate in vita da altri standard. Resta da vedere se i successivi tipi di contratto prenderanno il suo posto.