Porovnáním ERC20, ERC223 a nového standardu tokenů Ethereum ERC777
Všichni jste obeznámeni s tokeny ERC20, protože pravděpodobně vlastníte pár, distribuovaný nějakým druhem prodeje tokenů. Věděli jste ale, že kromě ERC20 existuje mnohem více standardů? Ethereum má dlouhou historii vyvinutých standardů.
Pro lepší představu o tom, co ERC znamená, znamená „Ethereum Request for Comment“. Toto je návrh předložený k diskusi a návrhy k aktuálnímu standardu. Číslo (jako 20) odkazuje na číslo vydání na platformě pro sdílení kódu Github. Nejprve se podívejme na standard ERC20.
Standard ERC20
Co přesně je standard ERC20?
Příchod tokenů ERC20 způsobil revoluci na trhu kryptoměn a otevřel dveře nepřeberné množství Kryptoměna ICO projekty, kterých byl svět svědkem během roku 2017. Kód ERC20, který byl představen v roce 2015, nastiňuje konkrétní seznam pravidel, která musí daný token založený na Ethereu nasadit, což zjednodušuje proces programování funkcí tokenů na blockchainu Ethereum. Tokeny ERC20 jsou v zásadě speciální formy inteligentních kontraktů, které využívají blockchain společnosti Ethereum.
Mezi nejvýznamnější příklady tokenů ERC20 patří Bancor, EOS, Tronix, BNB, VeChain a Bankex.
Před inovací standardu ERC20 pro tokeny Ethereum museli programátoři vytvořit specifické implementační standardy pro vývoj tokenu a jeho spuštění v síti Ethereum. Kód tokenu ERC20 nicméně zjednodušil proces vytváření tokenů díky efektivnímu protokolu a standardům inteligentních smluv. Kód ERC20 zmírnil složitost spojenou s implementací inteligentních kontraktů tokenu, což významně snížilo možnost porušení kontraktů tokenu.
Od dubna 2018 existují 66 468 kontraktů na tokeny ERC20, díky jednotnosti tokenového kódu poskytované standardem ERC20, což burzám kryptoměn usnadnilo vypisování různých tokenů na svých obchodních platformách. Standard ERC20 jako takový pomohl kryptokomunitě překonat problémy s likviditou, které by mohly spojovat takové enormní množství tokenů založených na etherea.
Funkce tokenu ERC20:
Kód ERC20 uvádí šest konkrétních funkcí pro tokeny, které jsou
1- Získání celkové zásoby žetonů prostřednictvím "celkem" funkce
2 – Načtení zůstatku tokenu jiného účtu přidruženého k "_majitel" adresa přes " balanceOf (adresa _owner) konstantní výnosy (uint256 zůstatek)" funkce.
3 – Odeslání konkrétního množství žetonů "_hodnota" na danou adresu přes " transfer (address _to, uint256 _value) returns (bool success)" funkce.
4 – Odeslání konkrétního množství žetonů "_hodnota" z jedné adresy tokenu (smlouvy) na adresu jiného tokenu (smlouvy) prostřednictvím "transferFrom (address _from, address _to, uint256 _value) returns (bool success)" funkce.
5 – Povolení konkrétního účtu opakovaně vybírat žetony z účtu, přičemž je předem stanovena horní hranice pro množství žetonů, které mají být vybrány "_hodnota" parametr. Toho lze dosáhnout pomocí "schválit (adresa _spender, uint256 _value) vrátí (úspěch bool)". Horní limit pro výběr, tj "_hodnota" parametr lze přepsat při vyvolání funkce.
6- Vrácení zbytkového množství žetonů v rámci přednastavené částky definované horním limitem, který může utratit "_spender" vybrat z účtu "_majitel". To lze provést pomocí "příspěvek (adresa * _vlastník *, adresa * _spender *) konstantní výnosy (zbývá uint256)" funkce.
Těchto šest funkcí definovaných kódem ERC20 představuje problémy s funkčností základního kamene, které zahrnují způsob přenosu těchto tokenů mezi různými účty a způsob, jakým mohou uživatelé načítat data spojená s daným tokenem ERC20. Tyto skupiny funkcí jsou předepsány, aby bylo zajištěno, že tokeny založené na etherea budou fungovat podobně v jakékoli části platformy Etherea. Všechny krypto peněženky, které jsou v souladu s etherovou mincí, budou také podporovat tokeny založené na standardu ERC20.
Kritická chyba:
ERC20 je první tokenový standard Etherea. Jak to u nového kódu často bývá, obsahuje některé chyby nebo logické chyby. ERC20 předpokládá dva způsoby provedení transakce tokenu. Nejprve vám funkce přenosu umožňuje posílat žetony na něčí adresu. Pokud chcete vložit tokeny do chytré smlouvy, měli byste použít kombinaci „schválit + převodFrom“. Měli byste autorizovat tuto smlouvu k výběru vašich tokenů prostřednictvím funkce schválení. Poté musíte zavolat funkci smlouvy, která bude zpracovávat váš vklad a vybírat své tokeny pomocí funkce transferFrom.
Co když náhodou vložíte žetony do smlouvy s funkcí přenosu? Transakce proběhne úspěšně, ale tato transakce nebude příjemcem uzavřena. Například pokud posíláte tokeny na decentralizovanou burzovní smlouvu, pak směnná smlouva obdrží vaše tokeny, ale tyto tokeny nepřipsá na váš zůstatek směnných tokenů. Pokud navíc smlouva o decentralizované výměně neimplementuje funkci extrakce nouzových tokenů, není možné v žádném případě získat své tokeny zpět, což by vedlo k trvalé ztrátě tokenů. Kvůli této chybě ztratil ekosystém Ethereum již miliony dolarů.
Proč stále používáme standard ERC20?
Uživatel Reddit u / Dexaran, tvůrce standardu ERC223, je jedním z prvních vývojářů, kteří informovali komunitu o výše uvedené chybě. Zeptali jsme se ho, proč je ERC20 stále tak široce používán, i když věděl o této kritické chybě. Uvedl následující důvody:
- Kvůli kriminální nezodpovědnosti vývojářů tokenů za jejich činy.
- Protože Ethereum Foundation stále podporuje standard tokenů ERC20, i když je známo, že obsahuje chyby. Stejná situace jako dříve TheDAO. Musí říct "Zastavte to hned" ale nebudou.
- Protože hlavním důvodem pro vývoj tokenů je spíše získávání finančních prostředků než tvorba produktů.
- Protože použití jiného standardu povede k vyšším síťovým efektům. To není to, co skutečně potřebujeme, protože síť Ethereum již má problémy se škálovatelností.
Standard ERC223
The ERC223 standard navrhl u / Dexaran, který pomohl vytvořit tento článek. ERC223 je tokenový standard, který umožňuje, aby se přenosy tokenů chovaly přesně jako etherové transakce. ERC223 využívá zpracování událostí (považuje transakci za událost), aby zabránil ztrátě tokenů v neošetřených transakcích. Tento vylepšený standard řeší kritickou chybu ERC20 tím, že způsobí, že funkce přenosu vyvolá chybu na neplatné převody a zruší transakci, aby nedošlo ke ztrátě finančních prostředků. Stručně řečeno, ERC223 se zaměřuje na bezpečnostní.
Doplnění a problémy
ERC223 přidává do funkce přenosu další datový parametr, který umožňuje složitější operace než jen přenos tokenu.
Dexaran se hlavně zajímá o to, že příliš mnoho lidí může ztratit své tokeny tím, že je pošle ke kontraktům pomocí funkce přenosu, nikoli metod schválit a transferFrom, jak již bylo popsáno výše. Jeho řešením je upravit metodu přenosu a zkontrolovat, zda je adresa příjemce smlouvou (tj. Obsahuje data) nebo ne. Pokud se jedná o smlouvu, pak se předpokládá, že existuje funkce tokenFallback, která ji volá zpět. Hlavní slabinou je, že pokud tokenFallback neexistuje, bude volána záložní funkce přijímající smlouvy a odeslané tokeny mohou být stále ztraceny.
Standard ERC777
ERC777 je nový zastupitelný tokenový standard, který se opírá o ERC820 (Contract pseudo-introspection registry) a snaží se vyřešit problémy ERC20, jako je nedostatek mechanismů manipulace s transakcemi, které vedly ke ztrátě milionů dolarů z ekosystému Ethereum. Stručně řečeno, ERC777 se zaměřuje na přijetí tím, že nabízí široká škála mechanismů zpracování transakcí.
Výhody
Hlavní výhodou ERC777 je, že používá novou metodu rozpoznávání kontraktního rozhraní. Tento standard předpokládá, že v síti Ethereum existuje centrální registr smluv (to je definováno v ERC820). Každý může vyvolat tento registr, aby věděl, zda určitá adresa (nezáleží na tom, zda je tato adresa smlouvou nebo ne) podporuje určitou sadu funkcí, tj. `Interface`.
Jedním z hlavních problémů Etherea je neschopnost vědět, jaké funkce smlouva implementuje. ERC820 to má vyřešit. ERC777 využívá tohoto přístupu, což je rozhodně dobrý nápad.
Na druhou stranu můžete vytvořit token, který bude implementovat výchozí funkce ERC20 spolu s novými funkcemi ERC777 bez přepsání (a volitelně zdědí kritickou chybu ERC20). To může zaručit dobrý síťový efekt pro tento nový standard tokenů a rychlejší přijetí. Jak ukazuje praxe, hlavním cílem vývojářů tokenů je získat peníze, které předpokládají, že je potřeba poslat jejich tokeny na burzy. Pro burzy je snazší podporovat token, který implementuje starší funkce ERC20 (nezáleží na tom, zda tyto funkce obsahují chyby nebo ne) bez jakéhokoli průzkumu novějších funkcí nových standardů tokenů. Čím jednodušší pro burzy bude podpora tokenů na novém standardu, tím více vývojářů ho bude používat. To podporuje přijetí ERC777, zatímco ERC223 tuto vlastnost postrádá.
Co se liší?
Tento tokenový standard definuje zcela novou sadu funkcí, tj. Funkce „odeslání“ místo funkcí „přenosu“. `authoriseOperator` místo` schválit`. Funkce obsluhy `tokensReceived` místo funkce obsluhy` tokenFallback`.
Takový přístup může zaručit, že funkce tohoto standardu nebudou překračovat a přepisovat s funkcemi jakéhokoli jiného standardu tokenů, takže je možné vytvořit token, který bude kompatibilní se standardy ERC777 a ERC820 současně.
Nakonec ERC777 standardizuje Mincovna a vypalování funkčnost tokenů.
Body selhání a bezpečnostní obavy
ERC777 implementuje funkci `authoriseOperator`, která umožňuje někomu spravovat tokeny vaším jménem. Dexaran nám vysvětlil, že si myslí, že tato metoda je zastaralá a neměla by být používána. Oprávnění někoho ke správě tokenů vaším jménem navíc poškozuje šířku pásma sítě a vyžaduje více plynu. `authoriseOperator` již představuje jednu transakci a k provedení transakce je nutná další transakce "povolený výběr". K provedení převodu jsou tedy nutné dvě transakce, které lze provést pouze jednou transakcí.
Standard ERC777 dále obsahuje volitelný příznak, který zabrání zaseknutým tokenům provedením některých kontrol rozhraní ITokenRecipient a zkontroluje, zda je adresa na seznamu povolených. Jelikož je tento standard zaměřen na zabezpečení sítě, která zpracovává tokeny v hodnotě milionů dolarů, není dobré, aby byly tyto kontroly volitelné.
Další standardy
Existuje mnoho dalších standardů, jako je ERC827 který kombinuje některé výhody ERC223 se staršími funkcemi ERC20. The ERC664 standard se zaměřuje na modularitu tokenového standardu. Tento standard umožňuje upgradovat smlouvy o tokenech, ale zdědil kritickou chybu ERC20. Mezi další standardy patří ERC721, ERC677 a ERC820, jsou však méně známé.
Kompatibilita mezi normami
Zeptali jsme se Dexaran, které standardy jsou zpětně kompatibilní. Řekl nám, že bychom měli nejprve pochopit, co znamená „zpětná kompatibilita“: „Zpětná kompatibilita je vlastnost systému, produktu nebo technologie, která umožňuje interoperabilitu se starším starým systémem nebo se vstupem určeným pro takový systém.“
ERC20 & ERC223: Žetony ERC223 jsou kompatibilní s ERC20. Všechno, co je navrženo pro správnou práci s ERC20 (jako peněženky), může fungovat také s ERC223. Jedinou výjimkou jsou smlouvy, které se spoléhají na vzory schválení vkladu + transferFrom. Je však možné implementovat funkce approve + transferFrom s tokeny ERC223, i když právě teď nejsou součástí standardu. Pokud jde o peněženky a jakékoli služby třetích stran, které nejsou inteligentními smlouvami, automaticky podporují ERC223, protože data vstupního volání tokenu ERC20 jsou platná pro ERC223.
ERC20 & ERC777: V části „Zpětná kompatibilita“ návrhu ERC777 najdete následující prohlášení: „Tento EIP nezavádí zpětné nekompatibility a je kompatibilní se starším standardem tokenů ERC-20.“
Dexaran nám však řekl přesný opak a uvedl nám tento příklad: „Takové peněženky a služby jako MetaMask, Mist a MyEtherWallet pracují s tokeny ERC20. Vstup, který je určen pro token ERC20, je volání kontraktu, které obsahuje zakódované parametry a podpis funkce. Volání funkcí ve virtuálním stroji Ethereum jsou specifikována prvními čtyřmi bajty dat odeslaných s transakcí. Tyto 4bajtové podpisy jsou definovány jako první čtyři bajty hash kanonické reprezentace podpisu funkce. To znamená, že funkce „přenos (adresa, uint256)“ a „odeslání (adresa, uint256)“ budou mít různé podpisy. Ve výsledku nebude vstup navržený pro token ERC20 platný pro token ERC777. “ Protože používáme naši definici zpětné kompatibility, ERC777 není kompatibilní se standardem tokenů ERC20.
Kdy použít který standard
ERC20: Uživatel Reddit u / Dexaran nám dal sarkastickou radu: „Pokud chcete, aby vaši investoři kvůli chybám přišli o peníze.“
ERC223: Tento standard tokenu je také použitelný společně s ERC777. ERC777 má některé elegantní funkce, které ERC223 postrádají, ale logika ERC223 je přímá ve srovnání s ERC777, která může zaručit, že bude mnohem více méně náchylný k chybám. ERC223 navíc nespoléhá na žádnou centrální službu, což znamená, že váš token ERC223 bude záviset pouze na vaší vlastní implementaci. Jak jsme již zmínili dříve, cílem ERC223 je vylepšení zabezpečení, ale to způsobilo, že tokeny ERC223 nejsou v souladu se standardy ERC20.
ERC777: Tento standard tokenu je již použitelný. Na druhou stranu, ERC777 má některé bezpečnostní obavy, jak je uvedeno výše. Spoléhají také na centrální registr smluv, což je také bezpečnostní problém. Centrální registr může vývojářům usnadnit život, ale funguje také jako centrální bod selhání, přesně jako tomu bylo u Parity Multisig. Všechny Parity Multisigs se spoléhaly na centrální knihovnu kódů. Stalo se, že v knihovně byla chyba a byla zneužita. Výsledkem je, že všechny Parity Multisigs havarovaly. ERC777 navíc definuje novou sadu funkcí. Jedná se o pokus umožnit vývojářům tokenů, aby jejich tokeny byly v zájmu přijetí kompatibilní se standardy ERC20 i ERC777 současně. To znamená, že vývojář může zdědit chybu ERC20 v ERC777, ale umožňuje vývojáři použít více událostí zpracování transakcí.
Obecně: Všechny tokeny mají podobný případ použití – ICO. Řekl bych, že ERC223 a ERC777 se snaží vyřešit jeden problém ERC20 různými způsoby. ERC223 již využívá své místo Ethereum Classic místo ERC20.
Tento článek byl vytvořen pomocí Dexaran, vývojáře ERC223. Byly použity také některé komentáře Paula Edge k tokenovým standardům Ethereum.