375 tūkst. Priežasčių, kodėl reikia tobulinti ERC20
Naudojant ERC20 žetonų pagrindu sukurtus žugnerius, tokius kaip EOS, „Basic Attention Token“ (BAT) ir „Storj“, sunku įrodyti sąsajos sutarties sėkmę. Ethereum bendruomenė aiškiai sutelkė paramą pagal šį standartą, & tiek kūrėjų bendruomenės, tiek finansų rinkos reaguoja teigiamai. Tačiau dėl visos savo sėkmės ERC20 standartas sukėlė vieną ne ką mažiau reikšmingą klaidą:
Dėl ERC20 prieigos rakto standarto galutiniai vartotojai praranda pinigus, nes leidžia vartotojams siųsti ERC20 žetonus į jokius su ERC20 nesuderinamus prieigos raktų adresus.
Kai vartotojas siunčia ERC20 prieigos raktą į „Ethereum“ sutartį, kuri neatpažįsta ERC20 žetonų, vartotojas visam laikui praranda prieigą prie savo lėšų. Kiek tiksliai lėšų šiuo metu yra užrakinta dėl šios problemos? Vėlgi, nereikšminga suma:
- 310 067 BNT yra įstrigę „Golem“ sutartyje (šiuo metu verta apie 217 tūkst. USD).
- 242 REP yra įstrigę Augur sutartyje (šiuo metu verta apie 15 000 USD).
- 814 DGD yra įstrigę „Digix DAO“ sutartyje (šiuo metu verta apie 125 tūkst. USD).
- 14,506 1ST yra įstrigę „FirstBlood“ sutartyje (šiuo metu verta apie 12 000 USD).
Tai yra daugiau nei 370 000 USD + ERC20 žetonų, kurie yra įšaldyti šiose sutartyse; kadangi ERC20 žetonų sąrašas auga, greičiausiai konservatyviai neįvertinamas visas sutartyse užšaldytų šių žetonų kiekis. Aukščiau pateiktas sąrašas anaiptol nėra baigtinis – tai tik keli populiaresni ERC20 žetonai.
Nė viena iš aukščiau nurodytų sutarčių niekada nesitikėjo gauti jokių ERC20 žetonų – taigi vartotojams siunčiant žetonus šiais adresais, operacijas patvirtina tinklas; tačiau gavimo sutartis nepripažįsta žetonų. Ji nežino, ką daryti su šiais žetonais, dėl kurių lėšos bus užrakintos visiems laikams. Vėlgi, žetonai nėra atmetami – juos gaunanti sutartis tiesiog visiškai ignoruoja.
Daugumą šių operacijų netyčia įvykdo galutiniai vartotojai, paskambinę perkėlimas funkcija (priešingai nei anksčiau pristatyta automatinio perdavimo iš funkcijos funkcija). Prisiminkime, kad ERC20 naudoja abu perkėlimus & „TransferFrom“ – kaip paaiškėja, kai kurie galutiniai vartotojai naudoja „Transfer“, kad tiesiogiai siųstų ERC20 žetonus sutartims, kurios nesitiki, & todėl nepripažįsta gaunamų žetonų.
Galų gale, keli „Ethereum“ bendruomenės nariai nusprendė išspręsti šią problemą prašydami naujo EMTT prieigos rakto standarto. Šio naujo „GitHub“ ženklo standarto leidimo numeris yra numeris 223.
ERC223 pasiūlymas
„GitHub“ vartotojas Dexaranas dar 2017 m. Kovo 5 d. Pasiūlė naują ERC standartą (ERC223), kuriuo buvo siekiama išspręsti šią žetono atsarginio gedimo problemą. Jo „GitHub“ Nr. 223 naujo prieigos rakto pasiūlymo santrauka yra tokia:
„Dexaran“ žetonų pasiūlyme įgyvendinamos dvi pagrindinės funkcijos, kad būtų galima nedelsiant sustabdyti decentralizuotų programų vartotojus nuo atsitiktinio žetonų siuntimo į išmaniąsias sutartis, kurios nėra pasirengusios gauti minėtų žetonų:
- ERC20 konsolidavimas Perkėlimas & Perkelti iš funkcijos į vieną Perkėlimas funkcija su trimis parametrais: (adresas _to, uint _value, baitų duomenys).
- gaunantis sutartį, jei gauna žetonus, turi yra a ŽetonasFallBack funkcija, kuri tiksliai apibrėžia, kaip elgtis su kokio tipo gaunamuoju prieigos raktu.
Perkėlimas & Perkelti iš -> Perkėlimas
Pagrindinė ERC20 standarto dalis, prisidedanti prie šio bendro klausimo, yra tai, kad galutiniai vartotojai turi galimybę klaidingai naudoti vieną iš dviejų funkcijų, naudojamų perkėlimui (Perkėlimas & „TransferFrom“).
ERC223 siūlo abi funkcijas pakeisti viena Perkėlimas funkcija.
ERC223 leidžia „dapp“ galutiniams vartotojams siųsti žetonus bet koks „Ethereum“ adresas, neatsižvelgiant į tai, ar ta sutartis yra piniginė, ar sutartis, su ta pačia perdavimo funkcija. Čia logika yra ta, kad pašalinus galimybę vartotojams suaktyvinti perdavimo funkciją arba Naudojant funkciją „TransferFrom“ tik į vieną perkėlimo funkciją, galutiniai vartotojai nebeturi galimybės naudoti neteisingos funkcijos.
Naujai pasiūlyta perdavimo funkcija priima tris parametrus (anksčiau priėmė tik du) ir, dar svarbiau, atrodo, kad priimančiame adresu reikia iškviesti „TokenFallback“ funkciją. Neturint trijų apibrėžtų parametrų, perkėlimo funkcijos sukompiliuoti nepavyksta; be gavimo adreso, kuriame yra „TokenFallback“ funkcija, persiuntimo funkcijos operacija nepavyks & jokie žetonai nebus perduodami.
funkcija tokenFallBack ()
„Ethereum“ kūrime yra sutarties modifikatorius mokėtinas kuri naudojama rengiant sutartį gauti Eterį – tai reiškia, kad sutartis dabar tikisi skaitmeninės valiutos. Jei sutartis ne yra mokamas modifikatorius, išsiųsta operacija tiesiog atšaukiama & grįžo. Nieko nuostabaus, tai „Ethereum 101“.
Analogiškas būdas galvoti apie „ERC223 tokenFallback“ funkciją yra tai, kad mokamas modifikatorius yra paruošti sutartį su „Ether“, nes „tokenFallback“ funkcija yra paruošti sutartį, kad gautų x žetoną..
Pagal šį standartą sutarčių kūrėjai turi įgyvendinti tokenFallback, jei jie nori, kad jų sutartys veiktų su konkrečiais žetonais. Jei imtuvas yra ne sutarties adresas, ERC223 žetonų operacija bus vykdoma taip pat, kaip ir bet kuris dabartinis ERC20 žetonų perdavimas. Kita vertus, jei imtuvas yra sutartis, tada ERC223 žetonų sutartyje pirmiausia bus bandoma paskambinti tokenFallback į imtuvo sutartį; jei nerandama „tokenFallback“ funkcija, operacija nepavyks.
EMTT raida
Nepaisant apytikslės ERC223 juodraščio, horizonte iškyla dar vienas ERC standartas – ERC 721. ERC721 daugiausia dėmesio skiria nepakeičiamas turto, pavyzdžiui, „CryptoKitties“, „Decentraland“ žemės, & galbūt net vienos dienos nekilnojamojo turto turtas. ERC 721 pažangą galite rasti čia: https://github.com/ethereum/eips/issues/721
Visa tai rodo, kad būdama jauna, „Ethereum“ bendruomenė labai rimtai tobulina savo sumanių sutarčių platformą, pateikdama tinkamus standartus prieš vis didėjančią naujų kūrėjų bangą. Lėtai, bet užtikrintai, ERC žetonų klaidų sumažės – ir tada taps klausimas, ar gali būti naujausia standartinė skalė?