Una guida approfondita allo standard ERC20 dei token (inclusa la creazione di contratti di token ERC20)

I tokens ERC-20 sono criptovalute che funzionano sulla blockchain di Ethereum. Sono alimentati da contratti intelligenti della rete Ethereum e li utilizzano per effettuare transazioni e interagire con i relativi indirizzi e portafogli. Allo stesso tempo, i token ERC-20 hanno i propri simboli, tassi di fornitura, prezzo e altri parametri. Ad esempio, sebbene EOS sia un token Ethereum, ha una capitalizzazione di mercato di $11,5 miliardi, il che non si può dire per la maggior parte delle criptovalute ottenute tramite il mining.

ERC20 became the de-facto home of DeFi

Grazie all’accessibilità dell’architettura ERC20, è piuttosto facile creare e distribuire il proprio token e distribuirlo (ad esempio, durante un ICO). All’interno delle ICO e altri tipi di offerte, vengono organizzate presale per attirare finanziamenti dagli investitori. Il processo di creazione dei token è chiamato TGE, acronimo di Token Generation Event. I progetti emettono un certo numero di token ERC-20 e li vendono a tutti i partecipanti a una presale in cambio di bitcoin o ETH.

Va notato che, sebbene i token ERC-20 siano criptovalute a tutti gli effetti che possono finire su popolari borse criptovalute, non significa necessariamente che ciò accadrà. Un token ERC-20 potrebbe avere successo nel mondo delle criptovalute o rimanere per sempre nel bilancio del suo creatore.

Usi pratici di ERC20

Inizialmente, i token venivano utilizzati durante il finanziamento iniziale per lo sviluppo di un’azienda. Erano asset digitali con obbligazioni fisse. I token venivano acquistati direttamente dai creatori e non potevano essere acquistati o venduti altrove.

La ICO di Ethereum si è svolta nel 2014 e ha raccolto più di $16 milioni. Ethereum ha attirato l’attenzione di rappresentanti di molte industrie, poiché può essere utilizzato per ottimizzare e digitalizzare processi aziendali inefficienti in futuro.

Un token ERC-20 può essere considerato una criptovaluta se può essere scambiato su borse criptovalute. I token ERC-20 possono anche evolvere in interi ecosistemi con le proprie blockchain. Alcuni esempi di token ERC-20 che hanno creato la propria blockchain sono Tron ed EOS. Tron ha creato la propria blockchain a causa della sua visione: i giochi basati su blockchain stanno diventando sempre più popolari ogni giorno. EOS è un concorrente di Ethereum, principalmente utilizzato per scambi decentralizzati e gioco d’azzardo.

Un token Ethereum può essere utilizzato come un asset e una forma di denaro; può anche rappresentare beni di qualsiasi tipo e confermare l’appartenenza a un programma o servire come mezzo per confermare la proprietà. Qualsiasi asset del mondo reale, fisico o meno, può essere tokenizzato e scambiato su borse criptovalute.

Moeda Loyalty Points (MDA) is an ERC 20 token powering the MOEDA ecosystem

I token ERC-20 più popolari

La blockchain Ethereum è la casa de facto delle criptovalute, ospitando la maggior parte delle più grandi altcoin di oggi. I token più famosi sono i token ERC-20, e la maggior parte delle DApp nell’ecosistema delle criptovalute è costruita sulla rete Ethereum. Alcune stablecoin standard ERC-20 sono conosciute per dominare il mercato delle criptovalute.

USDC

Oltre a USDT di Tether, una delle più grandi stablecoin ERC-20 nella rete Ethereum è USDC.

USDC by Circle is the second top-rated ERC20 stablecoin

Lanciato da Coinbase in collaborazione con Circle, USDC è comunemente considerato un’alternativa più affidabile a USDT da parte di coloro che hanno una visione critica su Tether.

Lo standard BEP20 di Binance è ospitato sulla Binance Smart Chain, che a sua volta deriva dalla rete Ethereum. Pertanto, i due token nativi di Binance, BNB e BUSD, possono essere tecnicamente considerati token Ethereum.

