ERC-20 tokenite tutvustus
Avaleht
Artiklid
ERC-20 tokenite tutvustus

ERC-20 tokenite tutvustus

Keskmine
Avaldatud Jul 31, 2020Värskendatud Dec 28, 2022
12m

Sissejuhatus

Ethereumi asutas Vitalik Buterin 2014. aastal, positsioneerides end avatud lähtekoodiga platvormina detsentraliseeritud rakenduste (DAppide) käivitamiseks. Paljud Buterini motivatsioonid uue plokiahela loomiseks tulenesid Bitcoini protokolli vähesest paindlikkusest.

Alates selle käivitamisest on Ethereumi plokiahel meelitanud ligi arendajaid, ettevõtteid ja ettevõtjaid, tekitades kasvavat kasutajate tööstust, kes käivitavad nutilepinguid ja hajutatud rakendusi.

Selles artiklis vaatleme ERC-20 standardit, mis on tokenite loomise oluline raamistik. Kuigi see on Ethereumi võrgul spetsiifiline, inspireeris see raamistik ka teisi plokiahela standardeid, näiteks Binance Chaini BEP-2.


Mis on ERC-20 standard?

Ethereumis on ERC Ethereumi kommentaaritaotlus – Ethereum Request for Comments. Need on tehnilised dokumendid, mis kirjeldavad Ethereumis programmeerimise standardeid. Neid ei tohi segi ajada Ethereumi täiustamisettepanekutega (Ethereum Improvement Proposals – EIP), mis sarnaselt Bitcoini BIP-idega soovitavad parandada protokolli ennast. Selle asemel püüavad ERC-d kehtestada kokkuleppeid, mis hõlbustavad rakenduste ja lepingute omavahelist suhtlemist.

Vitalik Buterin ja Fabian Vogelstelleri poolt 2015. aastal loodud ERC-20 pakub Ethereumil põhinevate tokenite jaoks suhteliselt lihtsat vormingut. Järgides ülevaadet, ei pea arendajad uuesti jalgratast leiutama. Selle asemel saavad nad rajada tööstuses juba arendatud vundamendi peale.

Kui uued ERC-20 tokenid on loodud, on need automaatselt koostalitlusvõimelised ERC-20 standardit toetavate teenuste ja tarkvaraga (tarkvara rahakotid, riistvara rahakotid, börsid jne).

Tuleb märkida, et ERC-20 standard töötati välja EIP-ks (täpsemalt EIP-20). See juhtus paar aastat pärast esialgset ettepanekut selle laialdase kasutamise tõttu. Kuid isegi aastaid hiljem on nimi „ERC-20“ jäänud.


Lühikokkuvõte Ethereumi tokenitest

Erinevalt ETH-st (Ethereumi natiivne krüptoraha) ei hoita ERC-20 tokeneid kontodel. Tokenid eksisteerivad ainult lepingus, mis on nagu iseseisev andmebaas. See määrab reeglid tokenitele (st nimi, sümbol, jagatavus) ja peab nimekirja, mis seob kasutajate saldod nende Ethereumi aadressidega.

Tokenite teisaldamiseks peavad kasutajad saatma lepingule tehingu, milles palutakse osa nende saldost mujale eraldada. Näiteks kui Alice soovib Bobile saata 5000 BinanceAcademyTokenit, kutsub ta välja funktsiooni BinanceAcademyTokeni nutilepingus, paludes tal seda teha.


Kasutajad, kes suhtlevad nutilepinguga


Tema taotlus sisaldub selles, mis näib olevat tavaline Ethereumi tehing, mille eest makstakse tokeni lepingu eest 0 ETH. Taotlus sisaldub tehingus lisaväljal, mis määrab, mida Alice teha tahab – antud juhul kanda tokenid Bobile.

Kuigi ta ei saada etherit, peab ta siiski maksma selles sisalduvat teenustasu, et tema tehing plokki kaasata. Kui tal pole ETH-d, peab ta enne tokenite ülekandmist seda hankima.

