Ievadinformācija par ERC-20 tokeniem
Sākums
Raksti
Ievadinformācija par ERC-20 tokeniem

Ievadinformācija par ERC-20 tokeniem

Sarežģītākas tēmas
Publicēts Jul 31, 2020Atjaunināts Dec 28, 2022
12m

Ievads

Ethereum tīklu 2014. gadā izveidoja Vitālijs Buterins, pozicionējot to kā atvērtā pirmkoda platformu decentralizēto lietotņu (DApp) ieviešanai. Buterina vēlmi izveidot jaunu blokķēdi lielā mērā veicināja Bitcoin protokola nepietiekamā elastība.

Kopš Ethereum blokķēdes palaišanas tā ir spējusi piesaistīt dažādus izstrādātājus, uzņēmumus un uzņēmējus, tādējādi radot augošu nozari ar lietotājiem, kuri tajā izvieto jaunus viedos līgumus un decentralizētas lietotnes.

Šajā rakstā pievērsīsimies ERC-20 standartam, kas ir nozīmīga sistēma tokenu izveidē. Lai gan šī sistēma attiecas tikai uz Ethereum tīklu, tā ir kalpojusi par pamatu arī citu blokķēžu standartiem, piemēram, Binance Chain BEP-2.


Kas ir ERC-20 standarts?

Ethereum blokķēdē ERC ir Ethereum komentāru pieprasījums. Tie ir tehniskie dokumenti, kas definē programmēšanas standartus Ethereum tīklā. Tos nevajadzētu jaukt ar Ethereum uzlabošanas priekšlikumiem (EIP), kas līdzīgi Bitcoin BIP ietver paša protokola uzlabojumu priekšlikumus. Savukārt ERC mērķis ir izveidot metodes, kas atvieglo lietojumprogrammu un līgumu savstarpējo mijiedarbību.

ERC-20, kuru 2015. gadā radīja Vitālijs Buterins un Fabians Fogelštellers, piedāvā samērā vienkāršu formātu uz Ethereum balstītiem tokeniem. Sekojot šīm vadlīnijām, izstrādātājiem nav jāizgudro ritenis no jauna. Tā vietā viņi var likt lietā nozarē jau plaši izmantotu pamatu.

Kad tiek izveidoti jauni ERC-20 tokeni, tie automātiski spēj mijiedarboties ar pakalpojumiem un programmatūru, kas atbalsta ERC-20 standartu (programmatūras makiem, aparatūras makiem, biržām utt.).

Jāpiebilst, ka ERC-20 standarts tika pārveidots par EIP (konkrētāk, EIP-20). Tas notika dažus gadus pēc sākotnējā priekšlikuma plašās izmantošanas dēļ. Tomēr pat vairākus gadus vēlāk joprojām tiek izmantots nosaukums "ERC-20".


Neliels kopsavilkums par Ethereum tokeniem

Atšķirībā no Ethereum pamata kriptovalūtas ETH ERC-20 tokeni netiek glabāti kontos. Tie pastāv tikai līgumā, kas darbojas kā autonoma datubāze. Šī datubāze definē uz tokeniem attiecināmos noteikumus (piem., nosaukumu, apzīmējumu, dalāmību) un glabā sarakstu ar lietotāju Ethereum adrešu atlikumiem.

Lai pārvietotu tokenus, lietotājiem ir jānosūta līgumam darījums ar prasību pārvietot daļu no viņu adreses atlikuma uz kādu citu adresi. Piemēram, ja Alise vēlas nosūtīt 5000 BinanceAcademyToken tokenus Kārlim, viņa izsauc funkciju BinanceAcademyToken viedajā līgumā, prasot izpildīt šo darbību.



Viņas izsaukums ietilpst šķietami parastā Ethereum darījumā, ar kuru 0 ETH tiek iemaksāti attiecīgajā tokenu līgumā. Šis izsaukums tiek iekļauts darījuma papildu laukā, kurā norādīts, ko Alise vēlas darīt, – šajā gadījumā viņa vēlas pārskaitīt tokenus Kārlim.

Lai arī viņa nesūta Ether, viņai joprojām ir jāmaksā komisijas maksa, lai viņas darījums tiktu iekļauts blokā. Ja viņai nav ETH, tie ir jāiegādājas pirms tokenu pārskaitījuma veikšanas.

