Všetci poznáte tokeny ERC20, pretože pravdepodobne vlastníte pár distribuovaných prostredníctvom nejakého predaja tokenov. Vedeli ste však, že okrem ERC20 existuje oveľa viac štandardov? Ethereum má dlhú históriu vyvinutých štandardov.

Pre lepšiu predstavu o tom, čo znamená ERC, je to skratka pre „Etherea Žiadosť o komentár“. Toto je návrh predložený na diskusiu a návrhy k skutočnému štandardu. Číslo (napríklad 20) označuje číslo emisie na platforme na zdieľanie kódov Github. Najprv sa pozrime na štandard ERC20.

Štandard ERC20

Čo je to vlastne štandard ERC20?

Príchod tokenov ERC20 spôsobil revolúciu na trhu s kryptomenami a otvoril dvere neprebernému množstvu Kryptomena ICO projekty, ktorých svet bol svedkom v roku 2017. Kód ERC20, ktorý bol predstavený v roku 2015, načrtáva konkrétny zoznam pravidiel, ktoré musí daný token založený na ethereu nasadiť, a zjednodušuje tak proces programovania funkcií tokenov na blockchaine ethereum. Tokeny ERC20 sú v zásade špeciálne formy inteligentných kontraktov, ktoré využívajú blockchain spoločnosti Ethereum.

Medzi najvýznamnejšie príklady tokenov ERC20 patria Bancor, EOS, Tronix, BNB, VeChain a Bankex.

Pred inováciou štandardu ERC20 pre tokeny Ethereum museli programátori vytvoriť konkrétne implementačné štandardy pre vývoj tokenu a jeho spustenie v sieti Ethereum. Tokenový kód ERC20 napriek tomu zjednodušil proces vytvárania tokenov vďaka zjednodušenému protokolu a štandardom inteligentných zmlúv. Kód ERC20 zmiernil zložitosť spojenú s implementáciou inteligentných zmlúv tokenu, čo výrazne znížilo možnosť porušenia kontraktov tokenu.

Od apríla 2018 existujú 66 468 zmlúv o tokenoch ERC20, vďaka jednotnosti tokenového kódu poskytovanej štandardom ERC20, ktorá burzám s kryptomenami uľahčila zoznam rôznych tokenov na svojich obchodných platformách. Štandard ERC20 ako taký pomohol kryptokomunite prekonať problémy s likviditou, ktoré mohli spájať také obrovské množstvo tokenov založených na ethereu.

Funkcie tokenu ERC20:

Kód ERC20 obsahuje šesť konkrétnych funkcií pre tokeny, ktorými sú

1- Získanie celkovej zásoby žetónov prostredníctvom "totalSupply" funkcia

2 – Získanie zostatku tokenov iného účtu spojeného s "_vlastník" adresa cez " konštantné výnosy zostatku (adresa _vlastník) (zostatok uint256)" funkcie.

3 – Zaslanie konkrétneho množstva žetónov "_hodnota" na zadanú adresu cez " transfer (address _to, uint256 _value) returns (bool success)" funkcie.

4 – Zaslanie konkrétneho množstva žetónov "_hodnota" z jednej adresy tokenu (zmluvy) na adresu iného tokenu (zmluvy) cez internet "transferFrom (address _from, address _to, uint256 _value) returns (bool success)" funkcia.

5- Umožnenie konkrétneho účtu opakovane vyberať žetóny z vlastného účtu, pričom sa vopred určuje horná hranica množstva tokenov, ktoré sa majú vyberať, pomocou "_hodnota" parameter. To sa dá dosiahnuť prostredníctvom "schváliť (adresa _spender, uint256 _value) vráti (úspech bool)". Horná hranica pre výber, t. J "_hodnota" parameter, je možné prepísať, keď je funkcia vyvolaná.

6- Vrátenie zostatkového množstva žetónov v rámci prednastaveného množstva definovaného horným limitom, ktorý môže utratiť "_hýril" na výber z účtu "_vlastník". To je možné vykonať prostredníctvom "príspevok (adresa * _vlastník *, adresa * _spender *) neustále výnosy (zostáva uint256)" funkcia.

Týchto šesť funkcií definovaných kódom ERC20 predstavuje základné problémy s funkčnosťou, ktoré zahŕňajú spôsob prenosu týchto tokenov medzi rôznymi účtami a spôsob, akým môžu používatelia načítať údaje spojené s daným tokenom ERC20. Táto skupina funkcií je predpísaná, aby sa zabezpečilo, že tokeny založené na Ethereu budú fungovať podobne v ktorejkoľvek časti platformy Ethereum. Všetky krypto peňaženky, ktoré sú v súlade s éterovou mincou, budú teda podporovať aj tokeny založené na štandarde ERC20.

