Vsi ste seznanjeni z žetoni ERC20, saj ste verjetno lastnik nekaj, ki jih distribuira nekakšna prodaja žetonov. Toda ali ste vedeli, da poleg ERC20 obstaja še veliko standardov? Ethereum ima dolgo zgodovino razvitih standardov.
Da bi imeli boljšo predstavo o tem, kaj pomeni ERC, pomeni “Ethereum Request for Comment”. To je predlog, predložen v razpravo, in predlogi glede na dejanski standard. Številka (na primer 20) se nanaša na številko izdaje na platformi za skupno rabo kode Github. Najprej si oglejmo standard ERC20.
Standard ERC20
Kaj točno je standard ERC20?
Pojav žetonov ERC20 je revolucionarno spremenil trg kriptovalut in odprl vrata številnim Kriptovaluta ICO projekti, ki jim je bil svet priča leta 2017. Koda ERC20, predstavljena leta 2015, opisuje poseben seznam pravil, ki jih mora uporabiti dani žeton, ki temelji na Ethereumu, in poenostavlja postopek programiranja funkcij žetonov na blokovni verigi Ethereum. V bistvu so žetoni ERC20 posebne oblike pametnih pogodb, ki uporabljajo Ethereumov blockchain.
Najvidnejši primeri žetonov ERC20 vključujejo Bancor, EOS, Tronix, BNB, VeChain in Bankex.
Pred inovacijo standarda ERC20 za žetone Ethereum so morali kodirji ustvariti posebne izvedbene standarde za razvoj žetona in njegovo lansiranje v omrežje Ethereum. Kljub temu je koda žetona ERC20 poenostavila postopek ustvarjanja žetonov, zahvaljujoč poenostavljenemu protokolu in standardom pametne pogodbe. Koda ERC20 je ublažila zapletenost izvajanja pametnih pogodb žetona, kar je znatno zmanjšalo možnost prekinitve pogodb žetona.
Od aprila 2018 jih je 66.468 pogodb žetonov ERC20, zahvaljujoč enotnosti kode žetonov, ki jo zagotavlja standard ERC20, ki je izmenjavam kriptovalut olajšal seznam različnih žetonov na svojih trgovalnih platformah. Kot tak je standard ERC20 kripto skupnosti pomagal premagati likvidnostne težave, ki bi lahko povezale tako ogromno število žetonov na osnovi Ethereuma.
Funkcije žetona ERC20:
Koda ERC20 opisuje šest posebnih funkcij za žetone, ki so
1- Pridobivanje celotne ponudbe žetonov prek "totalSupply" funkcijo
2- Pridobivanje žetonskega stanja drugega računa, povezanega z "_lastnik" naslov prek " balanceOf (naslov _owner) konstantni donosi (uint256 saldo)" funkcijo.
3- Pošiljanje določene količine žetonov "_vrednost" na določen naslov prek " prenos (naslov _to, uint256 _value) vrne (uspeh bool)" funkcijo.
4- Pošiljanje določene količine žetonov "_vrednost" z enega naslova žetona (pogodbe) na drug naslov žetona (pogodbe) prek "transferFrom (address _from, address _to, uint256 _value) vrne (uspeh bool)" funkcijo.
5- Omogočanje določenemu računu, da večkrat dvigne žetone s svojega računa, hkrati pa vnaprej določite zgornjo mejo za količino žetonov, ki se dvigne s "_vrednost" parameter. To je mogoče doseči s pomočjo "odobritev (naslov _spender, uint256 _value) vrne (uspeh bool)". Zgornja meja za umik, tj "_vrednost" parameter, ga je mogoče preklicati, ko je funkcija priklicana.
6- Vrnitev preostale količine žetonov znotraj vnaprej določenega zneska, določenega z zgornjo mejo, ki jo lahko porabi "_poraba" za dvig z računa "_lastnik". To je mogoče izvesti prek "dodatek (naslov * _lastnik *, naslov * _spender *) konstantno vrne (preostalo uint256)" funkcijo.
Teh šest funkcij, opredeljenih s kodo ERC20, predstavlja težave s funkcionalnostjo temelja, ki vključujejo, kako se bodo ti žetoni prenašali med različnimi računi in kako lahko uporabniki pridobijo podatke, povezane z določenim žetonom ERC20. Te skupine funkcij so predpisane za zagotovitev, da bodo žetoni, ki temeljijo na Ethereumu, delovali podobno v katerem koli delu platforme Ethereum. Kot take bodo vse kripto denarnice, ki so skladne z eterskim kovancem, podpirale tudi žetone, ki temeljijo na standardu ERC20.
Kritična napaka:
ERC20 je prvi žetonski standard Ethereuma. Kot je pogosto pri novi kodi, vsebuje nekaj napak ali logičnih napak. ERC20 predvideva dva načina izvedbe žetonske transakcije. Najprej vam funkcija prenosa omogoča pošiljanje žetonov na nekdo naslov. Če želite na pametno pogodbo položiti žetone, uporabite kombinacijo “odobri + prenesite od”. To pogodbo morate pooblastiti za umik žetonov s pomočjo funkcije odobritve. Nato morate poklicati funkcijo pogodbe, ki bo obravnavala vaš depozit in dvignila vaše žetone s pomočjo funkcije transferFrom.
Kaj če naključno nakažete žetone na pogodbo s prenosno funkcijo? Transakcija bo uspela, vendar je prejemniška pogodba ne bo prepoznala. Če na primer pošljete žetone v pogodbo o decentralizirani menjavi, bo pogodba o zamenjavi prejela vaše žetone, vendar jih ne bo pripisala na vaše stanje žetona za izmenjavo. Poleg tega, če pogodba o decentralizirani menjavi ne izvaja funkcije ekstrakcije žetona v sili, potem žetonov v nobenem primeru ni mogoče dobiti nazaj, kar povzroči trajno izgubo žetonov. Zaradi te napake je ekosistem Ethereum izgubil že milijone dolarjev.
Zakaj še vedno uporabljamo standard ERC20?
Uporabnik Reddita u / Deksaran, ustvarjalec standarda ERC223, je eden prvih razvijalcev, ki je skupnost obvestil o omenjeni napaki. Vprašali smo ga, zakaj se ERC20 še vedno tako pogosto uporablja, tudi če vemo za to kritično napako. Navedel je naslednje razloge:
- Zaradi kazenske neodgovornosti razvijalcev žetonov za njihova dejanja.
- Ker Ethereum Foundation še vedno promovira standard žetona ERC20, tudi če je znano, da vsebuje napake. Enako kot prej pri TheDAO. Povedati morajo "Nehaj zdaj" pa ne bodo.
- Ker je glavni razlog za razvoj žetonov zbiranje sredstev in ne ustvarjanje izdelkov.
- Ker bo uporaba drugačnega standarda povzročila večje omrežne učinke. To ni tisto, kar v resnici potrebujemo, saj omrežje Ethereum že ima težave z razširljivostjo.
Standard ERC223
The ERC223 standard je predlagal u / Dexaran, ki je pomagal ustvariti ta članek. ERC223 je žetonski standard, ki omogoča prenosom žetonov, da se obnašajo popolnoma enako kot eter transakcije. ERC223 uporablja obdelavo dogodkov (obravnava transakcijo kot dogodek), da prepreči izgubo žetonov v neobdelanih transakcijah. Ta izboljšani standard odpravlja kritično napako ERC20, tako da funkcija prenosa povzroči napako pri neveljavnih prenosih in prekliče transakcijo, tako da sredstva ne bodo izgubljena. Skratka, ERC223 se osredotoča na varnost.
Dodatki in težave
ERC223 dodaja dodaten podatkovni parameter funkciji prenosa, da omogoča bolj zapletene operacije kot le prenos žetonov.
Glavna skrb Dexarana je, da lahko preveč ljudi izgubi svoje žetone, tako da jih pošlje na pogodbe s funkcijo prenosa, ne pa z metodami odobritve in prenosaFrom, kot smo že omenili. Njegova rešitev je spremeniti način prenosa, da preveri, ali je naslov prejemnika pogodba (tj. Vsebuje podatke) ali ne. Če gre za pogodbo, predpostavlja, da obstaja funkcija tokenFallback, ki jo pokliče nazaj. Glavna pomanjkljivost je, da če tokenFallback ne obstaja, bo poklicana nadomestna funkcija prejemne pogodbe in poslani žetoni bodo morda še vedno izgubljeni.
Standard ERC777
ERC777 je nov zamenljiv žetonski standard, ki se opira na ERC820 (pogodbeni register psevdo-introspekcije) in poskuša rešiti težave ERC20, kot je pomanjkanje mehanizmov za obdelavo transakcij, ki so povzročili izgubo milijonov dolarjev iz ekosistema Ethereum. Skratka, ERC777 se osredotoča na posvojitev s ponudbo a širok spekter mehanizmov za obdelavo transakcij.
Prednosti
Glavna prednost ERC777 je, da uporablja nov način prepoznavanja pogodbenega vmesnika. Ta standard predpostavlja, da v omrežju Ethereuma obstaja centralni register pogodb (to je opredeljeno v ERC820). Vsak se lahko sklicuje na ta register in ve, ali določen naslov (ni pomembno, ali je naslov pogodben ali ne) podpira določen nabor funkcij, npr. “Vmesnik”.
Ena glavnih težav Ethereuma je nezmožnost vedeti, katere funkcije izvaja pogodba. ERC820 naj bi to rešil. ERC777 izkorišča ta pristop, kar je vsekakor dobra ideja.
Po drugi strani lahko ustvarite žeton, ki bo implementiral privzete funkcije ERC20 skupaj z novimi funkcijami ERC777 brez preglasitev (in po želji podedoval kritično napako ERC20). To lahko zagotovi dober mrežni učinek za ta novi standard žetonov in hitrejše sprejemanje. Kot kaže praksa, je glavni cilj razvijalcev žetonov zbiranje denarja, ki predpostavlja, da morajo svoje žetone potisniti na borze. Izmenjave lažje podpirajo žeton, ki izvaja starejše funkcije ERC20 (ni pomembno, ali te funkcije vsebujejo napake ali ne), brez raziskav o novejših funkcionalnostih novih standardov žetonov. Lažje kot izmenjave podpirajo žetone na novem standardu, več razvijalcev ga bo uporabljalo. To pospešuje sprejemanje ERC777, medtem ko ERC223 nima te lastnosti.
Kaj je drugače?
Ta standard žetona opredeljuje popolnoma nov nabor funkcij, tj. Funkcije “pošiljanja” namesto “prenosov”. “authoriseOperator” namesto “odobri”. Funkcija za obdelavo `tokensReceived` namesto funkcije za obdelavo` tokenFallback`.
Tak pristop lahko zagotovi, da se funkcije tega standarda ne bodo križale in preglasile s funkcijami katerega koli drugega standarda žetonov, zato je možno hkrati izdelati žeton, ki bo združljiv s standardi ERC777 in ERC820.
Končno ERC777 standardizira Mint and Burn funkcionalnost žetonov.
Točke neuspeha in varnostni pomisleki
ERC777 izvaja funkcijo `authoriseOperator`, ki omogoča nekomu, da v vašem imenu upravlja žetone. Dexaran nam je pojasnil, da meni, da je ta metoda zastarela in je ne bi smeli uporabljati. Poleg tega pooblastilo nekoga, da v vašem imenu upravlja žetone, škoduje pasovni širini omrežja in zahteva več bencina. “authoriseOperator” že predstavlja eno transakcijo, za izvedbo pa je potrebna druga transakcija "dovoljeni umik". Torej sta za prenos potrebni dve transakciji, ki ju je mogoče izvesti s samo eno transakcijo.
Nato standard ERC777 vsebuje neobvezno zastavico za preprečevanje zaljubljenih žetonov z izvajanjem nekaterih preverjanj o vmesniku ITokenRecipient in za preverjanje, ali je naslov na seznamu dovoljenih. Ker je ta standard osredotočen na varnost omrežja, ki obravnava žetone, ki so vredni milijone dolarjev, ni dobro, če so ti pregledi neobvezni.
Drugi standardi
Obstaja veliko drugih standardov, kot so ERC827 ki združuje nekatere prednosti ERC223 s starejšimi funkcijami ERC20. The ERC664 standard osredotoča na modularnost žetonskega standarda. Ta standard omogoča nadgradnjo žetonskih pogodb, vendar je podedoval kritično napako ERC20. Drugi standardi vključujejo ERC721, ERC677 in ERC820, vendar so manj znani.
Združljivost med standardi
Dexarana smo vprašali, kateri standardi so združljivi nazaj. Povedal nam je, da bi morali najprej razumeti, kaj pomeni “povratna združljivost”: “Povratna združljivost je lastnost sistema, izdelka ali tehnologije, ki omogoča interoperabilnost s starejšim starejšim sistemom ali z vhodnimi podatki, zasnovanimi za tak sistem.”
ERC20 & ERC223: Žetoni ERC223 so združljivi z ERC20. Vse, kar je zasnovano za pravilno delovanje z ERC20 (na primer denarnice), lahko deluje tudi z ERC223. Edina izjema so pogodbe, ki se zanašajo na odobritev in prenos iz vzorcev vzorcev depozitov. Vendar pa je mogoče s funkcijo ERC223 izvajati funkcije odobritve + prenosaFrom, tudi če trenutno niso vključene v standard. Kar zadeva denarnice in katere koli storitve tretjih oseb, ki niso pametne pogodbe, podpirajo ERC223 samodejno, ker vhodni klicni podatki žetona ERC20 veljajo za ERC223.
ERC20 & ERC777: V razdelku „Združljivost z za nazaj“ predloga ERC777 lahko najdete naslednjo izjavo: „Ta EIP ne uvaja nezdružljivosti z nazaj in je združljiv s starejšim standardom žetona ERC-20.“
Vendar nam je Dexaran povedal ravno nasprotno in podal primer: »Denarnice in storitve, kot so MetaMask, Mist in MyEtherWallet, delujejo z žetoni ERC20. Vhod, ki je zasnovan za žeton ERC20, je klic pogodbe, ki vsebuje kodirane parametre in podpis funkcije. Klici funkcij v navideznem računalniku Ethereum so določeni s prvimi štirimi bajti podatkov, poslanih s transakcijo. Ti 4-bajtni podpisi so opredeljeni kot prvi štirje bajti zgoščene kanonske predstavitve podpisa funkcije. To pomeni, da imata funkciji “prenos (naslov, uint256)” in “pošlji (naslov, uint256)” različna podpisa. Posledično vhod, zasnovan za žeton ERC20, ne bo veljaven za žeton ERC777. « Ker uporabljamo definicijo združljivosti za nazaj, ERC777 ni združljiv s standardom žetona ERC20.
Kdaj uporabiti kateri standard
ERC20: Uporabnik Reddita u / Dexaran nam je dal sarkastičen nasvet: “Ko želite, da vaši vlagatelji zaradi napak izgubijo denar.”
ERC223: Ta standard žetonov je uporaben tudi skupaj z ERC777. ERC777 ima nekaj elegantnih funkcij, ki jih ERC223 nima, vendar je logika ERC223 preprosta v primerjavi z ERC777, kar lahko zagotovi, da vsebuje manj nagnjena k napaki. Poleg tega se ERC223 ne zanaša na nobeno osrednjo storitev, kar pomeni, da bo vaš žeton ERC223 odvisen samo od vaše izvedbe. Kot smo že omenili, je cilj ERC223 izboljšave varnosti, vendar zaradi tega žetoni ERC223 niso v skladu s standardi ERC20.
ERC777: Ta standard žetonov je že uporaben. Po drugi strani pa ima ERC777 nekaj pomislekov glede varnosti, kot je omenjeno zgoraj. Zanašajo se tudi na centralni register pogodb, kar je tudi varnostna skrb. Centralni register lahko olajša življenje razvijalcem, deluje pa tudi kot osrednja točka okvare, tako kot pri Parity Multisig. Vsi Parity Multisigs so se zanašali na centralno knjižnico kod. Zgodilo se je, da je v knjižnici prišlo do napake in so jo izkoristili. Posledično so se vsi Parity Multisigs zrušili. Poleg tega ERC777 opredeljuje nov nabor funkcij. To je poskus, da se razvijalcem žetonov omogoči, da svoje žetone hkrati usvojijo tako s standardi ERC20 kot s ERC777. To pomeni, da lahko razvijalec podeduje napako ERC20 v ERC777, vendar razvijalcu omogoča, da uporabi več dogodkov za obdelavo transakcij.
Na splošno: Vsi žetoni imajo podoben primer uporabe – ICO. Rekel bi, da ERC223 in ERC777 poskušata rešiti eno težavo ERC20 na različne načine. ERC223 že zaseda svojo nišo Ethereum Classic namesto ERC20.
Ta članek je nastal s pomočjo Dexarana, razvijalca ERC223. Uporabljeni so bili tudi nekateri komentarji Paula Edgeja o žetonskih standardih Ethereuma.