Johdatus ERC-20-tokeneihin
Sisällysluettelo
Johdanto
Mikä on ERC-20-standardi?
Lyhyt yhteenveto Ethereum-tokeneista
Miten ERC-20-tokenit luodaan?
Mitä ERC-20-tokenit voivat tehdä?
Voiko ERC-20-tokeneita louhia?
ERC-20-tokenien hyvät ja huonot puolet
ERC-20, ERC-1155, ERC-223, ERC-721 – mitä eroa niillä on?
Yhteenveto
Johdatus ERC-20-tokeneihin
Etusivu
Artikkelit
Johdatus ERC-20-tokeneihin

Johdatus ERC-20-tokeneihin

Keskitaso
Julkaistu Jul 31, 2020Päivitetty Dec 28, 2022
12m

Johdanto

Vitalik Buterin perusti Ethereumin vuonna 2014, ja se asettui avoimen lähdekoodin alustaksi hajautettujen sovellusten (DApps) luomiseen. Monet Buterinin motiivit uuden lohkoketjun luomiseen johtuivat Bitcoin-protokollan joustavuuden puutteesta.

Lanseerauksestaan lähtien Ethereum-lohkoketju on houkutellut kehittäjiä, yrityksiä ja yrittäjiä ja synnyttänyt kasvavan teollisuudenalan käyttäjille, jotka luovat älysopimuksia ja hajautettuja sovelluksia.

Tässä artikkelissa tarkastellaan ERC-20-standardia, joka on tärkeä viitekehys tokenien luomiselle. Vaikka standardi liittyy Ethereum-verkkoon, se on tarjonnut inspiraatiota myös muille lohkoketjustandardeille, kuten Binance Chainin BEP-2-standardille.


Mikä on ERC-20-standardi?

Ethereumissa ERC tarkoittaa Ethereumin kommenttipyyntöä (Ethereum Request for Comments). Nämä ovat teknisiä asiakirjoja, joissa esitetään Ethereumin ohjelmointistandardit. Niitä ei pidä sekoittaa Ethereum Improvement Proposals (EIP) -ehdotuksiin, jotka, kuten Bitcoinin BIP:t, ehdottavat parannuksia itse protokollaan. ERC:t pyrkivät sen sijaan luomaan sopimuksia, jotka helpottavat sovellusten ja sopimusten vuorovaikutusta keskenään.

Vitalik Buterinin ja Fabian Vogelstellerin vuonna 2015 kirjoittama ERC-20 ehdottaa suhteellisen yksinkertaista muotoa Ethereum-pohjaisille tokeneille. Kehittäjien ei tarvitse keksiä pyörää uudelleen, jos he noudattavat pääpiirteitä. Sen sijaan he voivat rakentaa koko alalla jo käytetyn perustan päälle.

Kun uudet ERC-20-tokenit on luotu, ne ovat automaattisesti yhteentoimivia ERC-20-standardia tukevien palveluiden ja ohjelmistojen kanssa (ohjelmistolompakot, laitteistolompakot, pörssit jne.).

On huomattava, että ERC-20-standardi kehitettiin EIP:ksi (erityisesti EIP-20:ksi). Tämä tapahtui pari vuotta alkuperäisen ehdotuksen jälkeen sen laajan käytön vuoksi. Nimi "ERC-20" on kuitenkin vuosia myöhemmin edelleen käytössä.


Lyhyt yhteenveto Ethereum-tokeneista

Toisin kuin ETH:iä (Ethereumin alkuperäinen kryptovaluutta), ERC-20-tokeneita ei ole tilien hallussa. Tokenit ovat olemassa vain sopimuksen sisällä, joka on kuin itsenäinen tietokanta. Se määrittelee säännöt tokeneille (eli nimen, symbolin, jaettavuuden) ja ylläpitää luetteloa, joka kartoittaa käyttäjien saldot heidän Ethereum-osoitteisiinsa.

Tokenien siirtämiseksi käyttäjien on lähetettävä transaktio sopimukseen ja pyydettävä sitä kohdistamaan osa heidän saldostaan muualle. Jos Alice esimerkiksi haluaa lähettää 5 000 BinanceAcademyTokenia Bobille, hän kutsuu BinanceAcademyToken-älysopimuksen sisällä olevaa toimintoa ja pyytää sitä tekemään niin.


Käyttäjät, jotka ovat vuorovaikutuksessa älysopimuksen kanssa


