Úvod
Ethereum založil Vitalik Buterin v roku 2014, čím sa Ethereum zaradilo na open-source platformu na spúšťanie decentralizovaných aplikácií (DApps). Mnohé Buterinove motivácie na vytvorenie nového blockchainu pramenili z nedostatočnej flexibility protokolu Bitcoinu.
Od svojho spustenia blockchain Ethereum priťahuje vývojárov, podniky a podnikateľov a vytvára rastúcu sieť používateľov spúšťajúcich smart kontrakty a distribuované aplikácie.
V tomto článku sa pozrieme na štandard ERC-20, významný rámec na vytváranie tokenov. Hoci je tento rámec špecifický pre sieť Ethereum, inšpiroval aj iné štandardy blockchainu, ako je napríklad BEP-2 od Binance Chain.
Čo je to štandard ERC-20?
V sieti Ethereum ERC predstavuje Ethereum Request for Comments. Toto sú technické dokumenty, ktoré uvádzajú štandardy pre programovanie v Ethereu. Nemali by sme si ich pomýliť s Ethereum Improvement Proposals (EIP), ktoré, podobne ako BIP Bitcoinu, navrhujú vylepšenia samotného protokolu. ERC sa namiesto toho zameriava na vytváranie konvencií, ktoré zjednodušia vzájomnú interakciu medzi aplikáciami a kontraktmi.
ERC-20, ktorý vytvorili Vitalik Buterin a Fabian Vogelsteller v roku 2015, navrhuje relatívne jednoduchý formát pre tokeny založené na Ethereu. Ak sa budú držať osnovy, vývojári nemusia znovu vynaliezať koleso. Namiesto toho môžu budovať systém na základoch, ktoré sa už v tomto odbore používajú.
Keď sa vytvoria nové tokeny ERC-20, automaticky sú interoperabilné so službami a softvérom, ktorý podporuje štandard ERC-20 (softvérové peňaženky, hardvérové peňaženky, burzy atď.).
Mali by sme uviesť, že štandard ERC-20 bol vyvinutý v EIP (konkrétne EIP-20). Toto sa stalo niekoľko rokov po pôvodnom návrhu kvôli jeho rozšírenému používaniu. Avšak aj po niekoľkých rokoch názov „ERC-20“ zostal.
Rýchla rekapitulácia tokenov Etherea
Na rozdiel od ETH (vlastná kryptomena Etherea) sa tokeny ERC-20 nedržia na účtoch. Tieto tokeny existujú len v kontrakte, ktorý predstavuje istú samostatnú databázu. Ustanovuje pravidlá pre tokeny (t. j. názov, symbol, deliteľnosť) a vedie zoznam, ktorý mapuje zostatky používateľov na ich Ethereových adresách.
Ak chcú používatelia presúvať tokeny, musia do kontraktu poslať transakciu a požiadať ho o pridelenie časti svojho zostatku na iné miesto. Napríklad, ak chce Alice poslať 5 000 tokenov BinanceAcademy Bobovi, vyvolá funkciu v rámci smart kontraktu BinanceAcademyToken a požiada ho o poslanie tokenov.
Jej výzva je obsiahnutá v niečom, čo vyzerá ako bežná transakcia Etherea, ktorá zaplatí do tokenového kontraktu 0 ETH. Táto výzva je zahrnutá v dodatočnom poli v transakcii, ktoré špecifikuje, čo chce Alice urobiť – v našom prípade previesť tokeny Bobovi.
Aj keď neposiela ether, aj tak musí zaplatiť poplatok denominovaný v etheri, aby sa jej transakcia zahrnula do bloku. Ak nemá žiadne ETH, musí si nejaké kúpiť, skôr ako bude môcť tokeny previesť.
Tu je príklad vyššie uvedeného modelu zo skutočného sveta na Etherscan: niekto zadá výzvu do kontraktu BUSD. Môžete vidieť, že sa tokeny previedli a bol zaplatený poplatok, aj keď v poli Hodnota sa zobrazuje, že bolo odoslaných 0 ETH.
Teraz, keď sme už pokročili, pozrime si detailne celý systém, aby sme lepšie pochopili štruktúru typického kontraktu ERC-20.
Ako sa vytvárajú tokeny ERC-20?
Ak má byť váš kontrakt zhodný s ERC-20, musí obsahovať šesť povinných funkcií: celková zásoba, súvaha, prevod, prevod z, schválenie a príspevok. Okrem toho môžete uviesť voliteľné funkcie, ako je napríklad názov, symbol a desatinné číslo. Na základe názvov vám možno bude jasné, čo tieto funkcie vykonávajú. Ak nie, nemusíte sa obávať – pozrieme sa na ne bližšie.
Nižšie sú uvedené funkcie tak, ako sa objavujú v špeciálne vytvorenom jazyku Solidity na Ethereu.
totalSupply (celková zásoba)
funkcia totalSupply() public view returns (uint256)
Keď ju používateľ vyvolá, vyššie uvedená funkcia vráti celkovú zásobu tokenov, ktoré drží kontrakt.
balanceOf (súvaha)
funkcia balanceOf(address _owner) public view returns (uint256 balance)
Na rozdiel od celkovej zásoby obsahuje súvaha parameter (adresu). Po vyvolaní vráti súvahu držaných tokenov na tejto adrese. Nezabudnite, že účty v sieti Ethereum sú verejné, môžete teda zistiť súvahu hociktorého používateľa za predpokladu, že poznáte adresu.
transfer (prevod)
funkcia transfer(address _to, uint256 _value) public returns (bool success)
transfer vhodne prenáša tokeny od jedného používateľa k druhému. Tu zadajte adresu, na ktorú chcete poslať tokeny, a množstvo, ktoré chcete previesť.
Po vyvolaní spustí funkcia transfer niečo, čo sa nazýva udalosť (v tomto prípade prevod udalosti), čo v podstate povie blockchainu, aby k nej pripojil referenciu.
transferFrom
funkcia transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
Funkcia transferFrom je vhodná alternatíva k funkcii transfer. Umožňuje o niečo vyššiu programovateľnosť v decentralizovaných aplikáciách. Tak ako funkcia transfer, používa sa na prevod tokenov, ale tieto tokeny nemusia nevyhnutne patriť osobe, ktorá vyvoláva kontrakt.
Inými slovami, môžete niekoho autorizovať – prípadne iný kontrakt – na prevod prostriedkov vo vašom mene. Príkladmi použitia sú platby za služby odberu, kedy nechcete manuálne posielať platbu každý deň/týždeň/mesiac. Namiesto toho nastavíte program tak, aby to robil za vás.
Táto funkcia spúšťa rovnakú udalosť ako transfer.
approve (schválenie)
funkcia approve(address _spender, uint256 _value) public returns (bool success)
approve je ďalšou užitočnou funkciou z hľadiska programovateľnosti. S pomocou tejto funkcie môžete obmedziť počet tokenov, ktoré môže smart kontrakt vybrať z vášho účtu. Bez nej podstupujete riziko, že kontrakt nebude fungovať správne (alebo bude zneužitý) a že vám ukradnú všetky prostriedky.
Poďme si znovu rozobrať náš príklad modelu odberu. Predpokladajme, že máte obrovské množstvo tokenov BinanceAcademyTokens a chcete nastaviť týždenné opakujúce sa platby na streamingovú DApp. Neustále čítate obsah Akadémie Binance vo dne v noci, takže nechcete každý týždeň strácať čas manuálnym zadávaním transakcie.
Máte obrovský počet tokenov BinanceAcademyTokens, ktorý zďaleka presahuje sumu, ktorú je potrebné zaplatiť za odber. Ak chcete zabrániť, aby DApp vyčerpal všetky tieto prostriedky, môžete si nastaviť limit s pomocou funkcie approve. Predpokladajme, že váš odber stojí jeden BinanceAcademyToken za týždeň. Ak ste zastropovali schválenú hodnotu na dvadsať tokenov, potom by sa mohol odber automaticky platiť po dobu piatich mesiacov.
V najhoršom prípade, ak sa DApp pokúsi vybrať všetky vaše prostriedky alebo ak sa vyskytne chyba, stratíte len dvadsať tokenov. Zrejme to nie je ideálne, ale určite je to príjemnejšie ako stratiť celú sumu.
Po vyvolaní funkcia approve spustí udalosť schválenia. Tak ako pri udalosti transfer, zapisuje údaje do blockchainu.
allowance (príspevok)
funkcia allowance(address _owner, address _spender) public view returns (uint256 remaining)
funkcia allowance dá sa použiť spolu s funkciou approve. Keď ste v kontrakte udelili povolenie na riadenie vašich tokenov, mohli by ste overiť, koľko tokenov sa ešte dá vybrať. Napríklad ak váš odber využil dvanásť z dvadsiatich schválených tokenov, vyvolaním funkcie allowance by ste sa mali vrátiť na celkovú hodnotu osem.
Voliteľné funkcie
Vyššie popísané funkcie sú povinné. Na druhej strane nie je potrebné zahrnúť názov, symbol a desatinné číslo, ale vďaka nim bude váš kontrakt ERC-20 vyzerať lepšie. Prípadne vám umožnia pridať názov čitateľný pre človeka, nastaviť symbol (teda ETH, BTC, BNB) a stanoviť, na koľko desatinných miest sa dajú tokeny deliť. Napríklad tokeny, ktoré sa používajú ako meny, môžu byť užitočnejšie, ak sa budú deliť viac ako token, ktorý predstavuje vlastníctvo majetku.
Pozrite si tento príklad na GitHub a uvidíte tieto prvky v skutočnom kontrakte.
Čo dokážu tokeny ERC-20?
Spojením všetkých vyššie uvedených funkcií sme dostali kontrakt ERC-20. Môžeme zisťovať celkovú zásobu, kontrolovať súvahy, prevádzať prostriedky a udeľovať povolenia iným DApps, aby za nás riadili tokeny.
Príťažlivosť tokenov ERC-20 do značnej miery zabezpečuje ich flexibilita. Stanovené konvencie neobmedzujú vývoj, takže jednotlivé strany môžu implementovať dodatočné funkcie a určovať špecifické parametre tak, aby spĺňali ich potreby.
Stablecoiny
Stablecoiny (tokeny viazané na fiat meny) často používajú tokenový štandard ERC-20. Jedným z príkladov je transakcia s BUSD kontraktom, o ktorej sme hovorili vyššie a väčšina hlavných stablecoinov je dostupná aj v tomto formáte.
Pre typický stablecoin krytý fiat menou má emitent rezervy v eurách, dolároch, atď. Potom na každú jednotku z rezervy vydá jeden token. To znamená, že ak by bolo v trezore uzamknutých 10 000 USD, emitent by mohol vytvoriť 10 000 tokenov, každý s hodnotou 1 USD.
Technicky povedané, dá sa to celkom jednoducho implementovať v Ethereu. Emitent jednoducho spustí kontrakt s 10 000 tokenmi. Potom ich distribuuje používateľom a sľúbi im, že budú môcť neskôr tokeny vymeniť za úmerné množstvo fiat meny.
Používatelia môžu svoje tokeny použiť na viacero vecí – môžu nakupovať tovary a služby alebo ich použiť v DApps. Prípadne si môžu vyžiadať, aby im ich emitent ihneď vymenil. V takom prípade emitent spáli vrátené tokeny (čím sa stanú nepoužiteľnými) a vyberie správne množstvo fiat meny zo svojich rezerv.
Kontrakt, ktorý riadi tento systém, ako je uvedené vyššie, je pomerne jednoduchý. Spustenie stablecoinu si však vyžaduje mnoho práce na externých faktoroch, ako je logistika, dodržiavanie nariadení, atď.
Bezpečnostné tokeny
Bezpečnostné tokeny sú podobné stablecoinom. Na úrovni kontraktu by mohli byť obidva dokonca identické, keďže fungujú rovnakým spôsobom. K rozlíšeniu dochádza na úrovni emitenta. Bezpečnostné tokeny predstavujú cenné papiere, ako sú akcie, dlhopisy alebo fyzické aktíva. Často (hoci to tak nemusí byť vždy) udeľujú majiteľovi istý podiel na podniku alebo tovare.
Úžitkové tokeny
Úžitkové tokeny sú zrejme najbežnejšími typmi tokenov, ktoré sa dnes používajú. Na rozdiel od predchádzajúcich dvoch ponúk nie sú ničím podložené. Ak sú tokeny kryté aktívami podobné ako akcie leteckej spoločnosti, potom sú úžitkové tokeny podobné programom pre častých pasažierov: plnia si svoju funkciu, ale nemajú žiadnu externú hodnotu. Úžitkové tokeny môžu plniť obrovské množstvo prípadov použitia, pričom slúžia ako herná mena, palivo pre decentralizované aplikácie, vernostné body a mnoho ďalších funkcií.
➠ Chcete začať s kryptomenou? Kúpte si ether na Binance!
Môžete ťažiť tokeny ERC-20?
Môžete ťažiť ether (ETH), ale tokeny sa ťažiť nedajú – hovoríme, že sa razia, keď sa vytvárajú nové. Po spustení kontraktu vývojári distribuujú zásobu podľa svojich plánov.
Obyčajne sa to robí prostredníctvom Počiatočnej ponuky coinov (ICO), Počiatočnej burzovej ponuky (IEO) alebo Bezpečnostnej ponuky tokenov (STO). Môžete sa stretnúť s variáciami týchto skratiek, tieto koncepty sú však celkom podobné. Investori posielajú ether na adresu kontraktu a za to dostanú nové tokeny. Zozbierané peniaze sa použijú na financovanie ďalšieho vývoja v rámci projektu. Používatelia očakávajú, že budú môcť použiť svoje tokeny (buď ihneď alebo neskôr) alebo ich ďalej predať so ziskom počas vývoja projektu.
Distribúcia tokenov nemusí byť automatická. Mnohé crowdfundingové udalosti umožňujú používateľom platiť rôznymi digitálnymi menami (ako je napríklad BNB, BTC, ETH a USDT). Jednotlivé zostatky sa potom priradia adresám, ktoré poskytli používatelia.
Výhody a nevýhody tokenov ERC-20
Výhody tokenov ERC-20
Zameniteľné
Tokeny ERC-20 sú zastupiteľné – každá jednotka sa dá zameniť za inú. Ak by ste vlastnili token BinanceAcademyToken, nezáležalo by na tom, aký konkrétny token máte. Mohli by ste ho vymeniť za token niekoho iného a stále by mali rovnakú funkciu, tak ako hotovosť alebo zlato.
Je to ideálny prípad vtedy, keď chce byť token istým typom meny. Nechceli by ste mať samostatné jednotky s rozlíšiteľnými vlastnosťami, vďaka ktorým by boli nezastupiteľné. Tým by sa mohli niektoré tokeny stať viac – alebo menej – cennými ako iné, a tým by sa narušil ich účel.
Flexibilné
Ako sme videli v predchádzajúcej časti, tokeny ERC-20 sú vysoko prispôsobiteľné a dajú sa nastaviť pre potreby mnohých rôznych použití. Môžu sa použiť napríklad ako herná mena, vo vernostných bodových programoch, ako digitálne zberateľské predmety alebo dokonca na reprezentáciu výtvarného umenia a vlastníckych práv.
Populárne
Popularita ERC-20 vo svete kryptomien je veľmi silným dôvodom, prečo by sa mal používať ako indigo. Existuje množstvo búrz, peňaženiek a smart kontraktov, ktoré sú už kompatibilné s novo spustenými tokenmi. A navyše existuje široká podpora od vývojárov a dokumentácia.
Výhody tokenov ERC-20
Škálovateľnosť
Rovnako ako mnohé kryptomenové siete, ani Ethereum nie je odolné voči rastúcim problémom. Vo svojej súčasnej podobe nie je dobre škálovateľné – ak sa pokúsite poslať transakciu v čase najvyššej špičky, zaplatíte vysoké poplatky a dochádza tu k oneskoreniam. Ak spustíte token ERC-20 a sieť sa zahltí, mohla by sa narušiť jej využiteľnosť.
Toto nie je problémom len Etherea. Ide skôr nevyhnutný kompromis v rámci bezpečných, distribuovaných systémov. Komunita má v pláne riešiť tieto problémy migráciou na Ethereum 2.0, ktorý bude implementovať upgrady ako je Ethereum Plasma a Ethereum Casper.
O problémoch so škálovateľnosťou sa dozviete viac v článku Škálovateľnosť blockchainu: Vedľajšie reťazce a platobné kanály.
Podvody
Hoci nejde o problém samotnej technológie, jednoduchosť, s akou sa dá token spustiť, by sa v niektorých ohľadoch dala považovať za nevýhodu. Vytvoriť jednoduchý token ERC-20 si vyžaduje minimálne úsilie, čo znamená, že by to mohol urobiť každý – v dobrom zmysle aj v zlom.
Mali by ste teda byť opatrní a dávať si pozor, do čoho investujete. Existuje množstvo pyramídových a Ponziho schém, ktoré sa tvária ako blockchainové projekty. Skôr ako investujete svoje peniaze, urobte si vlastný prieskum, aby ste si sami urobili záver o tom, či je daná príležitosť legitímna.
ERC-20, ERC-1155, ERC-223, ERC-721 – aký je medzi nimi rozdiel?
ERC-20 bol prvý (a dodnes najpopulárnejší) tokenový štandard Etherea, no v žiadnom prípade nie je jediný. V priebehu mnohých rokov sa objavilo mnoho ďalších, ktoré buď navrhovali vylepšenia ERC-20 alebo sa pokúšali dosiahnuť celkom odlišné ciele.
Niektoré z menej bežných štandardov sa používajú v nezastupiteľných tokenoch (NFT). Niekedy váš prípad použitia v podstate využíva to, že máte jedinečné tokeny s rôznymi atribútmi. Ak by ste chceli tokenizovať jedinečné umelecké dielo, herné aktívum, atď., jeden z týchto typov kontraktov by mohol byť zaujímavejší.
Štandard ERC-721 sa napríklad použil pri nesmierne populárnom CryptoKitties DApp. Takýto kontrakt poskytuje používateľom API na razenie ich vlastných nezameniteľných tokenov a na kódovanie metadát (obrázky, popisy atď.).
Štandard ERC-1155 sa dá považovať za vylepšenie ERC-721 aj ERC-20. Naznačuje štandard, ktorý podporuje zastupiteľné aj nezastupiteľné tokeny v tom istom kontrakte.
Cieľom ďalších možností ako je ERC-223 alebo ERC-621 je zlepšiť využiteľnosť. Predchádzajúca možnosť implementuje bezpečnostné opatrenia na prevenciu náhodných prevodov tokenov. Druhá možnosť prináša ďalšie funkcie na zvýšenie a zníženie zásoby tokenov.
Ak sa chcete dozvedieť o téme NFT viac, určite si pozrite Sprievodcu krypto zberateľskými predmetmi a nezastupiteľnými tokenmi (NFT).
Záverečné myšlienky
Štandard ERC-20 dominuje v priestore kryptoaktív už mnoho rokov a je zrejmé prečo. Relatívne jednoducho môže ktokoľvek spustiť jednoduchý kontrakt, ktorý vyhovuje širokému spektru prípadov použitia (úžitkové tokeny, stablecoiny atď.). Na základe toho tokenu ERC-20 chýbajú niektoré funkcie, ktoré prinášajú zasa iné štandardy. Uvidíme, či to doplnia ďalšie typy kontraktov.