Kritická chyba:

ERC20 je prvý tokenový štandard Etherea. Ako to už pri novom kóde býva, obsahuje niektoré chyby alebo logické chyby. ERC20 predpokladá dva spôsoby uskutočnenia tokenovej transakcie. Najskôr funkcia prenosu umožňuje posielať tokeny na adresu niekoho iného. Ak chcete vložiť tokeny do inteligentnej zmluvy, mali by ste použiť kombináciu ‘schváliť + prevodFrom’. Touto zmluvou by ste mali povoliť výber svojich tokenov pomocou funkcie schválenia. Potom musíte zavolať funkciu zmluvy, ktorá bude vybavovať váš vklad a vyberať svoje tokeny pomocou funkcie transferFrom.

Čo ak náhodou vložíte žetóny do zmluvy s funkciou prevodu? Transakcia bude úspešná, ale táto transakcia nebude zmluvou s príjemcom rozpoznaná. Ak napríklad posielate tokeny do decentralizovanej burzovej zmluvy, potom výmenná zmluva dostane vaše tokeny, ale nebude ich pripisovať na zostatok na výmennej tokene. Ak navyše zmluva o decentralizovanej výmene neimplementuje funkciu extrakcie núdzových tokenov, je nemožné v každom prípade získať svoje tokeny späť, čo vedie k trvalej strate tokenov. Kvôli tejto chybe stratil ekosystém Ethereum už milióny dolárov.

Prečo stále používame štandard ERC20?

Užívateľ Reddit u / Dexaran, tvorca štandardu ERC223, je jedným z prvých vývojárov, ktorí informovali komunitu o spomínanej chybe. Spýtali sme sa ho, prečo je ERC20 stále tak široko používaný, aj keď vieme o tejto kritickej chybe. Uviedol tieto dôvody:

  1. Z dôvodu trestnej nezodpovednosti vývojárov tokenov za ich činy.
  2. Pretože nadácia Ethereum Foundation stále podporuje štandard tokenov ERC20, aj keď je známe, že obsahuje chyby. Rovnaká situácia ako predtým TheDAO. Musia povedať "Prestaň s tým teraz" ale nebudú.
  3. Pretože hlavným dôvodom vývoja tokenov je skôr získavanie prostriedkov ako tvorba produktov.
  4. Pretože použitie iného štandardu povedie k vyšším sieťovým efektom. To nie je to, čo skutočne potrebujeme, pretože sieť Ethereum už má problémy so škálovateľnosťou.

Štandard ERC223

The ERC223 štandard navrhol u / Dexaran, ktorý pomohol vytvoriť tento článok. ERC223 je štandard tokenov, ktorý umožňuje, aby sa prenosy tokenov správali presne ako etherové transakcie. ERC223 využíva spracovanie udalostí (považuje transakciu za udalosť) na zabránenie strate tokenov pri nespracovaných transakciách. Tento vylepšený štandard rieši kritickú chybu ERC20 tak, že spôsobí, že funkcia prenosu spôsobí chybu neplatných prevodov, a zruší transakciu, aby nedošlo k strate finančných prostriedkov. Stručne povedané, ERC223 sa zameriava na bezpečnosť.

Doplnky a problémy

ERC223 pridáva k funkcii prenosu ďalší dátový parameter, ktorý umožňuje zložitejšie operácie ako len tokenový prenos.

Dexaran sa predovšetkým obáva, že príliš veľa ľudí môže stratiť svoje tokeny tým, že ich pošle k zmluvám pomocou funkcie prenosu, nie metódami schválenia a prenosu, ako už bolo uvedené. Jeho riešením je upraviť spôsob prenosu, aby sa skontrolovalo, či je adresa príjemcu zmluva (t. J. Obsahuje údaje) alebo nie. Ak je to zmluva, potom sa predpokladá, že existuje funkcia tokenFallback, ktorá ju zavolá späť. Hlavná slabina je v tom, že ak tokenFallback neexistuje, potom sa zavolá záložná funkcia prijímajúcej zmluvy a odoslané tokeny sa môžu stále stratiť.

Štandard ERC777