Un unico standard, facilità di creazione e compatibilità con le piattaforme hanno portato alla diffusione diffusa dei token ERC-20. Di seguito sono riportati alcuni esempi di token popolari che utilizzano il protocollo ERC-20.

USDT Tether

Tether (USDT) is one of the most popular ERC-20 stablecoins

Una stablecoin legata al dollaro USA, USDT, è stata emessa da Tether Limited nel 2015. Basata sullo standard ERC-20, è diventata da allora la stablecoin di riferimento per la maggior parte dei trader e delle borse criptovalute in tutto il mondo. Il valore di USDT Tether è garantito dai dollari statunitensi nei conti dell’azienda.

Altre valute fiat hanno le proprie stablecoin. Ad esempio, Binance GBP è supportato dalla sterlina britannica, e STASIS è supportato dall’euro.

Il vecchio sistema si basava sul protocollo Omni basato sulla blockchain di Bitcoin. A causa delle commissioni elevate e dei lunghi tempi di conferma, l’azienda ha deciso di migrare alla blockchain di Ethereum.

Wrapped Bitcoin e Wrapped Ether

Wrapped Ether is basically ETH translated into the ERC20 environment

ETH, o ether, è la valuta di base di Ethereum. WETH è “wrapped ETH” o “Ether in una shell”. È stato introdotto perché ETH è apparso prima dell’adozione dello standard ERC-20 e quindi non era conforme ad esso.

Piattaforme decentralizzate basate su Ethereum scambiano token tra utenti basati su contratti intelligenti. Perché avvenga uno scambio, i token devono appartenere allo stesso standard.

WETH viene utilizzato per scambiare token ETH per il corrispondente protocollo ERC-20.

Molti utenti della rete, comprese grandi aziende con capitale, sono interessati allo sviluppo della valuta di base.

Tra di loro:

  • il sistema Wrapped Ether, che possiede più di 2 milioni di ETH, equivalenti a $380 milioni;
  • una delle principali borse di criptovalute, Binance, con $370 milioni;
  • la borsa Bitfinex, con meno di 2 milioni di ETH.
Wrapped Bitcoin (WBTC) is the ERC20 equivalent of BTC

Anche Bitcoin ha una versione ERC-20 chiamata WBTC. Il BTC originale è il token nativo della blockchain di Bitcoin e non è compatibile con Ethereum. Come il WETH, il WBTC è stato creato per risolvere questo problema: è sempre ancorato al prezzo di Bitcoin ed è completamente compatibile con la rete Ethereum. I token wrapped vengono utilizzati principalmente per trasferire token tra reti diverse che non sono mutuamente compatibili.

LCS

LocalCoinSwap è una piattaforma decentralizzata che offre agli utenti l’opportunità di acquistare e vendere criptovalute direttamente utilizzando qualsiasi metodo di pagamento disponibile.

LocalCoinSwap is also an ERC 20 token

LCS consente di trovare un acquirente o un venditore di valuta e di effettuare una transazione senza coinvolgere siti web e portafogli. La piattaforma utilizza un sistema di deposito tradizionale che conserva i fondi in criptovaluta che possono essere scambiati. Quando il pagamento viene confermato da acquirente e venditore, il sistema invia i token all’acquirente. La piattaforma offre anche la possibilità di ricevere dividendi in rapporto 1 a 1 alla fine del trimestre.

Etherscan: La Casa dei Token ERC-20

I contratti dei token ERC-20 possono essere visualizzati su Etherscan.io, il tracker nativo della rete Ethereum.

Etherscan.io is the native tracker for the Ethereum network

Oltre ai loro simboli e brevi descrizioni, è possibile monitorare il loro numero totale in circolazione, la capitalizzazione di mercato (on-chain e circolante), il numero di detentori e i dati relativi al prezzo e alla variazione di prezzo.

All ERC20 tokens can be viewed in the Tokens menu on Etherscan