Lūk, reāls piemērs minētajam procesam, izmantojot Etherscan: kāds veic izsaukumu uz BUSD līgumu. Var redzēt, ka tokeni ir pārskaitīti un ir samaksāta komisijas maksa, lai arī vērtības laukā ir redzams, ka nosūtīti tika 0 ETH.

Tagad, kad esam apguvuši pamatus, paraudzīsimies detalizētāk, lai labāk izprastu tipiska ERC-20 līguma uzbūvi. 


Kā tiek radīti ERC-20 tokeni?



Lai nodrošinātu atbilstību ERC-20 standartam, līgumam jāietver sešas obligātas funkcijas: totalSupply (kopējais apjoms), balanceOf (aktīva atlikums), transfer (pārskaitījums), transferFrom (pārskaitījums no), approve (apstiprināšana) un allowance (atļautais daudzums). Papildus var norādīt dažādas izvēles funkcijas. Piemēri: name (nosaukums), symbol (apzīmējums) un decimal (decimāldaļskaitlis). Pēc šo funkciju nosaukumiem var nojaust to darbības principu. Ja tas tomēr nav saprotams, nesatraucies – mēs paskaidrosim sīkāk. 

Tālāk ir norādītas funkcijas, kādas tās ir redzamas īpašiem mērķiem paredzētajā Ethereum Solidity valodā.


totalSupply

function totalSupply() public view returns (uint256)
Kad lietotājs izsauc šo funkciju, tā parāda tokenu kopējo apjomu, kas atrodas šajā līgumā.


balanceOf 

function balanceOf(address _owner) public view returns (uint256 balance)
Atšķirībā no totalSupply, balanceOf izmanto parametru (adrese). Pēc šīs funkcijas izsaukšanas tiek parādīts tokenu atlikums konkrētajā adresē. Atceries, ka konti Ethereum tīklā ir publiski, tāpēc tu vari pieprasīt informāciju par jebkura lietotāja līdzekļu atlikumu, ja vien zini viņa adresi.


transfer

function transfer(address _to, uint256 _value) public returns (bool success)
transfer attiecīgi pārskaita tokenus no viena lietotāja citam. Šeit tu norādi adresi, uz kuru vēlies sūtīt tokenus, kā arī pārskaitījuma summu.
Pēc funkcijas transfer izsaukšanas tā aktivizē t. s. notikumu (šajā gadījumā – pārskaitījuma notikumu), kas būtībā dod rīkojumu blokķēdei iekļaut uz to atsauci.


transferFrom

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
Funkcija transferFrom ir parocīga alternatīva funkcijai transfer un nodrošina nedaudz plašākas programmēšanas iespējas decentralizētajās lietotnēs. Līdzīgi funkcijai transfer to izmanto, lai pārvietotu tokenus, taču šiem tokeniem nav obligāti jāpieder personai, kura izsauc līgumu. 

Citiem vārdiem sakot, tu vari pilnvarot kādu (vai citu līgumu) pārskaitīt līdzekļus tavā vārdā. Šo funkciju var izmantot, piemēram, lai samaksātu par abonētajiem pakalpojumiem, ja tu nevēlies manuāli veikt maksājumu katru dienu/nedēļu/mēnesi. Tā vietā tu vienkārši ļauj programmai izpildīt šo darbību.

Šī funkcija aktivizē tādu pašu notikumu kā funkcija transfer.


approve

function approve(address _spender, uint256 _value) public returns (bool success)
approve ir vēl viena noderīga funkcija no programmēšanas iespēju skatpunkta. Izmantojot šo funkciju, tu vari ierobežot tokenu skaitu, ko viedais līgums var izmantot izmaksām no tava konta. Bez šīs funkcijas pastāv līguma darbības traucējumu (vai ļaunprātīgas izmantošanas) un visu tavu līdzekļu nozagšanas risks. 

Atgriezīsimies pie apskatītā piemēra par abonementa modeli. Pieņemsim, ka tev ir milzīgs daudzums BinanceAcademyToken tokenu un tu vēlies iestatīt regulārus iknedēļas maksājumus decentralizētai straumēšanas lietotnei. Tu dienām un naktīm lasi Binance Akadēmijā pieejamo saturu, tāpēc nevēlies katru nedēļu tērēt laiku darījumu manuālai izpildei.