ERC777 je nový štandard zastupiteľného tokenu, ktorý sa spolieha na ERC820 (Contract pseudo-introspection registry) a snaží sa vyriešiť problémy ERC20, ako napríklad nedostatok mechanizmov vybavovania transakcií, ktoré viedli k strate miliónov dolárov z ekosystému Ethereum. Stručne povedané, ERC777 sa zameriava na adopcia ponúkaním a širokú škálu mechanizmov vybavovania transakcií.

Výhody

Hlavnou výhodou ERC777 je, že používa novú metódu rozpoznávania zmluvného rozhrania. Táto norma predpokladá, že v sieti Ethereum existuje centrálny register zmlúv (je to definované v ERC820). Každý môže vyvolať tento register, aby zistil, či určitá adresa (je jedno, či je to zmluva alebo nie) podporuje určitú skupinu funkcií, tj. „Rozhranie“.

Jedným z hlavných problémov Etherea je neschopnosť vedieť, aké funkcie zmluva implementuje. ERC820 to má vyriešiť. ERC777 využíva tento prístup, čo je určite dobrý nápad.

Na druhej strane môžete vytvoriť token, ktorý bude implementovať predvolené funkcie ERC20 spolu s novými funkciami ERC777 bez prepísania (a voliteľne zdedí kritickú chybu ERC20). To môže zaručiť dobrý sieťový efekt pre tento nový štandard tokenov a rýchlejšie prijatie. Ako ukazuje prax, hlavným cieľom vývojárov tokenov je získať peniaze, ktoré predpokladajú, že svoje tokeny musia posielať na burzy. Pre burzy je jednoduchšie podporovať token, ktorý implementuje staršie funkcie ERC20 (nezáleží na tom, či tieto funkcie obsahujú chyby alebo nie) bez akéhokoľvek výskumu nových funkcií nových štandardov tokenov. Čím jednoduchšie je pre burzy podpora tokenov na novom štandarde, tým viac vývojárov ho bude používať. To podporuje prijatie ERC777, zatiaľ čo ERC223 táto vlastnosť chýba.

Čo je iné?

Tento tokenový štandard definuje úplne novú sadu funkcií, t. J. Funkcie „odosielať“ namiesto funkcií „prenášať“. `authoriseOperator` namiesto` schváliť`. funkcia obsluhy `tokensReceived` namiesto funkcie obsluhy` tokenFallback`.

Takýto prístup môže zaručiť, že funkcie tohto štandardu sa nebudú krížiť a prepísať s funkciami iného štandardu tokenov, takže je možné vyrobiť token, ktorý bude kompatibilný so štandardmi ERC777 a ERC820 súčasne.

ERC777 sa konečne štandardizuje Mincovňa a horieť funkčnosť tokenov.

Body zlyhania a obavy o bezpečnosť

ERC777 implementuje funkciu `authoriseOperator`, ktorá umožňuje niekomu spravovať tokeny vo vašom mene. Dexaran nám vysvetlil, že si myslí, že táto metóda je zastaraná a nemala by sa používať. Oprávnenie niekoho na správu tokenov vo vašom mene navyše poškodzuje šírku pásma siete a vyžaduje viac plynu. `authoriseOperator` už predstavuje jednu transakciu a na vykonanie transakcie je potrebná ďalšia transakcia "povolené stiahnutie". Na uskutočnenie prevodu sú teda potrebné dve transakcie, ktoré je možné vykonať iba jednou transakciou.

Ďalej štandard ERC777 obsahuje voliteľný príznak na zabránenie uviaznutiu tokenov vykonaním niektorých kontrol rozhrania ITokenRecipient a na kontrolu, či je adresa na bielom zozname. Pretože sa tento štandard zameriava na bezpečnosť siete, ktorá spracúva tokeny v hodnote miliónov dolárov, nie je dobré robiť tieto kontroly voliteľnými..

Ostatné normy

Existuje mnoho ďalších štandardov ako ERC827 ktorý kombinuje niektoré výhody ERC223 so staršími funkciami ERC20. The ERC664 štandard sa zameriava na modularitu tokenového štandardu. Tento štandard umožňuje aktualizáciu zmlúv o tokenoch, zdedil však kritickú chybu ERC20. Medzi ďalšie štandardy patria ERC721, ERC677 a ERC820, sú však menej známe.

Zlučiteľnosť medzi normami

Spýtali sme sa spoločnosti Dexaran, ktoré štandardy sú spätne kompatibilné. Povedal nám, že by sme najskôr mali pochopiť, čo znamená „spätná kompatibilita“: „Spätná kompatibilita je vlastnosť systému, produktu alebo technológie, ktorá umožňuje interoperabilitu so starším starým systémom alebo so vstupom určeným pre takýto systém.“