Siin on näide ülaltoodust Etherscanis: keegi esitab taotluse BUSD lepingule. Näed, et tokenid on üle kantud ja tasu on makstud, kuigi väljal Väärtus on näidatud, et saadetud on 0 ETH-d.

Nüüd, kui oleme kursis, heidame pilgu kapoti alla, et paremini mõista tüüpilise ERC-20 lepingu struktuuri. 


Kuidas luuakse ERC-20 tokeneid?


Illustratsioon loomisel olevast ERC-20 tokenist


Et olla ERC-20-ga ühilduv, peab sinu leping sisaldama kuut kohustuslikku funktsiooni: totalSupply, balanceOf, transfer, transferFrom, approve ja allowance. Lisaks saad määrata valikulisi funktsioone, nagu name, symbol ja decimal. Nende funktsioonide nimede põhjal võib olla selge, mida need funktsioonid teevad. Kui ei, siis ära muretse – me hakkame neid lahkama. 

Allpool on toodud funktsioonid, nagu need kuvatakse Ethereumi spetsiaalselt loodud Solidity keeles.


totalSupply

function totalSupply() public view returns (uint256)

Kui kasutaja seda esile kutsub, tagastab ülaltoodud funktsioon lepingus sisalduvate tokenite kogupakkumise.


balanceOf 

function balanceOf(address _owner) public view returns (uint256 balance)

Erinevalt totalSupplyst võtab balanceOf parameetri (aadressi). Selle kutsumisel tagastab see selle aadressi tokeni varade saldo. Pea meeles, et Ethereumi võrgus olevad kontod on avalikud, nii et saad teha mis tahes kasutaja saldo kohta päringu, kui tead selle aadressi.


transfer

function transfer(address _to, uint256 _value) public returns (bool success)

transfer asjakohaselt kannab tokenid ühelt kasutajalt teisele. Siin sisestad aadressi, kuhu soovid saata ja ülekantava summa.

Kutsumisel käivitab transfer selle, mida nimetatakse sündmuseks event (antud juhul sündmuse ülekandmine), mis põhimõtteliselt käsib plokiahelal lisada sellele viite.


transferFrom

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)

Funktsioon transferFrom on mugav alternatiiv funktsioonile transfer, mis võimaldab detsentraliseeritud rakendustes veidi rohkem programmeeritavust. Sarnaselt transferiga kasutatakse seda tokenite teisaldamiseks, kuid need ei pea tingimata kuuluma lepingu esile kutsujale. 

Teisisõnu, saad volitada kedagi – või teist lepingut – sinu nimel raha üle kandma. Võimalik kasutusjuhtum on liitumispõhiste teenuste eest tasumine, mille puhul ei soovita iga päev/nädal/kuu käsitsi makset saata. Selle asemel lased programmil seda sinu eest teha.

See funktsioon käivitab sama sündmuse nagu funktsioon transfer.


approve

function approve(address _spender, uint256 _value) public returns (bool success)

approve on programmeeritavuse seisukohalt veel üks kasulik funktsioon. Selle funktsiooniga saad piirata tokenite arvu, mida nutileping võib sinu saldolt välja võtta. Ilma selleta on sul oht, et leping töötab valesti (või võidakse seda ära kasutada) ja see varastab kogu sinu raha. 

Võtame jälle näite tellimismudelist. Oletame, et sul on tohutul hulgal BinanceAcademyTokeneid ja soovid seadistada iganädalasi korduvaid makseid voogesituse DAppile. Oled hõivatud Binance Academy sisu lugemisega päeval ja öösel, nii et sa ei soovi iga nädal aega kulutada tehingu käsitsi loomiseks.

Sul on tohutu BinanceAcademyTokenite saldo, mis ületab tunduvalt tellimuse eest tasumiseks vajaliku summa. Selleks, et DApp ei tühjendaks kogu sinu saldot, saad määrata piirangu funktsiooniga approve. Oletame, et sinu tellimus maksab ühe BinanceAcademyTokeni nädalas. Kui sead heakskiidetud väärtuse ülempiiriks kakskümmend tokenit, võid saada oma tellimuse viieks kuuks automaatselt tasutud.