Tavā kontā ir daudz vairāk BinanceAcademyToken tokenu, nekā nepieciešams, lai samaksātu par abonementu. Lai decentralizētā lietotne neiztērētu visus šos līdzekļus, tu vari iestatīt limitu, izmantojot funkciju approve. Pieņemsim, ka abonements maksā vienu BinanceAcademyToken tokenu nedēļā. Ja iestatīsi apstiprinātās vērtības limitu divdesmit tokenu apmērā, automātiskais maksājums par abonementu varētu tikt iekasēts piecus mēnešus.

Sliktākajā gadījumā, ja decentralizētā lietotne censtos iztērēt visus tavus līdzekļus vai tiktu konstatēta sistēmas kļūda, tu varētu zaudēt tikai divdesmit tokenus. Tas varbūt nav ideāls risinājums, taču noteikti labāks par visu tavu līdzekļu zaudēšanu.

Izsaucot funkciju approve, tiek aktivizēts apstiprināšanas notikums. Līdzīgi pārskaitījuma notikumam, tādējādi tiek ierakstīti dati blokķēdē.


allowance 

function allowance(address _owner, address _spender) public view returns (uint256 remaining)
Funkciju allowance var izmantot kopā ar funkciju approve. Kad esi piešķīris līgumam atļauju pārvaldīt savus tokenus, tu varētu izmantot šo funkciju, lai pārbaudītu, cik daudz līdzekļu tā vēl var izņemt. Piemēram, ja abonementam ir izmantoti divpadsmit no taviem divdesmit apstiprinātajiem tokeniem, tad, izsaucot funkciju allowance, rezultātam būtu jābūt vienādam ar astoņi.


Izvēles funkcijas

Līdz šim aprakstītās funkcijas ir obligātas. Savukārt nosaukumam, apzīmējumam un decimāldaļskaitlim nav obligāti jābūt iekļautiem, taču tie var uzlabot tavu ERC-20 līgumu. Šīs funkcijas attiecīgi pievieno cilvēklasāmu nosaukumu, iestata apzīmējumu (piem., ETH, BTC, BNB) un nosaka, cik daudz zīmes aiz komata ir iespējams izmantot tokenu dalīšanā. Piemēram, tokeniem, kurus izmanto kā valūtas, varētu būt noderīgāka iespēja sadalīt tos mazākās daļās, salīdzinot ar tokeniem, kas apliecina īpašumtiesības.


Lai skatītu šos elementus reālā līgumā, apskati šo piemēru vietnē GitHub.


Kādas ir ERC-20 tokenu funkcijas?



Apvienojot visas augstāk minētās funkcijas, mēs iegūstam ERC-20 līgumu. Mēs varam pieprasīt informāciju par kopējo apjomu, pārbaudīt atlikumus, pārskaitīt līdzekļus un sniegt atļaujas citām decentralizētajām lietotnēm, lai tās pārvaldītu tokenus mūsu vārdā.

Interese par ERC-20 tokeniem lielā mērā ir saistīta ar to elastību. Izklāstītās metodes neierobežo izstrādes procesu, tāpēc puses var ieviest papildu funkcijas un definēt specifiskus parametrus atbilstoši savām vajadzībām.


Stabilās kriptovalūtas

Stabilās kriptovalūtas (bezseguma valūtu vērtībai piesaistītie tokeni) bieži vien izmanto ERC-20 tokenu standartu. Iepriekš minētais darījums ar BUSD līgumu ir viens šāds piemērs, un arī vairums lielāko stabilo kriptovalūtu ir pieejamas šajā formātā.

Tipiskām stabilajām kriptovalūtām ar bezseguma valūtu nodrošinājumu emitents glabā eiro, dolāru vai citas valūtas rezerves. Par katru rezervē glabāto valūtas vienību tas izdod vienu tokenu. Tātad, ja glabātuvē atrodas 10 000 $, emitents var izdot 10 000 tokenus, katru no kuriem varētu izpirkt par 1 $.

Tehniski to var pavisam vienkārši ieviest Ethereum tīklā. Emitents vienkārši izdod līgumu ar 10 000 tokeniem. Pēc tam šie tokeni tiek sadalīti lietotājiem, apsolot, ka vēlāk viņi varēs izpirkt savus tokenus pret atbilstošu summu bezseguma valūtā. 

Lietotāji var dažādos veidos izmantot savus tokenus – iegādāties preces un pakalpojumus vai izmantot tos decentralizētajās lietotnēs. Pastāv arī iespēja uzreiz pieprasīt emitentam apmainīt tokenus pret naudu. Šajā gadījumā emitents sadedzinātu atgrieztos tokenus (padarot tos neizmantojamus) un izņemtu no savām rezervēm atbilstošu daudzumu bezseguma valūtas.

