Condividi

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

I token ERC-20 sono criptovalute che funzionano sulla blockchain di Ethereum. Sono alimentati da contratti intelligenti della rete Ethereum, la utilizzano per condurre transazioni e interagire con i suoi indirizzi e portafogli. Allo stesso tempo, i token ERC 20 hanno i propri ticker, tassi di offerta, prezzi e altri parametri. Ad esempio, sebbene EOS sia un token di Ethereum, ha un market cap di 11,5 miliardi di dollari, che è più di quanto si possa dire della maggior parte delle criptovalute ottenute tramite mining.

ERC20 è diventata la casa de-facto della DeFi

Grazie all’accessibilità dell’architettura ERC20, è abbastanza facile creare e distribuire il proprio token (ad esempio durante una ICO). Nell’ambito delle ICO e di altri tipi di offerte, vengono organizzate delle prevendite per attirare i finanziamenti degli investitori. Il processo di creazione dei token si chiama 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 prevendita in cambio di bitcoin o ETH.

Va notato che, sebbene i token ERC-20 siano criptovalute a tutti gli effetti che possono finire sui più popolari exchange di criptovalute, non significa necessariamente che lo faranno. Un token erc20 può conquistare il mondo delle criptovalute o rimanere per sempre sulla bilancia del suo creatore.

Usi pratici di ERC20

All’inizio, i token sono stati utilizzati durante la raccolta fondi iniziale per lo sviluppo dell’azienda. Si trattava di beni digitali con obblighi fissi. I gettoni venivano acquistati direttamente dagli sviluppatori e non potevano essere venduti o acquistati altrove.

L’ICO di Ethereum si è svolta nel 2014 e ha raccolto più di 16 milioni di dollari. Ethereum ha attirato l’attenzione dei rappresentanti di molti settori, in quanto può essere utilizzato per ottimizzare e digitalizzare i processi aziendali inefficienti in futuro.

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

Un token Ethereum può essere utilizzato come asset e come forma di denaro; può anche rappresentare oggetti di valore di qualsiasi tipo e garantire l’adesione a un programma o servire come mezzo per confermare la proprietà. Qualsiasi bene del mondo reale, fisico o meno, può essere tokenizzato e scambiato sulle borse cripto.

Moeda Loyalty Points (MDA) è un token ERC 20 che alimenta l'ecosistema MOEDA.

I gettoni ERC-20 più popolari

La blockchain di Ethereum è la casa de-facto delle criptovalute e ospita la maggior parte delle altcoin più importanti di oggi. I token più famosi sono i token ERC20 e la maggior parte delle DApp dell’ecosistema crittografico sono costruite sulla rete Ethereum. Alcune stablecoin con standard ERC20 sono note per dominare il mercato delle criptovalute.

USDC

Oltre a USDT di Tether, una delle più grandi monete stabili ERC20 della rete Ethereum è USDC.

USDC by Circle è la seconda stablecoin ERC20 con il miglior rating

Lanciata da Coinbase in collaborazione con Circle, USDC è comunemente considerata un’alternativa più affidabile a USDT da coloro che hanno una posizione critica nei confronti di Tether.

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

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

USDT Tether

Tether (USDT) è una delle monete stabili ERC-20 più popolari.

Nel 2015, Tether Limited ha emesso una stablecoin USDT con valore di ancoraggio all’USD. Basata sullo standard ERC 20, da allora è diventata la stablecoin di riferimento per la maggior parte dei trader e degli scambi di criptovalute in tutto il mondo. Il valore di USDT Tether è sostenuto da dollari USA sui conti della società.

Altre valute fiat hanno le loro monete stabili. Ad esempio, Binance GBP è supportato dalla sterlina inglese, mentre 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 Ethereum.

Bitcoin e Ether incartati

Il Wrapped Ether è fondamentalmente ETH tradotto nell'ambiente ERC20.

ETH, o ether, è la valuta di base di Ethereum. WETH è "ETH avvolto" o "Etere in un guscio". È stata introdotta perché l’ETH è apparso prima dell’adozione dello standard ERC20 e quindi non è conforme ad esso.

Le piattaforme decentralizzate basate su Ethereum scambiano token tra gli utenti sulla base di contratti intelligenti. Affinché lo scambio avvenga, i token devono appartenere allo stesso standard.

WETH viene utilizzato per scambiare gettoni ETH con il corrispondente protocollo ERC20.

Numerosi utenti della rete, tra cui grandi aziende con capitale, sono interessati allo sviluppo della valuta di base.

Tra questi:

  • il sistema Wrapped Ether, che possiede più di 2 milioni di ETH per un valore di 380 milioni di dollari;
  • una delle principali borse di criptovalute, Binance, per 370 milioni di dollari;
  • Scambio Bitfinex, meno di 2 milioni di ETH.
