Sou un desenvolupador d’Ethereum que treballa en un projecte de criptografia? Probablement estigueu desenvolupant el nou testimoni mitjançant l’estàndard ERC20, però, heu de conèixer els esforços de millora. Això us ajudarà a prendre la decisió correcta sobre quin estàndard de token ERC utilitzar, per tant, en aquest article explicaré la comparació ERC777 vs ERC223 vs ERC20 en aquest article..
Començaré la comparació amb una explicació d’ERC 20 i, posteriorment, explicaré els seus inconvenients. A continuació, explicaré els esforços de millora que van emprendre la comunitat Ethereum, mitjançant ERC 777 i ERC 223.
Comparació entre ERC20 i ERC223 contra ERC777
Què és ERC 20?
Abans de comparar ERC 20 contra ERC 223 contra ERC 777, he d’explicar què és un ERC i què representa ERC20. Els desenvolupadors d’Ethereum solen enviar ‘Ethreum Improvement Proposals’ (EIP). La comunitat Ethereum revisa els EIP, fa comentaris, cosa que pot provocar una certa reelaboració.
Després que la comunitat Ethereum accepti un EIP, es converteix en un estàndard i, després, l’hem anomenat ‘Sol·licitud de comentaris d’Ethereum’ (ERC). ERC 20 és un d’aquests estàndards per als tokens Ethreum.
ERC 20 és l’estàndard de token Ethereum més famós i gairebé tots els ICO que van utilitzar la plataforma Ethereum l’han utilitzat. Els desenvolupadors l’utilitzen de manera predeterminada per crear nous tokens, mentre que les carteres i els intercanvis accepten fàcilment tokens ERC 20.
Abans d’ERC 20, els desenvolupadors d’Ethereum havien d’establir específicament regles que seguiran el seu testimoni i aquest enfocament no tenia estandardització. Ara amb ERC20, els desenvolupadors d’Ethereum saben que només hauran d’utilitzar l’estàndard ERC 20. Aquesta normalització va tenir un paper important en l’alimentació de la moda de l’ICO que vam veure des del 2017.
Llegiu més informació sobre l’estàndard ERC 20 a “Guia per a principiants: què és ERC20?”.
Què són les funcions estàndard ERC 20?
L’estàndard ERC 20 prescriu les funcions següents quan es desenvolupa un testimoni Ethereum:
- Obteniu l’oferta total de fitxes: heu d’utilitzar la funció “totalSupply”.
- Recupereu el saldo simbòlic d’un altre compte de propietari.
- Enviar fitxes a un altre compte de propietari: heu d’utilitzar la funció de “transferència”. Aquests comptes són comptes EOA.
- Enviar fitxes d’una adreça de fitxes a una altra. Les adreces de testimoni són adreces contractuals i heu d’utilitzar la funció “transferFrom”.
- Permeteu que un altre compte retiri fons del vostre compte repetidament, dins d’un límit especificat. Haureu d’utilitzar la funció “aprovar” per a això.
- Els inversors poden retornar els tokens no utilitzats als propietaris mitjançant la funció “bonificació”.
Un error ERC 20 que crema fitxes
Tot i que està molt ben documentat i implementat en general, l’estàndard ERC 20 té un error, i això ja ha cremat fitxes per valor de milions de dòlars EUA. La funció de “transferència” només us permet enviar fitxes a un altre propietari, és a dir, compte EOA.
Si voleu enviar fons a un compte de contracte intel·ligent, és a dir, a l’altra forma de comptes d’Ethereum, heu d’utilitzar la combinació “aprovar” i “transferFrom”. Si envieu fitxes a un contracte intel·ligent mitjançant la funció de “transferència”, veureu una transacció reeixida, però el contracte mai no rebrà les fitxes.
Això crema aquestes fitxes per sempre i no les podeu recuperar. Diversos usuaris han utilitzat la funció incorrecta per enviar fitxes a contractes intel·ligents i han perdut definitivament les seves fitxes!
La Fundació Ethereum coneix l’error, però continua promovent l’estàndard ERC 20. Desconec les seves raons per fer-ho. Probablement no aprecien la importació del problema o hi ha una resistència al canvi.
L’estàndard de testimoni ERC223: una proposta de resolució per a l’error ERC 20
Un desenvolupador d’Ethereum que s’anomena “Dexaran” a Reddit va proposar l’EIP 223 amb una solució a aquest error ERC 20. Abans de comparar ERC 20 vs ERC 223 vs ERC 777, explicaré primer la seva proposta.
L’estàndard de token ERC223 encara és un esborrany i la comunitat Ethereum encara no l’ha implementat. Proposa la següent solució:
- Considera una transacció a la cadena de blocs d’Ethereum com un esdeveniment i utilitza el concepte de “gestió de successos”.
- Si els usuaris utilitzen la funció de “transferència” per enviar fitxes a un contracte intel·ligent, generarà un error i posteriorment cancel·larà la transacció.
- L’usuari paga el “preu del gas” d’Ethereum, però no perd cap testimoni.
- Aquesta proposta afegeix un paràmetre addicional a la funció de “transferència” per comprovar si l’adreça de recepció és un compte de contracte.
- Si troba que l’adreça del destinatari és un compte de contracte i no un compte d’EOA, assumeix que el contracte ha implementat un “tokenFallback”.
- Una funció “tokenFallback” permet tornar a cridar el testimoni, de manera que la transacció no cremarà cap testimoni.
Tot i que l’ERC223 resol en gran mesura l’error ERC 20, aquesta proposta presenta una debilitat. Si el contracte intel·ligent destinatari no té una funció “tokanFallback”, s’executarà la funció “Fallback”, cosa que provocarà la pèrdua de fitxes.
Només alguns projectes utilitzen l’ERC 223, un exemple és el Projecte AmigoCoin. Podeu llegir més detalls sobre la proposta ERC 223 a la pàgina Dipòsit GitHub EIP 223. Aquesta norma també s’anomena ERC 23.
L’estàndard ERC777: una proposta millorada per resoldre l’error ERC 20
Una proposta millorada per evitar la pèrdua de fitxes a causa de l’error ERC 20 és la proposta ERC 777. Inclou el següent:
- Noves funcions: “enviar” en lloc de “transferir”, “authoriseOperator” en lloc de “aprovar” i “tokensReceived” en lloc de “tokenFallback”.
- Durant molt de temps, la plataforma Ethereum tenia un inconvenient perquè els desenvolupadors no podien identificar quines funcions implementaven els contractes intel·ligents. ERC 820, és a dir, un altre estàndard, ha implementat un registre central de contractes a la xarxa, de manera que ara és possible conèixer les funcions i les interfícies que té un contracte intel·ligent. ERC777 l’utilitza per identificar les interfícies que utilitza un contracte intel·ligent. Ara els desenvolupadors sabran per endavant si un contracte té les funcions necessàries per rebre fitxes enviades mitjançant determinades funcions.
- L’ERC 777 permet la “llista blanca” dels operadors, de manera que els usuaris de la xarxa Ethereum ara podran rebutjar el pagament de les adreces de la llista negra. Una adreça es pot incloure a la llista negra per molts motius, per exemple, intent de piratejar la xarxa, historial d’activitats il·legals.
Podeu veure a la comparació ERC 777 vs ERC 20 vs ERC 223 com ERC777 proporciona diverses opcions als desenvolupadors perquè puguin evitar la pèrdua de fitxes. No obstant això, l’estàndard ERC777 també comporta alguns riscos, de la següent manera:
- Alguns desenvolupadors d’Ethereum creuen que la funció “authoriseOperator” està obsoleta, de manera que els desenvolupadors no haurien d’utilitzar-la. Aquesta funció també requerirà més “gas” i suposarà una pressió addicional a la xarxa.
- L’ús d’un registre central de contractes intel·ligents per buscar les interfícies que utilitza un contracte és arriscat. Un registre central pot tenir errors i qualsevol cosa que en depengui tindrà un impacte advers.
ERC777 encara és un esborrany, però ORCA token l’utilitza. Llegiu la proposta al Dipòsit EIP 777 GitHub.
ERC 777 vs ERC 20 vs ERC 223: la protecció dels fons és important
Tot i que només el temps dirà quin estàndard acceptarà l’ecosistema Ethereum com a “estàndard d’or”, com a desenvolupador heu de recordar que és la vostra responsabilitat protegir els fons dels comerciants i dels inversors. Si adopteu una posició tan responsable, probablement estareu d’acord que, malgrat la complexitat, s’hauria d’implementar i adoptar l’estàndard ERC 777.
Nota: Si voleu obtenir més informació sobre uns quants estàndards ERC clau, llegiu “La llista definitiva d’estàndards ERC que heu de saber”.