Kā minējām, sistēmas pārvaldības līgums ir samērā vienkāršots. Tomēr, lai ieviestu stabilo kriptovalūtu, ir jāpaveic daudz darba saistībā ar ārējiem faktoriem, piemēram, loģistiku, normatīvo atbilstību u. c.


Vērtspapīru tokeni

Vērtspapīru tokeni līdzinās stabilajām kriptovalūtām. Līguma līmenī abu šo veidu aktīvi var būt pat identiski, jo tie darbojas vienādi. Atšķirības ir saskatāmas emitenta līmenī. Vērtspapīru tokeni apzīmē vērtspapīrus, piemēram, akcijas, obligācijas vai fiziskus aktīvus. Bieži (tomēr ne vienmēr) tie piešķir īpašniekam noteiktu daļu uzņēmumā vai citu labumu.


Funkcionālie tokeni

Funkcionālie tokeni ir, iespējams, pašlaik populārākais tokenu veids. Atšķirībā no diviem iepriekš minētajiem tokenu veidiem, šiem tokeniem nav nodrošinājuma. Ja tokeni ar kādu aktīvu nodrošinājumu līdzinās akcijām aviokompānijā, tad funkcionālie tokeni ir kā biežo lidojumu programmas – tie veic noteiktu funkciju, taču tiem nav ārējas vērtības. Funkcionālos tokenus var izmantot visdažādākajiem mērķiem, piemēram, kā spēles valūtu, "degvielu" decentralizētajās lietotnēs vai lojalitātes punktus.



Vai ERC-20 tokeniem var veikt ieguvi?

Ieguvi var veikt Ether (ETH) kriptovalūtai, bet ne tokeniem – tie tiek izgatavoti. Ieviešot līgumu, izstrādātāji sadala kopējo tokenu apjomu atbilstoši saviem plāniem un iecerēm.
Parasti tas tiek darīts, izmantojot sākotnējo kriptovalūtas piedāvājumu (ICO), sākotnējo biržas piedāvājumu (IEO) vai vērtspapīru tokenu piedāvājumu (STO). Var pastāvēt dažādas šo akronīmu variācijas, taču idejas ir līdzīgas. Investori pārskaita savus Ether uz līguma adresi un pretī saņem jaunus tokenus. Iekasētā nauda tiek izmantota turpmākas projekta attīstības finansēšanai. Lietotāji sagaida, ka, projektam attīstoties, viņi varēs izmantot savus tokenus (uzreiz vai vēlāk) vai pārdot tos, gūstot peļņu.

Tokenu sadale ne vienmēr tiek automatizēta. Daudzos pūļa finansēšanas pasākumos lietotājiem ir iespēja maksāt ar dažādām digitālām valūtām (piem., BNB, BTC, ETH un USDT). Pēc tam attiecīgās summas tiek ieskaitītas lietotāju norādītajās adresēs.


ERC-20 tokenu priekšrocības un trūkumi

ERC-20 tokenu priekšrocības

Aizstājamība

ERC-20 tokeni ir aizstājami – tos visus var savstarpēji aizstāt. Ja tev ir BinanceAcademyToken tokens, nav svarīgi, kurš tieši tokens tev pieder. Tu varētu to apmainīt pret kādam citam piederošu tokenu, un tie būtu funkcionāli vienādi – tāpat kā skaidra nauda vai zelts.

Tas ir ideāls risinājums, ja tokenu ir plānots izmantot kā sava veida valūtu. Nebūtu vēlams, lai atsevišķām valūtas vienībām piemistu īpašas iezīmes, kas padarītu tās neaizstājamas. Tā rezultātā daži tokeni kļūtu vērtīgāki vai mazāk vērtīgi par citiem un tiktu apdraudēts to ieviešanas mērķis.


Elastīgums

Kā noskaidrojām iepriekšējā sadaļā, ERC-20 tokeni ir plaši pielāgojami atbilstoši visdažādākajiem mērķiem. Piemēram, tos var izmantot kā spēles valūtu, lojalitātes punktu programmās, kā digitālus kolekcionējamus priekšmetus vai pat kā tēlotājmākslas un īpašumtiesību apliecinājumu.


Popularitāte