Wrapped Bitcoin (WBTC) è l'equivalente ERC20 di BTC

Il Bitcoin ha anche una versione ERC20 wrappata chiamata WBTC. Il BTC originale è il token nativo della blockchain Bitcoin e non è compatibile con Ethereum. Come WETH, WBTC intende risolvere questo problema: è sempre agganciato al prezzo del Bitcoin ed è pienamente compatibile con la rete Ethereum. I token incartati sono spesso utilizzati per trasferire token tra reti diverse che non sono reciprocamente compatibili.

LCS

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

LocalCoinSwap è anche un token ERC 20

LCS ti permette di trovare un acquirente o un venditore di valuta e di effettuare una transazione senza ricorrere a siti web e portafogli. La piattaforma utilizza un sistema di deposito tradizionale, che memorizza i fondi di criptovaluta che possono essere scambiati. Quando il pagamento viene confermato dall’acquirente e dal venditore, il sistema invia le monete all’acquirente. La piattaforma dà il diritto di ricevere i dividendi in un rapporto di 1 a 1 alla fine del trimestre.

Etherscan: La casa dei gettoni ERC 20

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

Etherscan.io è il tracker nativo per la rete Ethereum

Oltre ai loro ticker e alle loro brevi descrizioni, puoi monitorare i dati relativi all’offerta totale, al market cap (on-chain e in circolazione), al numero di possessori e ai dati relativi al prezzo e alla sua variazione.

Tutti i token ERC20 possono essere visualizzati nel menu Tokens di Etherscan.

Per visualizzare tutti i contratti di token ERC20 sulla rete Ethereum, devi cliccare su Tokens in alto a destra e poi selezionare i token ERC20. Ogni nuovo token con un market cap più o meno competitivo sarà elencato qui.

Al momento in cui scriviamo, ci sono almeno 625.000 contratti di token ERC20 distribuiti sulla rete Ethereum. Qui puoi vedere anche gli altri standard dei token Ethereum: ERC721 per i token non fungibili (NFT) e ERC155 per i multi-token.

Il lato tecnico di un gettone ERC 20

In sostanza, i token ERC-20 sono contratti intelligenti sulla blockchain di Ethereum. ERC-20 è uno standard unificato, che include una serie di regole di base da seguire per un contratto. Lo standard garantisce la compatibilità di tutti i token all’interno della rete.

ERC è l’acronimo di "Ethereum Request for Comments" e 20 è il suo numero identificativo.

L’ERC-20 è stato immaginato nel 2015 ed è diventato mondiale nel 2017. Prima di allora, tutti gli smart contract erano piuttosto eterogenei, causando problemi di compatibilità tra loro, e i portafogli dovevano occuparsi di un mucchio di codice per riconoscere ogni specifico token.

Gettoni ERC20 e EVM

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

L’EVM è considerato Turing-completo, il che significa che è teoricamente in grado di gestire qualsiasi compito computazionale che può essere svolto dai computer (con risorse sufficienti).

Come pagamento per l’esecuzione dei contratti smart, 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 eseguiti e dal carico di lavoro attuale della blockchain di Ethereum.

I contratti intelligenti che seguono una struttura di dati definita sull’EVM vengono utilizzati per creare i 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 è esatta: un token ERC20 serve più che altro come una serie di linee guida volte a delineare le regole di base per operare all’interno della rete Ethereum.

Lo standard serve a diversi scopi, tra cui tenere traccia di tutte le transazioni, del saldo attuale dei token di un utente, del ticker del token e dei tassi di fornitura totali; lo standard dei token ERC 20 garantisce anche la compatibilità delle diverse DApp (applicazioni decentralizzate) nella rete.

Il contratto di un token ERC 20

Lo standard ERC20 delinea sei funzioni obbligatorie e tre opzionali che devono essere rispettate affinché un contratto smart funzioni correttamente.

Ogni token deve avere un nome e un simbolo (noto anche come ticker). Deve anche specificare i suoi decimali, cioè quante volte può essere diviso per 10. Qui di seguito troverai una serie di funzioni obbligatorie, che alcuni potrebbero trovare un po’ difficili da comprendere all’inizio:

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 del conto del proprietario di un token;
  • Trasferimento: Esegue automaticamente il trasferimento di un numero specifico di token a un indirizzo specifico per le transazioni che utilizzano il token;
  • TransferFrom: Esegue automaticamente il trasferimento di un numero specifico di token da un indirizzo specifico utilizzando il token;
  • Approva: Permette a chi spende di prelevare un determinato numero di gettoni da un determinato conto, fino a un importo specifico;
  • Permesso: Restituisce al proprietario un determinato numero di gettoni da parte di chi spende;
  • Trasferimento: Un evento che si attiva quando un trasferimento va a buon fine (un evento);
  • Approvazione: Un registro di un evento approvato (un evento).