Alicen kutsu sisältyy tavalliselta näyttävään Ethereum-transaktioon, joka maksaa 0 ETH:iä token-sopimukseen. Kutsu sisältyy transaktion lisäkenttään, joka määrittää, mitä Alice haluaa tehdä; meidän tapauksessamme siirtää tokeneita Bobille.

Vaikka Alice ei lähetä etheriä, hänen on silti maksettava siinä määrätty maksu saadakseen transaktionsa lohkoon. Jos hänellä ei ole ETH:iä, hänen on hankittava niitä ennen tokenien siirtämistä.

Tässä on tosielämän esimerkki yllä olevasta Etherscanissä: joku kutsuu BUSD-sopimusta. Näet, että tokeneita on siirretty ja maksu on maksettu, vaikka Arvo-kentässä näkyy, että 0 ETH:iä on lähetetty.

Nyt kun olemme vauhdissa, katsotaanpa konepellin alle ymmärtääksemme paremmin tyypillisen ERC-20-sopimuksen rakenteen. 


Miten ERC-20-tokenit luodaan?


Kuva ERC-20-tokenin luomisesta


ERC-20-yhteensopivuuden varmistamiseksi sopimuksessasi on oltava kuusi pakollista toimintoa: totalSupply, balanceOf, transfer, transferFrom, approve ja allowance. Lisäksi voit määrittää valinnaisia toimintoja, kuten name, symbol ja decimal. Sinulle voi olla selvää nimien perusteella, mitä nämä toiminnot tekevät. Mutta jos näin ei ole, älä huoli – keskitymme niihin seuraavaksi. 

Alla on toiminnot sellaisina kuin ne näkyvät Ethereumissa käytettäväksi luodussa Solidity-kielessä.


totalSupply

function totalSupply() public view returns (uint256)

Kun käyttäjä kutsuu yllä olevaa toimintoa, se palauttaa sopimuksen sisältämien tokenien kokonaislevikin.


balanceOf 

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

Toisin kuin totalSupply, balanceOf-toimintoon liittyy parametri (osoite). Kutsuttaessa se palauttaa kyseisessä osoitteessa olevien tokenien saldon. Muista, että Ethereum-verkon tilit ovat julkisia, joten voit tiedustella minkä tahansa käyttäjän saldoa, jos tiedät osoitteen.


transfer

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

transfer siirtää tokeneja käyttäjältä toiselle. Tässä annat osoitteen, johon haluat lähettää, sekä siirrettävän summan.

Kutsuttaessa transfer laukaisee jotain, mitä kutsutaan eventiksi (tässä tapauksessa event transfer – tapahtuma on siirto), joka periaatteessa käskee lohkoketjua sisällyttämään viittauksen siihen.


transferFrom

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

TransferFrom-toiminto on kätevä vaihtoehto transfer-toiminnolle, joka mahdollistaa hieman enemmän ohjelmoitavuutta hajautetuissa sovelluksissa. Kuten transfer-toimintoa, sitä käytetään tokenien siirtämiseen, mutta niiden ei välttämättä tarvitse kuulua sopimusta kutsuvalle henkilölle. 

Toisin sanoen voit valtuuttaa jonkun – tai muun sopimuksen – siirtämään varoja puolestasi. Mahdollinen käyttötapaus on tilauspohjaisten palveluiden maksaminen, jolloin et halua lähettää manuaalisesti maksua joka päivä/viikko/kuukausi. Sen sijaan annat ohjelman hoitaa sen puolestasi.

Tämä toiminto laukaisee saman tapahtuman kuin transfer.


approve

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

approve on toinen hyödyllinen toiminto ohjelmoitavuuden kannalta. Tällä toiminnolla voit rajoittaa tokenien määrää, jotka älysopimus voi nostaa saldostasi. Ilman sitä on mahdollista, että sopimus ei toimi (tai sitä käytetään hyväksi) ja että se varastaa kaikki rahasi. 

Käytetään esimerkkinä jälleen edellä mainittua tilauspohjaista mallia. Oletetaan, että sinulla on valtava määrä BinanceAcademyTokeneja ja että haluat määrittää viikoittaiset toistuvat maksut suoratoisto-DAppiin. Luet Binance Academyn sisältöä yötä päivää, joten et halua käyttää joka viikko aikaa transaktion luomiseen manuaalisesti.