Per visualizzare tutti i contratti dei token ERC-20 sulla rete Ethereum, è necessario fare clic su “Tokens” nell’angolo in alto a destra e quindi selezionare “ERC20 tokens”. Qui verranno elencati tutti i nuovi token con una capitalizzazione di mercato più o meno competitiva.

Al momento della stesura di questo testo, sono stati deployati almeno 625.000 contratti dei token ERC-20 sulla rete Ethereum. È anche possibile visualizzare altri standard dei token Ethereum qui: ERC721 per i token non fungibili (NFT) e ERC155 per i token multipli.

Il Lato Tecnico di un Token ERC-20

Essenzialmente, i token ERC-20 sono contratti intelligenti sulla blockchain di Ethereum. ERC-20 è uno standard unificato che comprende un insieme di regole di base che un contratto deve seguire. Lo standard garantisce la compatibilità di tutti i token all’interno della rete.

ERC sta per “Ethereum Request for Comments”, e 20 è il suo numero identificativo.

L’ERC-20 è stato concepito nel 2015 ed è diventato universale nel 2017. Prima di esso, tutti i contratti intelligenti erano piuttosto eterogenei, causando problemi di compatibilità tra di essi, e i portafogli dovevano gestire grandi quantità di codice per riconoscere ciascun token specifico.

Token ERC-20 ed EVM

L’EVM (Ethereum Virtual Machine) è un ambiente di calcolo virtuale, un computer distribuito responsabile dell’esecuzione di algoritmi sulla rete Ethereum (contratti intelligenti).

L’EVM è considerata completa di Turing, il che significa che è teoricamente in grado di gestire qualsiasi compito computazionale che può essere eseguito su computer (a patto di disporre di risorse sufficienti).

Come pagamento per l’esecuzione di contratti intelligenti, l’EVM utilizza il “gas”, misurato in ‘gwei’, la frazione più piccola possibile di ETH; il gas è incluso nel costo della transazione. La quantità specifica di gas che l’utente deve pagare dipende dalla complessità dei calcoli effettuati e dal carico di lavoro corrente della blockchain di Ethereum.

I contratti intelligenti che seguono una struttura dati definita sull’EVM vengono utilizzati per creare token ERC-20. Questa struttura dati controlla la denominazione, la distribuzione, la quantità di fornitura e il monitoraggio del token.

ERC20 = Codice?

Molti si chiedono se l’ERC-20 possa essere considerato un codice. La risposta non è esattamente questa: un token ERC-20 funge più da un insieme di linee guida mirate a delineare le regole di base per operare all’interno della rete Ethereum.

Lo standard svolge diverse funzioni, tra cui il monitoraggio di tutte le transazioni, il saldo attuale del token dell’utente, il simbolo del token e i tassi di fornitura totali; lo standard del token ERC-20 garantisce anche la compatibilità di diverse DApp (App decentralizzate) nella rete.

All’interno di un Contratto di Token ERC-20

Il protocollo ERC20 definisce sei funzioni obbligatorie e tre opzionali che devono essere seguite affinché un contratto intelligente funzioni correttamente.

Ogni token deve avere un nome e un simbolo del token (noto anche come ticker). Deve anche specificare i decimali, ovvero quante volte può essere diviso per 10. Di seguito troverai un insieme delle funzioni obbligatorie, che alcuni potrebbero trovare un po’ difficili da comprendere inizialmente:

function () public view returns (uint256);
function balanceOf(address tokenOwner) public view returns (uint);
function allowance(address tokenOwner, address spender)
public view returns (uint);
function transfer(address to, uint tokens) public returns (bool);
function approve(address spender, uint tokens)  public returns (bool);
function transferFrom(address from, address to, uint tokens) public returns (bool); 

