375 000 razloga za poboljšanje ERC20
S juggernautima temeljenim na ERC20, poput EOS-a, Basic Attention Token (BAT) i Storja, teško je argumentirati uspjeh ugovora o sučelju. Zajednica Ethereum očito je okupila podršku oko ovog standarda, & i zajednice programera i financijska tržišta reagiraju pozitivno. Međutim, sav svoj uspjeh ERC20 standard rezultirao je jednom ne tako beznačajnom greškom:
Standard ERC20 tokena dovodi do gubitka novca za krajnje korisnike dopuštajući korisnicima da šalju ERC20 tokene na adrese tokena koji nisu u skladu s ERC20.
Kada korisnik pošalje ERC20 token ugovoru Ethereum koji ne prepoznaje ERC20 tokene, korisnik zauvijek gubi pristup svojim sredstvima. Koliko je točno sredstava trenutno zaključano zbog ovog problema? Opet, ne beznačajan iznos:
- 310.067 BNT zaglavili su u ugovoru s Golemom (trenutno vrijedi oko 217.000 USD).
- 242 REP zaglavili su u ugovoru Augur (trenutno vrijedi oko 15.000 USD).
- 814 DGD zaglavili su u ugovoru Digix DAO (trenutno vrijedi oko 125.000 USD).
- 14.506 1ST zaglavili su u ugovoru FirstBlood (trenutno vrijedi oko 12 tisuća USD).
To je preko nevjerojatnih 370.000 USD ERC20 tokena koji su zamrznuti u ovim ugovorima; budući da popis ERC20 tokena raste, ovaj je broj najvjerojatnije konzervativni podcjenjivač ukupne količine tih tokena zamrznutih u ugovorima. Gornji popis nikako nije iscrpan – ovo je samo nekoliko popularnijih ERC20 tokena.
Niti jedan od gore navedenih ugovora nikada nije očekivao primanje bilo kakvih ERC20 tokena – pa kada korisnici pošalju tokene na ove adrese, transakcije potvrđuje mreža; međutim, ugovor o primanju ne prepoznaje tokene. Ne zna što učiniti s tim tokenima što rezultira zauvijek zaključavanjem sredstava. Opet, tokeni se ne odbijaju – samo su u potpunosti ignorirani ugovorom o primanju.
Većinu ovih transakcija nenamjerno počinju krajnji korisnici koji pozivaju prijenos funkcija (za razliku od automatiziranog prijenosaOd funkcije koja je prethodno uvedena). Podsjetimo da ERC20 koristi oba Transfera & TransferFrom – kako se čini, neki krajnji korisnici koriste Transfer za izravno slanje ERC20 tokena ugovorima koji ne očekuju, & stoga ne prepoznajte dolazne tokene.
Na kraju je nekoliko članova zajednice Ethereum odlučilo da se uhvati u koštac s tim problemom zahtijevajući novi standard ERC tokena. Broj izdanja ovog novog standarda tokena na GitHub-u je broj izdanja # 223.
Prijedlog ERC223
Korisnik GitHub-a Dexaran predložio je novi ERC standard (ERC223) još 5. ožujka 2017. koji je imao za cilj popraviti ovaj problem s rezervnim neuspjehom tokena. Sažetak za njegov prijedlog novog tokena GitHub br. 223 je sljedeći:
Prijedlog Dexaranovog tokena implementira dvije temeljne značajke kako bi se odmah spriječilo da decentralizirani korisnici aplikacija slučajno ne šalju tokene pametnim ugovorima koji nisu spremni za primanje navedenih tokena:
- Konsolidacija ERC20 Prijenos & TransferFrom funkcionira u jedinstvenu Prijenos funkcija s tri parametra: (adresa _to, uint _value, bajtovi podataka).
- The primanje ugovor, ako prima žetone, mora sadrže a TokenFallBack funkcija koja točno određuje način rukovanja kojom vrstom dolaznog tokena.
Prijenos & TransferFrom -> Prijenos
Ključni dio standarda ERC20 koji pridonosi ovom uobičajenom problemu je činjenica da krajnji korisnici imaju mogućnost pogreškom koristiti jednu od dvije funkcije korištene za prijenos (Prijenos & TransferFrom).
ERC223 predlaže zamjenu obje funkcije jednom Prijenos funkcija.
ERC223 omogućuje dapp krajnjim korisnicima slanje tokena na bilo koji Adresa Ethereuma, bez obzira je li taj ugovor novčanik ili ugovor, s istom funkcijom prijenosa. Logika je ovdje da uklanjanjem mogućnosti da korisnici pokreću funkciju prijenosa ili funkcija TransferFrom na samo jednu funkciju Prijenosa, krajnji korisnici više nemaju potencijal koristiti pogrešnu funkciju.
Novo predložena funkcija Prijenos prihvaća tri parametra (prethodno prihvaćena samo dva) i, što je još važnije, čini se da poziva adresu TokenFallback na adresi primanja. Bez tri definirana parametra, funkcija Prijenos se ne uspije sastaviti; bez adrese prijema koja sadrži funkciju TokenFallback, transakcija funkcije prijenosa neće uspjeti & neće se prenositi nikakvi tokeni.
funkcija tokenFallBack ()
U razvoju Ethereuma postoji modifikator ugovora plativ koji se koristi za pripremu ugovora za primanje etera – to znači da ugovor sada očekuje digitalnu valutu. Ako ugovor to učini ne sadrže modifikator koji se plaća, poslana transakcija jednostavno se poništava & vratio. Ništa posebno, ovo je Ethereum 101.
Analogno razmišljanje o funkciji ERC223 tokenFallback je da modifikator koji se plaća mora pripremiti ugovor za primanje Etera, kao što je funkcija tokenFallback priprema ugovora za primanje x žetona.
U ovom standardu ugovorni programeri mora implementirati tokenFallback ako žele da njihovi ugovori rade s određenim tokenima. Ako je primatelj ne ugovorna adresa, transakcija tokena ERC223 izvršit će se baš kao i svaki trenutni prijenos tokena ERC20. S druge strane, ako je primatelj ugovor, tada će ugovor o tokenu ERC223 prvo pokušati nazvati tokenFallback na ugovoru o prijamu; ako nije pronađena funkcija tokenFallback, transakcija neće uspjeti.
Evolucija ERC-a
Unatoč grubom stanju nacrta ERC223, na pomolu se nazire još jedan ERC standard – ERC 721. ERC721 se usredotočuje na nezamjenjiv sredstva poput CryptoKitties, Decentraland land, & možda čak i jednodnevna imovina. Napredak ERC 721 možete pronaći ovdje: https://github.com/ethereum/eips/issues/721
Sve da bi se pokazalo da dok je mlada, zajednica Ethereum vrlo ozbiljno želi poboljšati svoju platformu pametnih ugovora stavljanjem pravih standarda pred rastući val novih programera. Polako, ali sigurno, ERC token bugovi će se smanjivati - i tada će pitanje postati najnovije standardne skale?