ERC20 & ERC223: Žetóny ERC223 sú kompatibilné s ERC20. Všetko, čo je navrhnuté tak, aby správne fungovalo s ERC20 (napríklad peňaženky), môže fungovať aj s ERC223. Jedinou výnimkou sú zmluvy, ktoré sa spoliehajú na vzory schválenia + prevodu z vkladu tokenov. Je však možné implementovať funkcie schváliť + transferFrom s tokenmi ERC223, aj keď momentálne nie sú zahrnuté v štandarde. Pokiaľ ide o peňaženky a akékoľvek služby tretích strán, ktoré nie sú inteligentnými zmluvami, automaticky podporujú ERC223, pretože vstupné údaje o hovoroch tokenu ERC20 sú platné pre ERC223..

ERC20 & ERC777: V časti „Spätná kompatibilita“ návrhu ERC777 nájdete nasledujúce vyhlásenie: „Tento EIP nezavádza spätnú nekompatibilitu a je kompatibilný so starším štandardom tokenov ERC-20.“

Dexaran nám však povedal pravý opak a uviedol nám tento príklad: „Takéto peňaženky a služby ako MetaMask, Mist a MyEtherWallet pracujú s tokenmi ERC20. Vstupom, ktorý je navrhnutý pre token ERC20, je volanie kontraktu, ktoré obsahuje zakódované parametre a podpis funkcie. Volania funkcií vo virtuálnom stroji Ethereum sú špecifikované prvými štyrmi bajtmi údajov odoslaných s transakciou. Tieto štvorbajtové podpisy sú definované ako prvé štyri bajty hashu kanonického znázornenia podpisu funkcie. To znamená, že funkcie „prenos (adresa, uint256)“ a „odoslanie (adresa, uint256)“ budú mať rôzne podpisy. Vo výsledku nebude vstup určený pre token ERC20 platný pre token ERC777. “ Pretože používame našu definíciu spätnej kompatibility, ERC777 nie je kompatibilný so štandardom tokenov ERC20.

Kedy použiť ktorý štandard

ERC20: Používateľ Reddit u / Dexaran nám dal túto sarkastickú radu: „Ak chcete, aby vaši investori prišli o peniaze kvôli chybám.“

ERC223: Tento štandard tokenov je tiež použiteľný spolu s ERC777. ERC777 má niektoré elegantné funkcie, ktoré ERC223 postrádajú, ale logika ERC223 je v porovnaní s ERC777 priamočiara, ktorá môže zaručiť, že bude obsahovať veľa menej náchylný na chyby. ERC223 sa navyše nespolieha na žiadnu centrálnu službu, čo znamená, že váš token ERC223 bude závisieť iba od vašej vlastnej implementácie. Ako sme už spomenuli, cieľom ERC223 je vylepšenie zabezpečenia, čo však spôsobilo, že tokeny ERC223 nie sú v súlade so štandardmi ERC20..

ERC777: Tento štandard tokenov je už použiteľný. Na druhej strane, ERC777 má určité bezpečnostné obavy, ako už bolo spomenuté vyššie. Spoliehajú sa tiež na centrálny register zmlúv, čo je tiež bezpečnostný problém. Centrálny register môže vývojárom uľahčiť život, ale funguje tiež ako centrálny bod zlyhania presne tak, ako to bolo v prípade Parity Multisig. Všetky Parity Multisigs sa spoliehali na centrálnu knižnicu kódov. Stalo sa, že v knižnici bola chyba a bola zneužitá. Výsledkom bolo zrútenie všetkých paritných multisigov. ERC777 navyše definuje novú sadu funkcií. Toto je pokus umožniť vývojárom tokenov, aby boli v záujme prijatia kompatibilné so štandardmi ERC20 a ERC777. To znamená, že vývojár môže zdediť chybu ERC20 v ERC777, ale umožňuje vývojárovi použiť viac udalostí vybavovania transakcií.

Všeobecne: Všetky tokeny majú podobný prípad použitia – ICO. Povedal by som, že ERC223 a ERC777 sa snažia vyriešiť jeden problém ERC20 rôznymi spôsobmi. ERC223 už prijíma svoje miesto Ethereum Classic namiesto ERC20.

Tento článok vznikol za pomoci vývojára ERC223 spoločnosti Dexaran. Boli tiež použité niektoré z komentárov Paula Edge k tokenovým štandardom Ethereum.