Sinulla on valtava BinanceAcademyToken-saldo, joka ylittää huomattavasti tilauksen maksamiseen tarvittavan määrän. Jotta voit estää DAppiä tyhjentämästä koko saldoasi, voit asettaa rajan approve-toiminnolla. Oletetaan, että tilauksesi maksaa yhden BinanceAcademyTokenin viikossa. Jos rajasit hyväksytyn arvon 20 tokeniin, tilauksesi voidaan maksaa automaattisesti viiden kuukauden ajan.

Pahimmillaan, jos DApp yrittää nostaa kaikki varat tai jos esiintyy virhe, voit menettää vain kaksikymmentä tokenia. Tämä ei ehkä ole ihanteellista, mutta varmasti houkuttelevampaa kuin koko omaisuuden menettäminen.

approve-toimintoa kutsuttaessa se käynnistää hyväksymistapahtuman. Kuten transfer-toiminto, se kirjoittaa tietoja lohkoketjuun.


allowance 

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

allowance-toimintoa voidaan käyttää yhdessä approve-toiminnon kanssa. Kun olet antanut sopimukselle luvan hallita tokeneitasi, voit käyttää tätä tarkistaaksesi, kuinka monta se voi vielä nostaa. Jos tilauksesi on esimerkiksi käyttänyt kaksitoista kahdestakymmenestä hyväksytystä tokenista, allowance-toiminnon kutsumisen pitäisi palauttaa kahdeksan.


Valinnaiset toiminnot

Aiemmin käsitellyt toiminnot ovat pakollisia. Toisaalta name-, symbol- ja decimal-toimintoja ei tarvitse lisätä, mutta ne voivat tehdä ERC-20-sopimuksesta hieman kauniimman. Vastaavasti niiden avulla voi lisätä ihmisten kannalta helposti luettavan nimen, asettaa symbolin (esim. ETH, BTC, BNB) ja määrittää, kuinka moneen desimaaliin tokenit ovat jaettavissa. Esimerkiksi valuuttana käytettävät tokenit voivat hyötyä enemmän jaettavuudesta kuin kiinteistön omistusta edustava token.


Katso tämä esimerkki GitHubista nähdäksesi nämä elementit todellisessa sopimuksessa.


Mitä ERC-20-tokenit voivat tehdä?


Kuva ERC-20-tokenien erilaisista käyttötavoista


Yhdistämällä kaikki yllä olevat toiminnot olemme luoneet ERC-20-sopimuksen. Voimme tiedustella kokonaislevikkiä, tarkistaa saldoja, siirtää varoja ja antaa muille DAppeille luvan hallita tokeneja puolestamme.

Suuri osa ERC-20-tokenien houkuttelevuudesta on niiden joustavuudessa. Esitetyt käytännöt eivät rajoita kehitystä, joten osapuolet voivat ottaa käyttöön lisäominaisuuksia ja asettaa erityisiä parametreja tarpeidensa mukaan.


Stablecoinit

Stablecoinit (fiat-valuuttoihin sidotut tokenit) käyttävät usein ERC-20-tokenstandardia. Aiemmin mainitsemamme transaktio BUSD-sopimukseen on yksi esimerkki, ja useimmat suuret stablecoinit ovat myös saatavilla tässä muodossa.

Tyypillisten fiatiin sidottujen stablecoinien liikkeeseenlaskija pitää hallussaan euroja, dollareita jne. Se luo sitten jokaista hallussaan olevaa yksikköä vastaavan tokenin. Tämä tarkoittaa, että jos liikkeeseenlaskijan holvissa on 10 000 dollaria, se voi luoda 10 000 tokenia, joista jokainen voidaan lunastaa 1 dollarilla.

Tämä on teknisesti melko helppo toteuttaa Ethereumissa. Liikkeeseenlaskija tekee yksinkertaisesti sopimuksen 10 000 tokenille. Sitten liikkeeseenlaskija jakaa ne käyttäjille ja lupaa, että nämä voivat myöhemmin lunastaa tokenit suhteellisella määrällä fiat-valuuttaa. 

Käyttäjät voivat tehdä useita asioita tokeneillaan – he voivat maksaa tavaroita ja palveluita tai käyttää tokeneita DAppeissa. Vaihtoehtoisesti he voivat pyytää liikkeeseenlaskijaa vaihtamaan ne välittömästi. Tässä tapauksessa liikkeeseenlaskija polttaa palautetut tokenit (tekee ne käyttökelvottomiksi) ja poistaa oikean määrän fiatia varannoistaan.

Kuten edellä mainittiin, tätä järjestelmää ohjaava sopimus on suhteellisen yksinkertainen. Stablecoinin lanseeraaminen vaatii kuitenkin paljon työtä ulkoisten tekijöiden, kuten logistiikkaan, säädöstenmukaisuuteen jne., liittyen.