Ecco cosa rappresentano queste funzioni:

  • TotalSupply: Il numero totale di token che verranno emessi;
  • BalanceOf: Il saldo dell’account di un proprietario di token;
  • Transfer: Esegue automaticamente trasferimenti di un numero specifico di token a un indirizzo specifico per le transazioni con il token;
  • TransferFrom: Esegue automaticamente trasferimenti di un numero specifico di token da un indirizzo specifico utilizzando il token;
  • Approve: Permette a un autorizzato di prelevare un numero fisso di token da un account specifico, fino a una quantità specifica;
  • Allowance: Restituisce un numero fisso di token da un autorizzato al proprietario;
  • Transfer: Un evento scatenato quando un trasferimento ha successo (un evento);
  • Approval: Un registro di un evento approvato (un evento).

Con l’autorizzazione adeguata, le funzioni di ERC20 consentono a un’entità esterna, ad esempio un’app di portafoglio crittografico, di visualizzare il saldo e trasferire token tra gli utenti.

Ci sono due tipi di eventi riconosciuti dal contratto intelligente:

event Approval(address indexed tokenOwner, address indexed spender,
 uint tokens);
event Transfer(address indexed from, address indexed to,
 uint tokens);

Gli eventi possono essere:

  • invocati
  • emessi

Uno dei due eventi si verifica una volta che un account Ethereum ha concesso a qualcuno il diritto di prelevare token da esso e dopo che i token sono effettivamente stati trasferiti. Secondo lo standard, la funzione ‘transfer’ deve emettere l’evento di Transfer in caso di trasferimento di token riuscito.

function allowance(address owner, address spender) external view returns (uint256);2
 

Lo standard ERC-20 consente a un indirizzo di concedere un’autorizzazione a un altro indirizzo per poter recuperare token da esso. Questo getter restituisce il numero rimanente di token che il beneficiario avrà il permesso di spendere per conto del proprietario. Questa funzione è un getter e non modifica lo stato del contratto e dovrebbe restituire 0 per impostazione predefinita.

Creazione di un Token ERC20

Passaggio 1

  • Scegli un nome, ad esempio, “Best Coin”.
  • Scegli un simbolo, ad esempio, “BEC”.
  • Decidi l’offerta totale di token.
  • Decidi se i token saranno divisibili e, in caso affermativo, quante posizioni decimali saranno il massimo.

Passaggio 2

Deploca il Token

Inserisci i seguenti dati nel contratto intelligente disponibile al link. Scarica entrambi i file .sol. Vai all’editor di Remix. Scarica entrambi i file.

Carica i file con il pulsante Carica (Apri). Seleziona entrambi i file.

Apri NewToken.sol, inserisci i valori necessari tra le parentesi angolari:

totalSupply – numero totale di token

name – il nome completo del token

decimal – il numero di decimali dopo il punto decimale. Tutto è memorizzato solo in numeri interi nei contratti, quindi è necessario specificare il numero di cifre se si desidera poter accreditare un numero non intero di token.

Symbol – un simbolo per gli scambi

  • Buy ads
  • Unplug

Dovrebbe risultare qualcosa del genere:

Salvalo. Rimane da caricare il contratto sulla rete. Ad esempio, installalo nella rete di test Ropsten. Per la distribuzione sarà necessario un client. Utilizziamo MetaMask, che non sa come compilare contratti intelligenti su Solidity, quindi compiliamo prima.

Nella parte destra dell’editor Remix, apri la scheda di compilazione. Per impostazione predefinita, il contratto viene compilato automaticamente. Selezionando il tuo contratto in “Seleziona” e facendo clic su “Dettagli”, puoi visualizzare il bytecode e altre informazioni.

Per distribuirlo, fai clic su “Esegui”, seleziona “Injected Web3” e scegli l’account che utilizzerai per la distribuzione (dovrebbe caricarsi automaticamente se hai MetaMask installato nel browser). Inserisci le informazioni necessarie nei campi (gas, valore) e fai clic su “Crea”.

MetaMask rileva l’azione dalla pagina.

Fai clic su “Invia”. Il tuo contratto è sigillato. La transazione è confermata in MetaMask da un’icona con un documento (che porta alla pagina della transazione) e la scritta “Contratto pubblicato”.