ERC-20 tokenu popularitāte kriptovalūtu nozarē ir pārliecinošs iemesls, lai tos izmantotu kā paraugu. Šobrīd pastāv jau daudz dažādu biržu, maku un viedo līgumu, kas nodrošina saderību ar jaunizdotiem tokeniem. Turklāt ir pieejams arī plašs izstrādātāju atbalsts un dokumentācija. 


ERC-20 tokenu trūkumi

Mērogojamība

Līdzīgi daudziem kriptovalūtu tīkliem arī Ethereum nav pasargāts no augšanas "sāpēm". Pašreizējā formātā tas nespēj nodrošināt pietiekamu mērogojamību – cenšoties nosūtīt darījumu augstas noslodzes brīžos, nāksies maksāt augstas komisijas maksas un ilgi gaidīt. Ja pēc ERC-20 tokena ieviešanas tīkls kļūst pārslogots, tas var negatīvi ietekmēt tokena lietojamību.

Šī problēma nav raksturīga tikai Ethereum tīklam. Tas drīzāk ir kompromiss, ar kuru ir jārēķinās drošās un decentralizētās sistēmās. Kopiena plāno risināt šīs problēmas līdz ar migrāciju uz Ethereum 2.0, kad tiks ieviesti tādi jauninājumi kā Ethereum Plasma un Ethereum Casper.
Uzzini vairāk par mērogojamības problēmām rakstā Blokķēdes mērogojamība – sānķēdes un maksājumu kanāli.


Krāpnieciskas shēmas

Tā pati par sevi nav uzskatāma par problēmu, tomēr tas, cik viegli var laist klajā tokenu, savā ziņā ir trūkums. Vienkārša ERC-20 tokena izveidē jāiegulda minimāla piepūle, tāpēc to var paveikt jebkurš – labos vai ļaunos nolūkos.

Tas nozīmē, ka izvēloties, kur ieguldīt savus līdzekļus, jāievēro piesardzība. Ir daudz dažādu piramīdas un krāpšanas shēmu, kas uzdodas par blokķēdes projektiem.  Vienmēr veic patstāvīgu informācijas izpēti, pirms ieguldi līdzekļus, un izdari savus secinājumus par konkrētā risinājuma godprātību.

 

ERC-20, ERC-1155, ERC-223, ERC-721 – kāda ir atšķirība?

ERC-20 bija pirmais (un līdz šim populārākais) Ethereum tokenu standarts, taču tas noteikti nav vienīgais. Gadu gaitā ir radušies arī citi, kas vai nu piedāvājuši ERC-20 uzlabojumus, vai arī centušies sasniegt atšķirīgus mērķus.

Daži mazāk populāri standarti ir tie, kas tiek izmantoti neaizstājamajiem tokeniem (NFT). Dažkārt konkrētajam lietojumam piemērotāks ir unikāls tokens ar atšķirīgām iezīmēm. Ja vēlies tokenizēt unikālu mākslas darbu, spēles aktīvu vai ko citu, tev varētu noderēt kāds no šiem līgumu veidiem.

Piemēram, ERC-721 standarts tika izmantots ārkārtīgi populārajai decentralizētajai lietotnei "CryptoKitties". Šāds līgums nodrošina lietotājiem API, lai varētu izgatavot savus neaizstājamos tokenus un kodēt metadatus (attēlus, aprakstus u. c.). 

ERC-1155 standarts ir uzskatāms par ERC-721 un ERC-20 uzlabojumu. Tas ietver standartu, kas ar vienu līgumu atbalsta gan aizstājamos, gan neaizstājamos tokenus.

Savukārt tādi risinājumi kā ERC-223 vai ERC-621 veicina lietojamību. Pirmais ievieš drošības pasākumus, lai novērstu nejaušus tokenu pārskaitījumus. Otrais pievieno papildu funkcijas, lai palielinātu vai samazinātu tokenu kopējo daudzumu.


Noslēgumā

ERC-20 standarts jau gadiem ilgi ir dominējis kriptoaktīvu telpā, un ir skaidri redzams, kāpēc. Jebkurš samērā viegli var izvietot vienkāršu līgumu atbilstoši visdažādākajiem izmantošanas mērķiem (kā funkcionālos tokenus, stabilās kriptovalūtas u. c.). Tomēr ERC-20 standartam trūkst dažu funkciju, ko spējuši ieviest citi standarti. Laiks rādīs, vai citu veidu līgumi spēs ieņemt šī standarta vietu.