Arvopaperitokenit

Arvopaperitokenit ovat samanlaisia kuin stablecoinit. Sopimustasolla molemmat voivat olla jopa identtisiä, koska ne toimivat samalla tavalla. Ero tapahtuu liikkeeseenlaskijan tasolla. Arvopaperitokenit edustavat arvopapereita, kuten osakkeita, joukkovelkakirjoja tai fyysistä omaisuutta. Usein (vaikka näin ei aina ole) ne myöntävät haltijalle jonkinlaisen osuuden yrityksestä tai tavarasta.


Hyötytokenit

Hyötytokenit ovat ehkä yleisin tällä hetkellä käytetty tokentyyppi. Toisin kuin kaksi edellistä tyyppiä, niitä ei tueta millään. Jos omaisuusvakuudelliset tokenit ovat kuin lentoyhtiön osakkeita, hyötytokenit ovat kuin kanta-asiakasohjelmia: niillä on toimintoon liittyvä hyöty, mutta ei ulkoista arvoa. Hyötytokeneita voidaan käyttää lukemattomiin tarkoituksiin, ja ne voivat toimia esimerkiksi pelin sisäisenä valuuttana, hajautettujen sovellusten polttoaineena, kanta-asiakaspisteinä ja monissa muissa rooleissa.



Voiko ERC-20-tokeneita louhia?

Voit louhia etheriä (ETH), mutta tokeneita ei voi louhia; sen sijaan ne luodaan. Kun sopimus käynnistetään, kehittäjät jakavat tarjonnan suunnitelmiensa ja etenemissuunnitelmansa mukaan.

Tyypillisesti tämä tehdään kolikkoannin (Initial Coin Offering, ICO), pörssiannin (Initial Exchange Offering, IEO) tai arvopaperitokenannin (Security Token Offering, STO) kautta. Saatat kohdata muunnelmia näistä lyhenteistä, mutta nämä käsitteet ovat melko samanlaisia. Sijoittajat lähettävät etheriä sopimusosoitteeseen ja saavat vastineeksi uusia tokeneita. Kerätyt varat käytetään hankkeen jatkokehitykseen. Käyttäjät odottavat voivansa käyttää tokenejaan (joko välittömästi tai myöhemmin) tai myydä ne edelleen voitolla projektin kehittyessä.

Tokenien jakelua ei tarvitse välttämättä automatisoida. Monet joukkorahoitustapahtumat antavat käyttäjille mahdollisuuden maksaa useilla eri digitaalisilla valuutoilla (kuten BNB, BTC, ETH ja USDT). Vastaavat saldot allokoidaan sitten käyttäjien antamiin osoitteisiin.


ERC-20-tokenien hyvät ja huonot puolet

ERC-20-tokenien hyvät puolet

Vaihdettava

ERC-20-tokenit ovat vaihdettavissa – jokainen yksikkö voidaan vaihtaa toiseen. Jos sinulla olisi BinanceAcademyToken, sillä ei olisi väliä, mikä tietty token sinulla on. Voit vaihtaa sen jonkun muun omistamaan tokeniin, ja ne olisivat silti toiminnallisesti identtisiä, aivan kuten käteinen tai kulta.

Tämä on ihanteellista, jos tokenisi on tarkoitus olla jonkinlainen valuutta. Et halua yksittäisiä yksiköitä, joilla on erotettavia piirteitä, mikä tekisi niistä ei-vaihdettavia. Tämä voisi aiheuttaa sen, että joistakin tokeneista tulisi enemmän tai vähemmän arvokkaita kuin toisista, mikä heikentäisi niiden tarkoitusta.


Joustava

Kuten edellisessä osiossa tutkimme, ERC-20-tokenit ovat erittäin suuressa määrin muokattavia ja ne voidaan räätälöidä moniin eri sovelluksiin. Niitä voidaan käyttää esimerkiksi pelin sisäisenä valuuttana, kanta-asiakaspisteohjelmissa, digitaalisina keräilyesineinä tai jopa edustamaan taideteosten ja kiinteistöjen omistusoikeuksia.


Suosittu

ERC-20:n suosio kryptovaluuttateollisuudessa on erittäin pakottava syy käyttää sitä perustana. On olemassa lukuisia pörssejä, lompakoita ja älysopimuksia, jotka ovat jo yhteensopivia uusien tokenien kanssa. Lisäksi tarjolla on runsaasti tukea ja dokumentaatiota kehittäjille. 