Halvimal juhul, kui DApp üritab kogu sinu raha välja võtta või kui ilmneb viga, võid kaotada vaid kakskümmend tokenit. See ei pruugi olla ideaalne, kuid kindlasti ahvatlevam kui kogu oma hoiuse kaotamine.

Kutsumisel käivitab approve kinnitussündmuse. Sarnaselt ülekandesündmusega kirjutab see andmed plokiahelasse.


allowance 

function allowance(address _owner, address _spender) public view returns (uint256 remaining)

Funktsiooni allowance saab kasutada koos funktsiooniga approve. Kui oled andnud lepingule loa oma tokeneid hallata, võid seda kasutada selleks, et kontrollida, kui palju see võib veel välja võtta. Näiteks kui sinu tellimus on sinu kahekümnest heakskiidetud tokenist ära kasutanud kaksteist, peaks allowance'i kutsumine tagastama kokku kaheksa.


Valikulised funktsioonid

Eelnevalt käsitletud funktsioonid on kohustuslikud. Teisest küljest ei pea funktsioone name, symbol ja decimal lisama, kuid need võivad sinu ERC-20 lepingu pisut ilusamaks muuta. Vastavalt võimaldavad need lisada inimesele loetava nime, määrata sümboli (st ETH, BTC, BNB) ja määrata, mitme kümnendkohaga on tokenid jagatavad. Näiteks võivad valuutadena kasutatavad tokenid rohkem jagatavast kasu saada kui token, mis tähistab kinnisvara omandiõigust.


Vaata seda näidet GitHubis, et näha neid elemente päris lepingus.


Mida saavad ERC-20 tokenid teha?


Illustratsioon ERC-20 tokeni erinevatest kasutusviisidest


Pannes kokku kõik ülaltoodud funktsioonid saame ERC-20 lepingu. Saame teha päringu kogupakkumise kohta, kontrollida saldosid, raha üle kanda ja anda teistele DAppidele loa meie eest tokenite haldamiseks.

Suur osa ERC-20 tokenite atraktiivsusest on nende paindlikkus. Väljatoodud kokkulepped ei piira arendamist, nii et osapooled saavad rakendada lisafunktsioone ja määrata oma vajadustele vastavad konkreetseid parameetreid.


Stabiilsusraha

Stabiilsusraha (fiat-rahaga seotud tokenid) kasutavad sageli ERC-20 tokeni standardit. BUSD-lepingu tehing, millele me varem viitasime, on üks näide ja enamik suuremaid stabiilsusrahasid on saadaval ka selles vormingus.

Tüüpilise fiat-tagatud stabiilsusraha puhul haldab väljastaja eurode, dollarite jne reserve. Seejärel väljastavad nad iga reservis oleva üksuse kohta ühe tokeni. See tähendab, et kui 10 000 dollarit lukustataks varahoidlasse, saaks väljastaja luua 10 000 tokenit, millest igaühte saab lunastada 1 dollari eest.

Seda on tehniliselt Ethereumis üsna lihtne rakendada. Väljastaja sõlmib lihtsalt lepingu 10 000 tokeniga. Seejärel jagavad nad need kasutajatele, lubades, et nad saavad hiljem lunastada tokenid proportsionaalse summa fiat-raha eest. 

Kasutajad saavad oma tokenitega teha mitmeid asju – nad saavad osta kaupu ja teenuseid või kasutada neid DAppides. Teise võimalusena võivad nad taotleda, et väljastaja vahetaks need kohe välja. Sellisel juhul põletab väljastaja tagastatud tokenid (muutes need kasutuskõlbmatuks) ja võtab oma reservidest välja õige koguse fiati.

