ERC20, cos’è questo standard, è sicuro?

in #ita7 years ago

ERC20, molte volte lo abbiamo sentito nominare ma pochi sanno esattamente di cosa si tratta e perché lo si usa. Sicuramente chi ha avuto a che fare con le ICO è stato anche costretto ad utilizzarlo o almeno ad informarsi.


clicca per ingrandire
[Immagine di proprietà dell’autore]

ERC20 non è altro che il nome che determina uno standard per i token basati su piattaforma Ethereum, è stato creato nel 2015 ma ufficialmente formalizzato attorno al settembre 2017, a tutt'oggi sono oltre 21.000 i contratti di token che utilizzano ERC20 . Esistono anche altri standard, ERC223 e ERC777, la loro nascita deriva da alcune problematiche note di quali bug di sicurezza riscontrati durante l’utilizzazione in alcune ICO dei token a standard ERC20.

Cos’è lo standard ERC?


ERC (Ethereum Request for Comment), è un protocollo che contiene miglioramenti per lo standard di token esistenti, più comunemente detto in informatica Request for Comments (RFC), uno sviluppatore Ethereum può presentare una proposta di miglioramento ad Ethereum (EIP) nella quale sono descritti tutti gli aggiornamenti tecnici per uno standard di token esistente. Una volta che la proposta viene accettata da un comitato, diventa uno standard di token ERC.

Cosa offre in più lo standard ERC20?


ERC20 è uno standard Ethereum rappresentato da un insieme di funzioni che gli sviluppatori possono utilizzare durante la creazione di un codice in uno smart contract effettuato tramite il linguaggio Solidity.
Alcune delle funzioni maggiormente utilizzate sono:

  • Balance Of (address_owner): restituisce il saldo per l'account che hai fornito.
  • Transfer (address_to, uint256_value): trasferisce una certa quantità di token in un altro indirizzo.
  • Approve (address_spender, uint256_value): concedi l'autorizzazione a un determinato indirizzo per prelevare una determinata quantità di token dal tuo account.
  • TotalSupply: restituisce il valore di tutti i token forniti.

ERC20 è uno standard sicuro?


No, ci sono alcune funzioni che rendono impossibile recuperare i propri token, durante le transazioni, che conseguentemente “svaniscono” nel nulla.
In alcuni casi quando si utilizza la funzione transfer () per inviare dei token ad un altro smart contract, in questo caso la transazione avrà comunque successo ma questa stessa transazione non sarà riconosciuta dal contratto del destinatario. Per esempio, se invii token a un contratto di scambio decentralizzato, il contratto di scambio riceverà i tuoi token ma non verranno accreditati nei tuoi token di scambio, oltretutto se il contratto di scambio decentralizzato non implementa una funzione di estrazione di emergenza dei token questi ultimi verranno perduti irrimediabilmente.
Questo bug ha causato una perdita di diversi milioni di dollari sommando tutte le transazione perse sulla piattaforma Ethereum.
Sotto alcune statistiche rilevate a marzo 2018 nelle principali piattaforme utilizzanti ERC20:

  • $ 730.000 in EOS persi in contratti
  • $ 520.000 in Qtum persi in contratti
  • $ 123.000 in STORJ persi in contratti
  • $ 120.000 in Golem persi in contratti
  • $ 14.000 in FirstBlood persi in contratti

Perché non vengono utilizzati altri standard più sicuri?


Difficile dirlo, nonostante siano evidenti alcuni Bug critici dello standard ERC20 rimangono comunque i più utilizzati.
Uno dei motivi potrebbe essere la facilità di creazione di smart contract con questo standard, altri standard sono ancora in fase di sviluppo e quindi di difficile adozione.
Non è chiaro il motivo per cui la Fondazione Ethereum non stia procedendo verso standard più recenti e migliori mentre ancora promuove il suo standard ERC20.
Alcuni dei nuovi standard di token come ERC777 non sono compatibili con ERC20 quindi non sono utilizzabili per contratti già in atto.

Quali sono i nuovi standard attualmente disponibili?


Gli standard di nuovissima generazione, che probabilmente andranno a sostituire il vecchio ERC20, sono due, ERC223 e ERC777.

Standard ERC223


Questo standard è stato creato da Dexaran che è anche stato uno dei primi sviluppatori che ha segnalato il bug critico di ERC20. Questo nuovo standard migliora e risolve il bug ERC20, ogni volta che si tenterà di inviare token ad uno smart contract attraverso la funzione transfer () verrà generato un errore e il trasferimento verrà annullato. Ma non basta, Dexaran ha modificato la funzione transfer () per verificare se l'indirizzo di ricezione è uno smart contract, in questo caso, la funzione transfer () annullerà la transazione attivando al suo posto la funzione tokenFallback (). Il problema potrebbe porsi se nel contratto ricevente non è stata implementata la funzione tokenFallback (), in questo caso il trasferimento di token continuerà a fallire. La funzione tokenFallback () è solamente responsabile della restituzione dei fondi inviati.
In sostanza lo standard ERC223 si concentra sulla sicurezza.

Standard ERC777


Lo standard ERC777 cerca di offrire ulteriori meccanismi di gestione delle transazioni al fine di risolvere i problemi gestionali nelle transazioni di ERC20. ERC777 è focalizzato sull'adozione e su una migliore gestione delle transazioni.
ERC777 trova un modo eccellente per risolvere i problemi relativi alla funzione transfer (). Ogni contratto sulla rete Ethereum deve essere registrato in un registro centrale che può essere utilizzato per cercare se un determinato indirizzo supporta un certo insieme di funzioni. Quindi, ciò renderebbe possibile sapere se lo smart contract destinatario ha una funzione tokenFallback () implementata prima ancor di effettuare alcun invio di token. Tuttavia, lo standard di token ERC777 eredita il bug critico ERC20 quindi se l’invio viene comunque effettuato i token vengono ugualmente persi.
Ma questo nuovo protocollo porta con se alcune perplessità. La funzione authorizeOperator () consente a qualcuno di gestire token per tuo conto, questa è una funzionalità che danneggia la larghezza di banda della rete poiché sono necessarie più transazioni. Inoltre il controllo della funzione tokensReceived () è facoltativo, non si capisce perché questo controllo sia opzionale in quanto questo ha già causato grosse perdite.

Conclusione


È chiaro che lo standard ERC20 ha dei bug critici noti a tutti, sono disponibili standard migliori come ERC223 che è addirittura retrocompatibile con gli smart contract basati su ERC20. Incomprensibile è invece la mancanza di presa di coscienza dalla stessa Fondazione Ethereum che dovrebbe assumersi la responsabilità di promuovere altri standard per i suoi token.

Follow Me: @pojo  

Sort:  

Gran bel post ho imparato qualcosa in più sull'ERC20

grazie

Grazie, l'ho sperimentato in prima persona con golem e rep.

cosa ti è successo?
inviato e perso tutto?