Con un’autorizzazione adeguata, le funzioni di ERC20 consentono a un’entità esterna, ad esempio un’applicazione di criptovaluta, di vedere il saldo e di trasferire i token tra gli utenti.

Ci sono due tipi di eventi riconosciuti dallo smart contract:

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

Gli eventi possono essere:

  • invocato
  • emesso

Entrambe le cose avvengono una volta che un conto Ethereum ha concesso a qualcuno il diritto di prelevare i token da esso e dopo che i token sono stati effettivamente trasferiti. Come previsto dallo standard, la "funzione trasferimento" deve emettere l’evento Trasferimento quando il trasferimento dei gettoni va a buon fine.

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

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

Creare un gettone ERC 20

Passo 1

  • Scegli un nome, ad esempio Best Coin.
  • Scegli un simbolo, rendiamolo BEC
  • Decidi l’offerta totale
  • Decidi se i gettoni saranno divisibili e, in caso affermativo, quante cifre decimali ci saranno al massimo.

Passo 2

Distribuire il token

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

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

Apri NewToken.sol, inserisci i valori necessari in al posto delle variabili:

totalSupply - numero totale di gettoni

nome - il nome completo del token

decimale - il numero di zac dopo la virgola. Il fatto è che nei contratti tutto è memorizzato solo in numeri interi. Pertanto, devi specificare il numero di caratteri se vuoi essere in grado di accreditare un numero non intero di token.

  • Simbolo - un simbolo per gli scambi
  • Acquista gli annunci
  • Stacca la spina

Il risultato dovrebbe essere simile a questo:

Risparmialo. Resta da caricare il contratto sulla rete. Ad esempio, installalo nella rete di test Ropsten. Per la distribuzione sarà necessario un qualsiasi client. Utilizziamo MetaMask - non sa come compilare gli smart contract su Solidity, quindi compileremo prima noi.

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

Per distribuire, clicca su Esegui, seleziona Injected Web3 e seleziona l’account che verrà distribuito (dovrebbe caricarsi automaticamente se hai installato MetaMask nel browser). Inserisci le informazioni necessarie nei campi (gas, valore) e clicca su Crea.

MetaMask riprende l’azione dalla pagina.

Clicca su Invia. Il tuo contratto è sigillato. L’invio è confermato in MetaMask da un’icona con un documento (conduce alla pagina della transazione) e dalla scritta "Contratto pubblicato".

Un contratto smart sigillato è un token.

Passo 3

Operazioni con i gettoni

Le transazioni di token basate su Ethereum richiedono due portafogli: quello che li possiede già (per impostazione predefinita, il creatore del contratto, lo standard ERC20) e quello che deve trasferirli.

Eseguire operazioni con il nostro token (trasferirlo, ad esempio). Possiamo farlo sulla pagina dello smart contract di etherscan (link in MetaMask) o sulla pagina del remix.

In blu le operazioni di lettura, in rosa le operazioni di scrittura.

Per trasferire i gettoni ERC-20, inserisci l’indirizzo del destinatario e la quantità. Dopodiché (e inserendo i dati nella blockchain, ovviamente), puoi controllare il tuo saldo o quello del destinatario dei token con l’operazione balanceOf.

Fatto!

I problemi dello standard dei token ERC 20

Esistono due livelli di emissione dei token ERC 20. Ci sono due livelli: quello dell’utente e quello dello sviluppatore.

Per gli utenti dei token

Per gli utenti comuni, gli inconvenienti più diffusi includono:

  • Basso throughput - La rete di Ethereum si è intasata quando le dapps hanno registrato una forte domanda, come CryptoKitties (che nel frattempo è passata alla propria blockchain Flow). Quando ciò accade, la rete 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 processate. Questo potrebbe essere adeguato per alcuni usi o troppo lento per altri.
  • ETH per i pagamenti in gas - Quando si effettuano transazioni con token ERC-20, è necessaria una seconda criptovaluta per pagare le spese di transazione. Questo può comportare un aggravio di tempo e di costi, in quanto si può accumulare un saldo "polvere" su diverse piattaforme.

Per gli sviluppatori di token

I token ERC20 presentano due problemi critici che sono noti per causare perdite monetarie. Essi sono:

  1. Mancanza di gestione delle transazioni.

Esistono due modi per effettuare una transazione in token ERC20:

  • funzione di trasferimento.
  • approvare + meccanismo transferFrom.

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

La transazione di un token comporta un’alterazione delle variabili interne del contratto smart (il saldo corrente del mittente diminuisce e quello del destinatario aumenta).

La funzione di trasferimento non notificherà al destinatario l’avvenuta transazione. Il destinatario non può riconoscere la transazione in arrivo! Questo può portare a transazioni non gestite e a perdite monetarie.