Un contratto intelligente sigillato è un token.

Passaggio 3

Operazioni con il Token

Le transazioni basate su token basate su Ethereum richiedono due portafogli: uno che li ha già (di default, il creatore del contratto, lo standard ERC20) e uno che deve trasferirli.

Esegui operazioni con il nostro token (trasferiscilo, ad esempio). Possiamo farlo o sulla pagina del contratto intelligente etherscan (collegamento in MetaMask) o sulla pagina di Remix.

Il blu qui rappresenta operazioni di lettura, il rosa rappresenta operazioni di scrittura.

Per trasferire token ERC-20, inserisci l’indirizzo del destinatario e la quantità. Dopo di che (e inserendo i dati nella blockchain, naturalmente), puoi verificare il tuo saldo o il saldo del destinatario dei token con l’operazione balanceOf.

Fatto!

Problemi con lo standard ERC20

Ci sono due livelli di problemi con il token ERC20: l’utente finale e lo sviluppatore.

Per gli utenti dei token

Per gli utenti comuni, le inconvenienti più diffuse includono:

  • Bassa capacità – La rete Ethereum è stata congestionata quando le dApp hanno registrato una forte domanda, come CryptoKitties (che da allora si è spostata nella sua blockchain Flow). Quando ciò accade, la rete si rallenta e le transazioni diventano più costose.
  • Transazioni lente – Il tempo di blocco è di circa 14 secondi, quindi le transazioni possono richiedere fino a un minuto per essere elaborate. Questo può essere adeguato per alcuni utilizzi o troppo lento per altri.
  • ETH per i pagamenti delle commissioni – Quando vengono effettuate transazioni che coinvolgono token ERC-20, è necessaria una seconda criptovaluta per pagare le commissioni di transazione. Ciò può aggiungere sia tempo che costo, poiché può comportare l’accumulo di un saldo “dust” su piattaforme diverse.

Per gli sviluppatori di token

I token ERC20 presentano due problemi critici che sono noti per causare perdite finanziarie. Sono:

  1. Mancanza di gestione delle transazioni.

Ci sono due modi per eseguire una transazione nei token ERC20:

  • funzione transfer.
  • meccanismo approve + transferFrom.

Il saldo del token è solo una variabile all’interno del contratto del token.

Una transazione di un token è un’alterazione delle variabili interne del contratto intelligente (il saldo attuale del mittente verrà diminuito, e quello del destinatario verrà aumentato).

La funzione transfer non notificherà al destinatario che è stata effettuata una transazione. Il destinatario non può riconoscere la transazione in arrivo! Ciò può portare a transazioni non gestite e perdite finanziarie.

Di conseguenza, se il destinatario è un contratto intelligente, gli utenti devono trasferire i loro token ERC20 utilizzando l’algoritmo approve + transferFrom. Se il destinatario è un indirizzo di account di proprietà esterna, gli utenti devono trasferire i loro token tramite la funzione transfer.

Se un utente commette un errore e sceglie la funzione sbagliata, i token rimarranno bloccati all’interno del contratto intelligente, e la transazione non verrà riconosciuta. I token ERC20 bloccati saranno quindi impossibili da recuperare.

Almeno $400.000 sono stati persi a causa di questo problema.

  1. Il meccanismo approve + transferFrom è potenzialmente insicuro.

Il meccanismo approve + transferFrom è noto per consentire il double spending (doppia spesa).

Questo non è rilevante a meno che non ci sia la possibilità di creare scambi di token personalizzati come Bancor token changer.

La soluzione a questo problema è lo standard dei token ERC223.

Lo standard dei token ERC223 è stato sviluppato appositamente per risolvere i problemi dello standard ERC20.

Ogni sviluppatore di token dovrebbe prestare attenzione a questo. Sviluppare un token che comporti perdite finanziarie per gli utenti non è una buona soluzione. Si prega di essere responsabili per gli sviluppi che si stanno effettuando.