ERC-20-tokenien huonot puolet

Skaalautuva

Kuten monet kryptovaluuttaverkot, Ethereum ei ole immuuni ongelmille. Nykyisessä muodossaan se ei skaalaudu hyvin – transaktion lähettäminen ruuhka-aikoina johtaa korkeisiin maksuihin ja viivästyksiin. Jos luot ERC-20-tokenin ja verkko ruuhkautuu, tämä voi vaikuttaa sen käytettävyyteen.

Tämä ei ole vain Ethereumin ongelma. Pikemminkin se on välttämätön kompromissi suojatuissa, hajautetuissa järjestelmissä. Yhteisö aikoo ratkaista nämä ongelmat siirtyessään Ethereum 2.0-päivitykseen, jossa toteutetaan Ethereum Plasman ja Ethereum Casperin kaltaisia päivityksiä.

Lue lisää skaalautuvuusongelmista artikkelista Lohkoketjun skaalautuvuus: sivuketjut ja maksukanavat.


Huijaukset

Vaikka tämä ongelma ei liity itse tekniikkaan, tokenin luomisen helppoutta voidaan pitää jossain suhteessa haittapuolena. Yksinkertaisen ERC-20-tokenin luominen vaatii vain vähän vaivaa, mikä tarkoittaa, että kuka tahansa voi tehdä sen – hyvässä tai pahassa tarkoituksessa.

Siksi sinun tulee olla varovainen sijoituksiesi kanssa. Markkinoilla on useita lohkoketjuprojekteiksi naamioituja pyramidi- ja Ponzi-huijauksia. Tutustu projekteihin huolellisesti ennen sijoittamista tehdäksesi omat johtopäätöksesi siitä, ovatko projektin voitontuottomahdollisuudet oikeita.

 

ERC-20, ERC-1155, ERC-223, ERC-721 – mitä eroa niillä on?

ERC-20 oli ensimmäinen (ja tähän mennessä suosituin) Ethereum-tokenstandardi, mutta se ei suinkaan ole ainoa. Vuosien varrella on ilmaantunut monia muita standardeja, jotka ovat joko ehdottaneet parannuksia ERC-20:een tai yrittäneet saavuttaa kokonaan erilaisia tavoitteita.

Jotkin vähemmän yleisistä standardeista ovat niitä, joita käytetään non-fungible tokeneissa (NFT). Joskus projekti hyötyy siitä, että on olemassa ainutlaatuisia tokeneita, jotka tarjoavat erilaisia piirteitä. Jos haluat tokenisoida ainutlaatuisen taideteoksen, pelin sisäistä materiaalia jne., jokin näistä sopimustyypeistä saattaa olla houkuttelevampi.

ERC-721-standardia käytettiin esimerkiksi erittäin suositussa CryptoKitties DApp -sovelluksessa. Tällainen sopimus tarjoaa käyttäjille sovellusliittymän, jonka avulla he voivat luoda omia non-fungible tokeneitaan ja koodata metatietoja (kuvia, kuvauksia jne.). 

ERC-1155-standardi voidaan nähdä parannuksena sekä ERC-721- että ERC-20-standardiin. Siinä hahmotellaan standardi, joka tukee sekä vaihdettavia että ei-vaihdettavia tokeneja (NFT) samassa sopimuksessa.

Muut vaihtoehdot, kuten ERC-223 tai ERC-621, pyrkivät parantamaan käytettävyyttä. Edellinen toteuttaa suojatoimia vahingossa tapahtuvien tokenien siirtojen estämiseksi. Jälkimmäinen lisää ylimääräisiä toimintoja tokenien tarjonnan lisäämiseksi ja vähentämiseksi.

Lisätietoja NFT-aiheesta on artikkelissa Opas kryptokeräilykohteisiin ja NFT:ihin.


Yhteenveto

ERC-20-standardi on hallinnut krypto-omaisuuksien alaa jo vuosien ajan, eikä ole vaikea ymmärtää miksi. Suhteellisen helposti kuka tahansa voi ottaa käyttöön yksinkertaisen sopimuksen, joka sopii monenlaisiin käyttötarkoituksiin (arvopaperitokenit, stablecoinit jne.). ERC-20:stä puuttuu kuitenkin joitakin muiden standardien tuomia ominaisuuksia. Nähtäväksi jää, korvaavatko myöhemmät sopimustyypit sen.