Seda süsteemi reguleeriv leping, nagu eespool mainitud, on suhteliselt lihtsustatud. Stabiilsusraha turule toomine nõuab aga palju tööd väliste teguritega, nagu logistika, eeskirjade järgimine jne.


Väärtpaberitokenid

Väärtpaberitokenid on sarnased stabiilsusrahadega. Lepingu tasandil võivad mõlemad olla isegi identsed, kuna need toimivad ühtemoodi. Eristamine toimub väljaandja tasandil. Väärtpaberitokenid tähistavad väärtpabereid, nagu aktsiad, võlakirjad või füüsilised varad. Sageli (kuigi see ei ole alati nii) annavad nad omanikule mingisuguse osaluse ettevõttes või kaubas.


Kasutustokenid

Kasutustokenid on ehk tänapäeval kõige levinumad tokenitüübid. Erinevalt kahest eelmisest pakkumisest ei ole nad millegagi tagatud. Kui varaga tagatud tokenid on nagu lennufirma aktsiad, siis kasutustokenid on nagu sagedase lendaja programmid: nad täidavad funktsiooni, kuid neil pole omaette väärtust. Kasutustokenid võivad rahuldada lugematuid kasutusjuhtumeid, toimides mängusisese valuutana, detsentraliseeritud rakenduste kütusena, lojaalsuspunktidena ja palju muud.


➠ Kas soovid alustada krüptorahaga? Osta etherit Binance'ist!


Kas ERC-20 tokeneid saab kaevandada?

Etherit (ETH) saab kaevandada, kuid tokenid ei ole kaevandatavad – me ütleme, et need vermitakse uute loomisel. Lepingu sõlmimisel jaotavad arendajad tarne vastavalt oma plaanidele ja tegevuskavale.

Tavaliselt tehakse seda esmase mündipakkumise (ICO), esialgse börsipakkumise (IEO) või väärtpaberitokeni pakkumise (STO) kaudu. Võid kohata nende akronüümide variatsioone, kuid need mõisted on üsna sarnased. Investorid saadavad lepingu aadressile etheri ja saavad vastutasuks uued tokenid. Kogutud raha kasutatakse projekti edasise arendamise rahastamiseks. Kasutajad eeldavad, et saavad oma tokeneid kasutada (kas kohe või hiljem) või neid projekti arenedes kasumi saamiseks edasi müüa.

Tokenite levitamine ei pea olema automatiseeritud. Paljud ühisrahastusüritused võimaldavad kasutajatel maksta mitmesuguste digitaalsete valuutadega (nt BNB, BTC, ETH ja USDT). Seejärel jaotatakse vastavad saldod kasutajate antud aadressidele.


ERC-20 tokenite plussid ja miinused

ERC-20 tokenite plussid

Vahetatavad

ERC-20 tokenid on vahetatavad – iga üksus on teise vahel vahetatav. Kui sul oleks BinanceAcademyToken, poleks oluline, milline konkreetne token sul oli. Võid selle vahetada kellegi teise vastu ja need oleksid funktsionaalselt identsed, nagu sularaha või kuld.

See on ideaalne, kui sinu tokeni eesmärk on olla mingit tüüpi valuuta. Sa ei sooviks eristatavate tunnustega üksikuid üksusi, mis muudaks need mitte-vahetatavaks. See võib põhjustada selle, et mõned tokenid muutuvad teistest rohkem või vähem väärtuslikeks, kahjustades nende eesmärki.


Paindlik

Nagu me eelmises jaotises uurisime, on ERC-20 tokenid hästi kohandatavad ja neid saab sobitada paljude erinevate rakendustega. Näiteks saab neid kasutada mängusisese valuutana, lojaalsuspunktide programmides, digitaalsete kogumisobjektidena või isegi kujutava kunsti ja omandiõiguste esindamiseks.


Populaarne

ERC-20 populaarsus krüptotööstuses on väga mõjuv põhjus selle kasutamiseks kavandina. On palju börse, rahakotte ja nutilepinguid, mis juba ühilduvad äsja käivitatud tokenitega. Pealegi on arendajate tugi ja dokumentatsioon külluslikud. 