Come funziona nella pratica

Alice ha 10 token ERC20. Vuole inviare 3 token a Bob.

Può sembrare che Alice abbia alcuni token “sul saldo del suo account” per gli utenti comuni, ma il saldo del token è solo una variabile all’interno del contratto del token.

Alice sta avviando una transazione. Ogni transazione di token è in realtà una chiamata a un contratto di token.

Alice sta chiedendo al contratto del token di ridurre il suo saldo di 3 e aumentare contemporaneamente il saldo di Bob di 3.

Dopo che la transazione è stata elaborata, le variabili interne di questo contratto di token ERC20 saranno cambiate. Nessuno informerà il destinatario (Bob, in questo caso) che la transazione è avvenuta.

Questo va bene per gli account di proprietà esterna (cioè di proprietà umana). Alice può dire a Bob che gli ha inviato token. Bob può guardare il suo saldo e capire che è effettivamente accaduto.

Questo è un problema critico per i contratti e comporta la perdita di token. I contratti che non sono progettati per lavorare con i token devono rifiutare le transazioni di token in arrivo. In caso contrario, ogni contratto diventa una potenziale trappola per i token a causa dell’incapacità di respingere i trasferimenti di token impropri.

Legale Implicazioni di ERC20

Dal punto di vista legale, la situazione intorno ai token ERC20 è ancora più incerta rispetto alle criptovalute.

There's a lot of debate going on around the legal status of ERC 20

Il clima normativo in questa area nella maggior parte dei paesi del mondo o non esiste affatto o tende verso un “divieto”. Ciò è dovuto a una serie di fattori, tra cui:

  • Una grande quantità di frodi legate ai token ERC20. Dato che l’essenza del token è diventata più diffusa in connessione con l’ICO, molte delle quali erano truffe aperte o nascoste, questo ha lasciato un’impronta negativa sul concetto.
  • La criptovaluta è un settore relativamente giovane. La tecnologia blockchain ha apportato notevoli innovazioni nel mondo delle tecnologie finanziarie. Prima di tutto, questa è la complessità della regolamentazione di questa sfera in relazione all’uso delle tecnologie di decentralizzazione e dell’anonimato fasullo. In secondo luogo, è un nuovo campo nell’economia globale.

Token ERC20 = Sicurezza?

  • C’è molta discussione in corso riguardo al riconoscimento dei token ERC 20 come titoli finanziari. Questo riguarda soprattutto coloro che cercano di creare e distribuire i propri token all’interno di un ICO, ecc. Il fatto è che i token ERC 20 (“azioni che darebbero rendite ai proprietari”) sarebbero soggetti alle leggi sui titoli finanziari negli Stati Uniti e nella maggior parte degli altri luoghi. Non è nemmeno necessario superare il complesso test di Howey. Il test Landreth Timber e altri test simili svolgono comunque la loro funzione: un interesse per il profitto in un’impresa sarà considerato un titolo finanziario in ogni caso.
  • Il fatto che un token sia un titolo finanziario non significa che non si possa venderlo. Le persone comprano e vendono titoli finanziari tutto il tempo (pensate alle start-up della Silicon Valley). Ma per farlo, è necessario rispettare una delle esenzioni per la distribuzione privata di titoli finanziari previste dalle leggi sui titoli finanziari. Di solito ciò significa non offrirli al pubblico in generale, non pubblicizzarli, ecc. – in altre parole, l’opposto di ciò che la maggior parte delle vendite di token sta facendo.
  • Oppure si potrebbe seguire la via del Reg A+ e offrire il token al pubblico, ma con un limite di raccolta di $50 milioni e ottenendo prima l’approvazione della SEC (Securities and Exchange Commission) e con alcune relazioni in corso (non così onerose come le relazioni richieste per una società soggetta al rapporto completo con il Exchange Act). Ci sono altre opzioni di mix-and-match all’interno della stessa zona generale delle leggi sui titoli finanziari.