ERC20, cos’è questo standard, è sicuro? by pojo

View this thread on steempeak.com
· @pojo ·
$1.08
ERC20, cos’è questo standard, è sicuro?
<strong>ERC20</strong>, 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.

![][ex1] 
<sub>[clicca per ingrandire][ex1]
<em> [Immagine di proprietà dell’autore] </em></sub>

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, <strong>ERC223 e ERC777</strong>, 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.
<h2>Cos’è lo standard ERC? </h2>
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.
<h2>Cosa offre in più lo standard ERC20? </h2>
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.


<h2>ERC20 è uno standard sicuro? </h2>
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

<h2>Perché non vengono utilizzati altri standard più sicuri? </h2>
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.

<h2>Quali sono i nuovi standard attualmente disponibili? </h2>
Gli standard di nuovissima generazione, che probabilmente andranno a sostituire il vecchio ERC20, sono due, ERC223  e ERC777.
<h2>Standard ERC223</h2>
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. 
<h2>Standard ERC777</h2>
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.
<h2>Conclusione</h2>
È 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.

<em>Follow Me: @pojo &nbsp;</em>
https://steemitimages.com/DQmW48nCktsbhqdk7SAhZbY7GGfidKdcTvNquWf423fA3eV/giphy.gif


[ex1]: ![erc20.jpg](https://steemitimages.com/DQmXr2dZJksjKFRCyDNe6tUuCxGCzuNvPxJqcEmxYF1dq2q/erc20.jpg)
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 171 others
properties (23)
post_id42,183,168
authorpojo
permlinkerc20-cos-e-questo-standard-e-sicuro
categoryita
json_metadata"{"format": "markdown", "links": ["![erc20.jpg](https://steemitimages.com/DQmXr2dZJksjKFRCyDNe6tUuCxGCzuNvPxJqcEmxYF1dq2q/erc20.jpg)"], "app": "steemit/0.1", "tags": ["ita", "ita-cryptocurrency", "cryptocurrency", "erc20", "erc223"], "users": ["pojo"]}"
created2018-04-05 11:56:48
last_update2018-04-05 11:56:48
depth0
children4
net_rshares355,941,775,822
last_payout2018-04-12 11:56:48
cashout_time1969-12-31 23:59:59
total_payout_value0.919 SBD
curator_payout_value0.164 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length6,901
author_reputation4,298,662,347,082
root_title"ERC20, cos’è questo standard, è sicuro?"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (235)
@massimoc23 ·
Gran bel post ho imparato qualcosa in più sull'ERC20
properties (22)
post_id42,187,996
authormassimoc23
permlinkre-pojo-erc20-cos-e-questo-standard-e-sicuro-20180405t123624641z
categoryita
json_metadata"{"app": "steemit/0.1", "tags": ["ita"]}"
created2018-04-05 12:36:27
last_update2018-04-05 12:36:27
depth1
children3
net_rshares0
last_payout2018-04-12 12:36:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length52
author_reputation6,390,804,841,860
root_title"ERC20, cos’è questo standard, è sicuro?"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@pojo ·
$0.03
grazie
👍  ,
properties (23)
post_id42,193,086
authorpojo
permlinkre-massimoc23-re-pojo-erc20-cos-e-questo-standard-e-sicuro-20180405t132023853z
categoryita
json_metadata"{"app": "steemit/0.1", "tags": ["ita"]}"
created2018-04-05 13:16:03
last_update2018-04-05 13:16:03
depth2
children2
net_rshares9,913,314,698
last_payout2018-04-12 13:16:03
cashout_time1969-12-31 23:59:59
total_payout_value0.023 SBD
curator_payout_value0.005 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length6
author_reputation4,298,662,347,082
root_title"ERC20, cos’è questo standard, è sicuro?"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (2)
@piergiuseppe ·
Grazie, l'ho sperimentato in prima persona con golem e rep.
properties (22)
post_id42,245,395
authorpiergiuseppe
permlinkre-pojo-re-massimoc23-re-pojo-erc20-cos-e-questo-standard-e-sicuro-20180405t194554930z
categoryita
json_metadata"{"app": "steemit/0.1", "tags": ["ita"]}"
created2018-04-05 19:45:54
last_update2018-04-05 19:45:54
depth3
children1
net_rshares0
last_payout2018-04-12 19:45:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length59
author_reputation1,278,399,719
root_title"ERC20, cos’è questo standard, è sicuro?"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@pojo ·
$0.03
<h2><strong><em><a href="https://www.facebook.com/pojo78/">Se ti è piaciuto questo articolo seguimi sulla mia pagina facebook </a></em></strong></h2>
properties (22)
post_id52,437,501
authorpojo
permlinkre-pojo-erc20-cos-e-questo-standard-e-sicuro-20180610t071122215z
categoryita
json_metadata"{"links": ["https://www.facebook.com/pojo78/"], "tags": ["ita"], "app": "steemit/0.1"}"
created2018-06-10 07:07:00
last_update2018-06-10 07:07:00
depth1
children0
net_rshares0
last_payout2018-06-17 07:07:00
cashout_time1969-12-31 23:59:59
total_payout_value0.027 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length149
author_reputation4,298,662,347,082
root_title"ERC20, cos’è questo standard, è sicuro?"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000