En introduktion til ERC-20-tokens
Hjem
Artikler
En introduktion til ERC-20-tokens

En introduktion til ERC-20-tokens

Let √łvet
Offentliggjort Jul 31, 2020Opdateret Dec 28, 2022
12m

Introduktion

Ethereum blev grundlagt af Vitalik Buterin i 2014 og positionerede sig selv som en open source-platform til lancering af decentrale applikationer (DApps). Mange af Buterins grunde til at skabe en ny blockchain stammede fra Bitcoin-protokollens manglende fleksibilitet.

Siden lanceringen har Ethereums blockchain tiltrukket udviklere, virksomheder og iv√¶rks√¶ttere, hvilket har aff√łdt en voksende branche af brugere, der lancerer intelligente kontrakter og distribuerede applikationer.

I denne artikel vil vi se på ERC-20-standarden, som er en vigtig ramme til at skabe tokens. Selvom det er specifikt for Ethereum-netværket, inspirerede rammen også andre blockchain-standarder såsom Binance Chains BEP-2.


Hvad er ERC-20-standarden?

I Ethereum er en ERC en Ethereum Request for Comments (anmodning om kommentarer fra Ethereum). Dette er tekniske dokumenter, der skitserer standarder for programmering p√• Ethereum. De skal ikke forveksles med Ethereum Improvement Proposals (EIP'er), der ligesom Bitcoins BIP'er foresl√•r forbedringer af selve protokollen. ERC'er har i stedet til form√•l at etablere konventioner, der g√łr det lettere for applikationer og kontrakter at interagere med hinanden.

ERC-20, som er forfattet af Vitalik Buterin og Fabian Vogelsteller i 2015, foresl√•r et relativt simpelt format for Ethereum-baserede tokens. Ved at f√łlge skitsen beh√łver udviklere ikke at starte helt fra bar bund. De kan i stedet bygge videre p√• et fundament, der allerede er brugt p√• tv√¶rs af branchen.

N√•r nye ERC-20-tokens skabes, er de automatisk indbyrdes kompatible med tjenester og software, der underst√łtter ERC-20-standarden (software-tegneb√łger, hardware-tegneb√łger, b√łrser osv.).

Bemærk, at ERC-20-standarden blev udviklet til en EIP (specifikt EIP-20). Dette skete et par år efter det oprindelige forslag på grund af dets udbredte brug. Men selv år senere har navnet "ERC-20" holdt fast.


En hurtig opsummering af Ethereums tokens

I mods√¶tning til ETH (Ethereums egen kryptovaluta) holdes ERC-20-tokens ikke af konti. Tokens findes kun inde i en kontrakt, som er som en selvst√¶ndig database. Den specificerer reglerne for tokens (dvs. navn, symbol, delelighed) og f√łrer en liste, der kortl√¶gger brugernes saldi til deres Ethereum-adresser.

For at flytte tokens skal brugere sende en transaktion til kontrakten og bede den om at allokere noget af deres saldo et andet sted. Hvis f.eks. Alice √łnsker at sende 5.000 BinanceAcademyTokens til Bob, ringer hun til en funktion i BinanceAcademyTokens intelligente kontrakt og beder den om at g√łre det.


Brugere, der interagerer med en intelligent kontrakt


Hendes opkald er indeholdt i det, der ser ud til at v√¶re en almindelig Ethereum-transaktion, der betaler 0 ETH til token-kontrakten. Opkaldet er inkluderet i et ekstra felt i transaktionen, som specificerer, hvad Alice √łnsker at g√łre ‚Ästi vores tilf√¶lde overf√łre tokens til Bob.

Selvom hun ikke sender ether, skal hun stadig betale et gebyr angivet i den for at f√• sin transaktion inkluderet i en blok. Hvis hun ikke har nogen ETH, skal hun f√• nogle, f√łr hun overf√łrer tokens.

Her er et eksempel p√• ovenst√•ende fra den virkelige verden p√• Etherscan: nogen ringer til BUSD-kontrakten. Du kan se, at tokens er blevet overf√łrt, og der er betalt et gebyr, selvom V√¶rdi-feltet viser, at der er sendt 0 ETH.

Lad os nu tage et dybere kig for bedre at forstå strukturen af en ERC-20-kontrakt. 


Hvordan skabes ERC-20-tokens?


Illustration af et ERC-20-token, der oprettes


For at v√¶re ERC-20-kompatibel skal din kontrakt inkludere seks obligatoriske funktioner: totalSupply, balanceOf, transfer, transferFrom, approve og allowance. Derudover kan du specificere valgfrie funktioner s√•som navn, symbol og decimal. M√•ske st√•r det klart for dig, hvad disse funktioner g√łr ud fra deres navne. Hvis ikke, s√• fortvivl ikke ‚Äďvi vil udspecificerer dem.¬†

Nedenfor er funktionerne, som de vises i Ethereums specialbyggede Solidity-sprog.


totalSupply

function totalSupply() public view returns (uint256)

Når ovenstående funktion ringes op af en bruger, returnerer den den samlede beholdning af tokens, som kontrakten indeholder.


balanceOf 

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

I mods√¶tning til totalSupply tager balanceOf en parameter (en adresse). N√•r den ringes op, returnerer den saldoen for den p√•g√¶ldende adresses tokenbeholdning. Husk, at konti p√• Ethereum-netv√¶rket er offentlige, s√• du kan foresp√łrge p√• enhver brugers saldo, forudsat at du kender adressen.


transfer

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

transfer overf√łrer passende tokens fra √©n bruger til en anden. Her angiver du den adresse, du vil sende til, og det bel√łb, der skal overf√łres.

N√•r den ringes op, udl√łser transfer noget, der kaldes en h√¶ndelse (h√¶ndelsesudl√łser i dette tilf√¶lde), som i bund og grund giver blockchainen besked p√• at inkludere en reference til den.


transferFrom

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

Funktionen transferFrom er et praktisk alternativ til transfer, som muligg√łr en smule mere programmerbarhed i decentraliserede applikationer. Ligesom transfer anvendes den til at flytte tokens, men disse tokens beh√łver ikke n√łdvendigvis at tilh√łre den person, der ringer til kontrakten.¬†

Med andre ord kan du give nogen ‚Ästeller en anden kontrakt¬†‚Äď tilladelse til at overf√łre midler p√• dine vegne. En mulig use case involverer betaling for abonnementsbaserede tjenester, hvor du ikke √łnsker at sende en betaling manuelt hver dag/uge/m√•ned. I stedet lader du bare et program g√łre det for dig.

Denne funktion udl√łser den samme h√¶ndelse som transfer.


approve

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

approve er en anden nyttig funktion set ud fra et programmeringsmæssigt perspektiv. Med denne funktion kan du begrænse antallet af tokens, som en intelligent kontrakt kan trække fra din saldo. Uden den risikerer du, at kontrakten ikke fungerer (eller bliver udnyttet) og stjæler alle dine midler. 

Tag vores eksempel p√• en abonnementsmodel igen. Lad os antage, at du har en enorm m√¶ngde BinanceAcademyTokens, og du vil ops√¶tte ugentlige tilbagevendende betalinger til en streaming DApp. Du har travlt med at l√¶se Binance Academy-indhold dag og nat, s√• du √łnsker ikke at bruge tid hver uge p√• at oprette en transaktion manuelt.

Du har en massiv saldo af BinanceAcademyTokens, der langt overstiger, hvad der er n√łdvendigt for at betale for abonnementet. For at forhindre DApp i at dr√¶ne dem alle, kan du s√¶tte en gr√¶nse med approve. Lad os antage, at dit abonnement koster √©n BinanceAcademyToken om ugen. Hvis du begr√¶nser den godkendte v√¶rdi til tyve tokens, kan du f√• dit abonnement betalt automatisk for fem m√•neder.

I v√¶rste fald, hvis DApp'en fors√łger at h√¶ve alle dine midler, eller hvis der bliver fundet en fejl, mister du kun tyve tokens. Det er muligvis ikke ideelt, men det er bestemt mere tiltalende end at miste alle dine beholdninger.

N√•r den ringes op, udl√łser approve en godkendelsesh√¶ndelse. Som med h√¶ndelsen transfer, skriver den data p√• blockchainen.


allowance 

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

Funktionen allowance kan anvendes sammen med approve. Når du har givet en kontrakt tilladelse til at administrere dine tokens, kan du bruge denne til at kontrollere, hvor mange den stadig kan hæve. Hvis f.eks. dit abonnement har opbrugt tolv af dine tyve godkendte tokens, skulle et opkald til funktionen allowance returnere otte i alt.


De valgfri funktioner

De tidligere omtalte funktioner er obligatoriske. P√• den anden side beh√łver navn, symbol og decimal ikke at v√¶re inkluderet, men de kan g√łre din ERC-20-kontrakt noget p√¶nere. De giver dig mulighed for at tilf√łje et l√¶sbart navn, indstille et symbol (dvs. ETH, BTC, BNB) og specificere, hvor mange decimaler tokens er delelige med. F.eks. kan tokens, der bruges som valuta, have mere gavn af at v√¶re mere delelige end et token, der repr√¶senterer ejerskab af en ejendom.


Se dette eksempel på GitHub for at se disse elementer i en ægte kontrakt.


Hvad kan ERC-20-tokens g√łre?


Illustration af forskellige anvendelser af ERC-20-tokens


Ved at sammens√¶tte alle funktionerne ovenfor, har vi f√•et en ERC-20-kontrakt. Vi kan foresp√łrge om det samlede udbud, se saldi, overf√łre midler og give tilladelser til andre DApps til at administrere tokens for os.

En stor del af appellen ved ERC-20-tokens er deres fleksibilitet. De angivne konventioner begrænser ikke udviklingen, så parterne kan implementere yderligere funktioner og indstille specifikke parametre, der passer til deres behov.


Stablecoins

Stablecoins (tokens knyttet til fiat-valutaer) bruger ofte ERC-20-token-standarden. Transaktionen til BUSD-kontrakten, som vi refererede til tidligere, er et eksempel, og de fleste st√łrre stablecoins er ogs√• tilg√¶ngelige i dette format.

For en typisk fiat-st√łttet stablecoin har en udsteder reserver p√• euro, dollar osv. Derefter udsteder de et token for hver enhed i deres reserve. Dette betyder, at hvis 10.000 USD blev l√•st inde i en boks, kunne udstederen oprette 10.000 tokens, som hver kan indl√łses for 1 USD.

Dette er ret nemt at implementere i Ethereum, teknisk set. En udsteder lancerer simpelthen en kontrakt med 10.000 tokens. Derefter vil de distribuere dem til brugere med l√łftet om, at de senere kan indl√łse tokens til en proportional m√¶ngde fiat-valuta.¬†

Brugere kan g√łre en r√¶kke ting med deres tokens ‚Äď de kan k√łbe varer og tjenester eller bruge dem i DApps. Alternativt kan de anmode om, at udstederen ombytter dem med det samme. I det tilf√¶lde br√¶nder udstederen de returnerede tokens (g√łr dem ubrugelige) og tr√¶kker den korrekte m√¶ngde fiat fra deres reserver.

Kontrakten, der styrer dette system, er som f√łr n√¶vnt relativt forenklet. Lancering af en stablecoin kr√¶ver dog en del arbejde med eksterne faktorer som logistik, lovoverholdelse osv.


Sikkerhedstokens

Sikkerhedstokens minder om stablecoins. På kontraktniveau kunne begge endda være identiske, da de fungerer på samme måde. Forskellen sker på udsteders niveau. Sikkerhedstokens repræsenterer værdipapirer såsom aktier, obligationer eller fysiske aktiver. Ofte (selv om det ikke altid er tilfældet) giver de indehaveren en form for andel i en virksomhed eller et gode.


Utility-tokens

Utility-tokens er m√•ske de mest almindelige typer tokens, der findes i dag. I mods√¶tning til de to foreg√•ende tilbud er de ikke st√łttet af noget. Hvis aktivbaserede tokens er som aktier i et flyselskab, s√• er utility-tokens som bonusprogrammer for hyppige rejsende: de tjener en funktion, men de har ingen ekstern v√¶rdi. Utility-tokens kan im√łdekomme et utal af use cases, der fungerer som valuta i spil, br√¶ndstof til decentraliserede applikationer, loyalitetspoint og meget mere.



Kan du mine ERC-20-tokens?

Du kan mine ether (ETH), men tokens kan ikke mines ‚Äď vi siger, at de bliver pr√¶get, n√•r nye skabes. N√•r en kontrakt lanceres, distribuerer udviklerne forsyningen i henhold til deres planer og projekt.

Typisk g√łres dette via en Initial Coin Offering (ICO), Initial Exchange Offering (IEO) eller Security Token Offering (STO). Du kan st√łde p√• variationer af disse akronymer, men disse begreber er ret ens. Investorer sender ether til kontraktadressen og modtager til geng√¶ld nye tokens. De indsamlede penge bruges til at finansiere videreudvikling af projektet. Brugere forventer at kunne bruge deres tokens (enten med det samme eller p√• et senere tidspunkt) eller videres√¶lge dem med fortjeneste, efterh√•nden som projektet udvikler sig.

Tokendistributionen beh√łver ikke at v√¶re automatiseret. Mange crowdfunding-begivenheder giver brugerne mulighed for at betale med en r√¶kke forskellige digitale valutaer (f.eks. BNB, BTC, ETH og USDT). De respektive saldi allokeres derefter til de adresser, som brugerne har angivet.


Fordele og ulemper ved ERC-20-tokens

Fordele ved ERC-20-tokens

Ombyttelige

ERC-20-tokens er ombyttelige ‚Äď hver enhed kan ombyttes med en anden. Hvis du havde et BinanceAcademyToken, ville det v√¶re lige meget, hvilket specifikt token du havde. Du ville kunne bytte det til en andens, og de ville stadig v√¶re funktionelt identiske, ligesom kontanter eller guld.

Dette er ideelt, hvis dit token sigter mod at v√¶re en valuta af en slags. Du vil ikke have individuelle enheder med karakteristiske tr√¶k, hvilket ville g√łre dem ikke-ombyttelige. Dette kan f√• nogle tokens til at blive mere ‚Äď eller mindre¬†‚Äď v√¶rdifulde end andre, hvilket underminerer deres form√•l.


Fleksible

Som vi har udforsket i det foregående afsnit, er ERC-20-tokens meget tilpasselige og kan skræddersyes til mange forskellige anvendelsesområder. De kan f.eks. bruges som valuta i spil, i loyalitetspointprogrammer, som digitale samleobjekter eller endda til at repræsentere kunst og ejendomsrettigheder.


Populære

ERC-20's popularitet i kryptovalutabranchen er en yderst overbevisende grund til at bruge den som et blueprint. Der er et v√¶ld af b√łrser, tegneb√łger og intelligente kontrakter, der allerede er kompatible med nyligt lancerede tokens. Derudover er der masser af udviklersupport og dokumentation.¬†


Ulemper ved ERC-20-tokens

Skalerbarhed

Som med mange kryptovalutanetv√¶rk er Ethereum ikke immun over for "voksev√¶rk". I sin nuv√¶rende form skalerer den ikke godt ‚Äď et fors√łg p√• at sende en transaktion p√• spidsbelastningstider resulterer i h√łje gebyrer og forsinkelser. Hvis du lancerer et ERC-20-token, og netv√¶rket bliver overbelastet, kan dets anvendelighed blive p√•virket.

Dette er ikke et problem eksklusivt for Ethereum. Det er snarere en n√łdvendig afvejning i sikre, distribuerede systemer. F√¶llesskabet planl√¶gger at l√łse disse problemer i migreringen til Ethereum 2.0, som vil implementere opgraderinger s√•som Ethereum Plasma og Ethereum Casper.

Læs mere om problemer med skalerbarhed i Blockchain-skalerbarhed: Sidekæder og betalingskanaler.


Svindel

Selvom det ikke er et problem med selve teknologien, kan den lethed, hvormed et token kan lanceres, betragtes som en ulempe i nogle henseender. Det kr√¶ver minimal indsats at skabe et simpelt ERC-20-token, hvilket betyder, at enhver kan g√łre det ‚Äď p√• godt og ondt.

Som s√•dan b√łr du v√¶re forsigtig med, hvad du investerer i. Der er en r√¶kke pyramide- og Ponzi-metoder forkl√¶dt som blockchain-projekter. ¬†Lav din egen research, f√łr du investerer, for at drage dine egne konklusioner om, hvorvidt en mulighed er legitim.

 

ERC-20, ERC-1155, ERC-223, ERC-721 ‚Ästhvad er forskellen?

ERC-20 var den f√łrste (og til dato den mest popul√¶re) Ethereum-tokenstandard, men det er p√• ingen m√•de den eneste. I √•renes l√łb er mange andre dukket op, der enten foresl√•r forbedringer af ERC-20 eller fors√łger at opn√• komplet forskellige m√•l.

Nogle af de mindre almindelige standarder er dem, der bruges i ikke-ombyttelige tokens (non-fungible tokens, NFT). Nogle gange har din use case faktisk fordel af at have unikke tokens med forskellige attributter. Hvis du ville tokenisere et unikt kunstværk, et aktiv i spil osv., kunne én af disse kontrakttyper måske være mere tiltalende.

ERC-721-standarden, der f.eks. blev brugt til den uhyre populære CryptoKitties DApp. En sådan kontrakt giver brugere et API til at præge deres egne ikke-ombyttelige tokens og til at kode metadata (billeder, beskrivelser osv.). 

ERC-1155-standarden kan ses som en forbedring af b√•de ERC-721 og ERC-20. Den skitserer en standard, der underst√łtter b√•de ombyttelige og ikke-ombyttelige tokens i samme kontrakt.

Andre muligheder som ERC-223 eller ERC-621 har til form√•l at forbedre brugervenligheden. F√łrstn√¶vnte implementerer sikkerhedsforanstaltninger for at forhindre utilsigtede token-overf√łrsler. Sidstn√¶vnte tilf√łjer ekstra funktioner for at √łge og mindske token-udbuddet.

For yderligere oplysninger om emnet NFT'er kan du læse En vejledning til kryptosamlerobjekter og ikke-ombyttelige tokens (NFT'er).


Sammenfatning

ERC-20-standarden har domineret kryptoaktivomr√•det i √•revis, og det er ikke sv√¶rt at se hvorfor. Alle kan relativt nemt implementere en simpel kontrakt, der passer til en bred vifte af use cases (utility-tokens, stablecoins osv.). N√•r det er sagt, mangler ERC-20 nogle af de funktioner, som andre standarder har. Det er stadig uvist, om efterf√łlgende typer af kontrakter vil overtage dens plads.