Di conseguenza, se il destinatario è uno smart contract, gli utenti devono trasferire i loro token erc20 utilizzando l’algoritmo approvato +transferFrom. Se il destinatario è un indirizzo di conto esterno, gli utenti devono trasferire i loro token tramite la funzione di trasferimento.

Se un utente sbaglia a scegliere la funzione sbagliata, il token rimarrà bloccato all’interno dello smart contract e la transazione non verrà riconosciuta. I token erc20 bloccati saranno quindi impossibili da recuperare.

Almeno 400.000 dollari sono andati persi a causa di questo problema.

  1. Il meccanismo approva + transferFrom è potenzialmente insicuro

Il meccanismo Approve + TransferFrom è noto per consentire una doppia spesa.

Questo non è rilevante se non ci sarà la possibilità di creare scambi di token personalizzati come target="_blank"> target="_blank"> Bancor token changer.

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

Lo standard dei token ERC #223 è stato sviluppato specificamente per risolvere i problemi dello standard dei token ERC 20.

Ogni sviluppatore di token dovrebbe prestare attenzione a questo aspetto. Sviluppare un token che comporti perdite monetarie per i tuoi utenti non è una buona soluzione. Sii responsabile degli sviluppi che stai conducendo.

Come funziona in pratica

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

Per gli utenti comuni può sembrare che Alice abbia dei token "sul suo conto", ma il saldo del token è solo una variabile all’interno del contratto del token.

Alice sta avviando una transazione. Ogni transazione di token è una chiamata di un contratto di token, infatti.

Alice chiede al contratto di token di ridurre il suo saldo di 3 e di aumentare il saldo di Bob di 3 allo stesso tempo.

Dopo che la transazione è stata estratta, le variabili interne di questo contratto di token ERC 20 saranno modificate. Nessuno dirà al destinatario (Bob, in questo caso) che la transazione è avvenuta.

Questo va bene per gli account di proprietà esterna (cioè di proprietà di persone). Alice può dire a Bob che gli ha inviato dei gettoni. Bob può guardare il suo equilibrio e rendersi conto che è successo davvero.

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

L’ERC qui, in termini tecnici, è chiamato "simbolo costante pubblico". Ethereum Request for Comments è il nome del documento che descrive le regole per la creazione di token sulla blockchain.

Implicazioni legali di ERC20

Dal punto di vista legale, la situazione dei token ERC 20 è ancora più vaga di quella delle criptovalute.

Il dibattito sullo status giuridico di ERC 20 è molto acceso.

Nella maggior parte dei paesi del mondo il clima normativo in questo settore è del tutto inesistente o tende al "divieto". Ciò è dovuto a una serie di fattori, tra cui:

  • Una grande quantità di frodi legate ai token ERC 20. Poiché l’essenza del token si è diffusa soprattutto in relazione alle ICO, molte delle quali erano truffe vere e proprie o nascoste, questo ha lasciato un’impronta negativa sul concetto.
  • Le criptovalute sono un campo relativamente giovane. La tecnologia Blockchain ha apportato serie innovazioni nel mondo delle tecnologie finanziarie. Innanzitutto, si tratta della complessità della regolamentazione di questa sfera in relazione all’uso di tecnologie di decentralizzazione e di falso anonimato. In secondo luogo, si tratta di un nuovo settore dell’economia globale.

Token ERC 20 = sicurezza?

  • Ci sono molte discussioni sul riconoscimento dei token ERC 20 come titoli. Soprattutto per quanto riguarda coloro che cercano di creare e distribuire i propri token nell’ambito di una ICO, ecc. Il fatto è che i token ERC 20 ("azioni che darebbero rendimenti ai proprietari") sarebbero soggetti alle leggi sui titoli negli Stati Uniti e nella maggior parte degli altri luoghi. Non devi nemmeno superare il complesso test di Howey. Il Landreth Timber e altri test simili sono sufficienti: un interesse di profitto in un’impresa sarà comunque considerato una garanzia.
  • Il fatto che un token sia un titolo non significa che non si possa vendere. Le persone comprano e vendono titoli in continuazione (pensa alle start-up della Silicon Valley). Ma per farlo, devi rispettare una delle esenzioni per il collocamento privato di titoli previste dalle leggi sui titoli. Questo significa in genere non offrirlo al pubblico, non pubblicizzarlo, ecc. - In altre parole, l’opposto di ciò che fa la maggior parte delle vendite di token.
  • Oppure potresti seguire la strada del Reg A+ e offrire il token al pubblico, ma con un tetto massimo di raccolta di 50 milioni di dollari, ottenendo prima l’approvazione della SEC e con una rendicontazione continua (non così grave come la rendicontazione richiesta per una vera e propria società soggetta all’Exchange Act). Esistono altre opzioni di mix-and-match all’interno della stessa zona generale delle leggi sui titoli.