ERC-20 tokenite miinused

Skaleeritavus

Nagu paljude krüptorahavõrkude puhul, pole ka Ethereum kasvuvalude suhtes immuunne. Praegusel kujul ei skaleeru see hästi – tehingu tippajal saatmine toob kaasa kõrgeid teenustasusid ja viivitusi. Kui käivitad ERC-20 tokeni ja võrk on ülekoormatud, võib see mõjutada kasutatavust.

See ei ole ainult Ethereumi probleem. Pigem on see vajalik kompromiss turvalistes hajutatud süsteemides. Kogukond kavatseb nende probleemidega tegeleda üleminekul Ethereum 2.0-le, mis rakendab selliseid uuendusi nagu Ethereum Plasma ja Ethereum Casper.

Lisateavet skaleeritavuse probleemide kohta leiad artiklist Plokiahela skaleeritavus: kõrvalahelad ja maksekanalid.


Petuskeemid

Kuigi see ei ole probleem tehnoloogia endaga, võib tokeni käivitamise lihtsust mõnes mõttes pidada negatiivseks. Lihtsa ERC-20 tokeni loomine nõuab minimaalset pingutust, mis tähendab, et igaüks saab sellega hakkama – nii heas kui halvas mõttes.

Seetõttu peaksid olema ettevaatlik, millesse investeerid. On mitmeid püramiidi- ja Ponzi skeeme, mis on maskeeritud plokiahelaprojektideks.  Tee enne investeerimist oma uurimistööd, et teha oma järeldused selle kohta, kas teenimisvõimalus on õigustatud.

 

ERC-20, ERC-1155, ERC-223, ERC-721 – mis vahe neil on?

ERC-20 oli esimene (ja siiani populaarseim) Ethereumi tokeni standard, kuid see pole sugugi ainus. Aastate jooksul on esile kerkinud palju teisi, kes on teinud ettepanekuid ERC-20 täiustamiseks või püüdnud saavutada erinevaid eesmärke.

Mõned vähemlevinud standardid on need, mida kasutatakse mittevahetatavate tokenite puhul (NFTs). Mõnikord on sinu kasutusjuhtumile kasulik, et token oleks erinevate atribuutidega ja unikaalne. Kui soovid tokeniseerida ainulaadset kunstiteost, mängusisest vara vms, võib mõni neist lepingutüüpidest olla atraktiivsem.

Näiteks ERC-721 standardit kasutati tohutult populaarse CryptoKitties DAppi jaoks. Selline leping pakub kasutajatele API-t, et luua oma mitteasendatavaid tokeneid ja kodeerida metaandmeid (pildid, kirjeldused jne). 

ERC-1155 standardit võib vaadelda nii ERC-721 kui ka ERC-20 edasiarendusena. See kirjeldab standardit, mis toetab samas lepingus nii vahetatavaid kui ka mittevahetatavaid tokeneid.

Muude valikute (nagu ERC-223 või ERC-621) eesmärk on parandada kasutatavust. Esimene rakendab kaitsemeetmeid juhuslike tokenite ülekandmise vältimiseks. Viimane lisab lisafunktsioone tokenite pakkumise suurendamiseks ja vähendamiseks.

NFT-teema kohta lisateabe saamiseks loe kindlasti artiklit Krüpto kogutavate esemete ja mittevahetatavate tokenite (NFTs) juhend.


Lõppmärkused

ERC-20 standard on krüptovarade ruumis domineerinud aastaid ja pole raske mõista selle põhjust. Suhteliselt hõlpsalt saab igaüks kasutusele võtta lihtsa lepingu, mis sobib paljudele kasutusjuhtumitele (kasutustokenid, stabiilsusrahad jne). Siiski puuduvad ERC-20-l mõned funktsioonid, mis on muude standarditega ellu viidud. Saab näha, kas tulevikus tulevad selle asemele edasised lepingutüübid.