Hem
Artiklar
En introduktion till ERC-20-token

En introduktion till ERC-20-token

Avancerad
Publicerad Jul 31, 2020Uppdaterad Dec 28, 2022
12m

Introduktion

Ethereum grundades av Vitalik Buterin under 2014 och positionerar sig som en öppen kÀllkodsplattform för att lansera decentraliserade applikationer (DApps). MÄnga av Buterins motiv för att skapa en ny blockkedja hÀrrörde frÄn Bitcoin-protokollets brist pÄ flexibilitet.

Sedan lanseringen har Ethereum-blockkedjan attraherat utvecklare, företag och entreprenörer, vilket skapat en vÀxande bransch av anvÀndare som lanserar smarta kontrakt och distribuerade applikationer.

I den hĂ€r artikeln ska vi titta nĂ€rmare pĂ„ ERC-20-standarden som Ă€r ett viktigt ramverk för att skapa token. Även om det Ă€r specifikt för Ethereum-nĂ€tverket inspirerade ramverket ocksĂ„ andra blockkedjestandarder, sĂ„som Binance-kedjans BEP-2.


Vad Àr ERC-20-standarden?

PÄ Ethereum Àr ERC en Ethereum-förfrÄgan om kommentarer (Ethereum Request for Comments). Dessa Àr tekniska dokument som beskriver standarder för programmering pÄ Ethereum. De ska inte förvÀxlas med Ethereum Improvement Proposals (EIP:er) som liksom Bitcoins BIP:er föreslÄr förbÀttringar av sjÀlva protokollet. ERC:er syftar istÀllet till att upprÀtta konventioner som gör det lÀttare för ansökningar och kontrakt att interagera med varandra.

ERC-20 skrevs av Vitalik Buterin och Fabian Vogelsteller under 2015 och föreslÄr ett relativt enkelt format för Ethereum-baserade token. Genom att följa detta format behöver utvecklarna inte uppfinna hjulet pÄ nytt. IstÀllet kan de bygga frÄn en grund som redan anvÀnds i branschen.

NÀr nya ERC-20-token har skapats Àr de automatiskt kompatibla med tjÀnster och programvara som stöder ERC-20-standarden (programvaruplÄnböcker, hÄrdvaruplÄnböcker, börser, osv).

Det bör noteras att ERC-20-standarden utvecklades till en EIP (och specifikt en EIP-20). Detta skedde ett par Är efter det ursprungliga förslaget pÄ grund av dess utbredda anvÀndning. Men Àven flera Är senare har namnet "ERC-20" stannat kvar.


En snabb sammanfattning av Ethereums token

Till skillnad frÄn ETH (Ethereums egen kryptovaluta) innehas inte ERC-20-token av konton. Token finns bara i ett kontrakt, vilket Àr som en fristÄende databas. Den specificerar reglerna för token (det vill sÀga namn, symbol och delbarhet) och har en lista som mappar anvÀndarnas balanser till deras Ethereum-adresser.

För att flytta token mÄste anvÀndarna skicka en transaktion till kontraktet och be den att allokera en del av sina balanser nÄgon annanstans. Om Alice till exempel vill skicka 5 000 Binance Academytoken till Bob, anropar hon en funktion i Binance Academy-tokenens smarta kontrakt och ber den att göra det.



Hennes Ă„tgĂ€rd finns i vad som verkar vara en vanlig Ethereum-transaktion som betalar 0 ETH till tokenkontraktet. ÅtgĂ€rden ingĂ„r i ett extra fĂ€lt i transaktionen som anger vad Alice vill göra – i detta fall överföra token till Bob.

Även om hon inte skickar ether mĂ„ste hon fortfarande betala en avgift som anges i den för att fĂ„ sin transaktion inkluderad i ett block. Om hon inte har nĂ„gon ETH mĂ„ste hon skaffa detta innan hon överför token.

HÀr Àr ett verkligt exempel pÄ ovanstÄende frÄn Etherscan: NÄgon anropar BUSD-kontraktet. Du kan se att token har överförts och att en avgift har betalats, Àven om fÀltet VÀrde visar att 0 ETH har skickats.

Nu nÀr vi har fÄtt mer koll pÄ detta kan vi ta en nÀrmare titt för att bÀttre förstÄ strukturen för ett typiskt ERC-20-kontrakt. 


Hur skapas ERC-20-token?



För att bli ERC-20-kompatibelt mĂ„ste ditt kontrakt innehĂ„lla sex obligatoriska funktioner: totalSupply, saldoOf, transfer, transferFrom, approve och allowance. Dessutom kan du ange valfria funktioner, sĂ„som name , symbol och decimal. Du förstĂ„r kanske redan vad dessa funktioner gör, tack vare deras namn. Men oroa dig inte om du inte förstĂ„r Ă€nnu – vi kommer att gĂ„ igenom dem. 

Nedan finns funktionerna sÄ som de visas i Ethereums specialbyggda Solidity-sprÄk.


totalSupply

function totalSupply() public view returns (uint256)
NÀr en anvÀndare anropar denna returnerar ovanstÄende funktion den totala tillgÄngen av token som kontraktet innehÄller.


balanceOf 

function balanceOf(address _owner) public view returns (uint256 balance)
Till skillnad frÄn totalSupply tar balanceOf en parameter (en adress). NÀr den anropas returnerar den balansen av den adressens token-innehav. Kom ihÄg att konton pÄ Ethereum-nÀtverket Àr offentliga, sÄ du kan frÄga om vilken anvÀndares balans som helst, förutsatt att du kan adressen.


transfer

function transfer(address _to, uint256 _value) public returns (bool success)
transfer överför lÀmpligen token frÄn en anvÀndare till en annan. HÀr anger du adressen du vill skicka till, samt beloppet som ska överföras.
NÀr överföringen anropas utlöser transfer nÄgot som kallas en hÀndelse (hÀndelseöverföring i det hÀr fallet), vilket i princip sÀger till blockkedjan att inkludera en referens till den.


transferFrom

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
Funktionen transferFrom Àr ett praktiskt alternativ till transfer som möjliggör mer programmerbarhet i decentraliserade applikationer. Liksom transfer anvÀnds den för att flytta token, men dessa token behöver inte nödvÀndigtvis tillhöra den person som anropar kontraktet. 

Med andra ord kan du auktorisera nĂ„gon – eller ett annat kontrakt – att överföra tillgĂ„ngar Ă„t dig. Ett möjligt anvĂ€ndningsomrĂ„de Ă€r att du betalar för abonnemangsbaserade tjĂ€nster, dĂ€r du inte vill skicka en betalning manuellt varje dag/vecka/mĂ„nad. IstĂ€llet lĂ„ter du bara ett program göra det Ă„t dig.

Denna funktion utlöser samma event som transfer.


approve

function approve(address _spender, uint256 _value) public returns (bool success)
approve Àr en annan anvÀndbar funktion nÀr det gÀller programmerbarhet. Med den hÀr funktionen kan du begrÀnsa antalet token som ett smart kontrakt kan ta ut frÄn din balans. Utan den riskerar du att kontraktet inte fungerar (eller utnyttjas) och att alla dina tillgÄngar stjÀls. 

Ta vÄrt exempel pÄ en prenumerationsmodell igen. Anta att du har en enorm mÀngd BinanceAcademyToken och att du vill stÀlla in veckovisa Äterkommande betalningar till en strömmande DApp. Du Àr upptagen med att lÀsa innehÄllet pÄ Binance Academy dygnet runt, sÄ du vill inte slösa tid pÄ att skapa en manuell transaktion varje vecka.

Du har en enorm balans pÄ BinanceAcademytoken, som vida överstiger vad som behövs för att betala för prenumerationen. För att förhindra att DApp drÀnerar allt kan du stÀlla in en grÀns med approve. Anta att din prenumeration kostar en BinanceAcademyToken per vecka. Om du begrÀnsat det godkÀnda vÀrdet till 20 token kan du fÄ din prenumeration betald automatiskt i fem mÄnader.

Om DAppen i vÀrsta fall försöker ta ut alla dina tillgÄngar, eller om en bugg hittas, kan du max förlora 20 token. Det kanske inte Àr idealiskt, men det Àr definitivt mer tilltalande Àn att förlora hela ditt innehav.

NÀr det anropas utlöser approve eventet approval. Liksom eventet transfer skriver den data till blockkedjan.


allowance 

function allowance(address _owner, address _spender) public view returns (uint256 remaining)
allowance kan anvÀndas i samband med approve. NÀr du har gett ett kontrakt behörighet att hantera dina token kan du anvÀnda detta för att kontrollera hur mÄnga som det fortfarande kan ta ut. Om ditt abonnemang till exempel har förbrukat 12 av dina 20 godkÀnda token bör anrop av funktionen allowance returnera totalt 8.


Tillvalsfunktionerna

De tidigare nĂ€mnda funktionerna Ă€r obligatoriska. Å andra sidan behöver inte name, symbol och decimal inkluderas, men de kan göra ditt ERC-20-kontrakt lite snyggare. De gör att du kan lĂ€gga till ett mĂ€nskligt lĂ€sbart namn, stĂ€lla in en symbol (dvs. ETH, BTC, BNB) och specificera hur mĂ„nga decimaler token Ă€r delbara med. Till exempel kan token som anvĂ€nds som valutor dra större nytta av att vara mer delbara, Ă€n en token som representerar Ă€gandet av en fastighet.


Kolla in det hÀr exemplet pÄ GitHub för att se dessa element i ett riktigt kontrakt.


Vad kan ERC-20-token göra?



Genom att sammanstÀlla alla funktionerna ovan fÄr vi ett ERC-20-kontrakt. Vi kan frÄga om det totala utbudet, kontrollera saldon, överföra tillgÄngar och ge tillstÄnd till andra DApps att hantera token Ät oss.

En stor del av nyttan med ERC-20-token Àr deras flexibilitet. Konventionerna som anges begrÀnsar inte utvecklingen, sÄ parterna kan implementera ytterligare funktioner och stÀlla in specifika parametrar för att passa alla deras behov.


Stablecoin

Stablecoin (token kopplade till fiat-valutor) anvÀnder ofta ERC-20-tokenstandarden. Transaktionen till BUSD-kontraktet som vi nÀmnde tidigare Àr ett exempel och de flesta större stablecoin Àr ocksÄ tillgÀngliga i detta format.

För ett typiskt fiat-backed stablecoin har en emittent reserver i euro, dollar, etc. För varje enhet i deras reserv utfÀrdar de sedan en token. Detta innebÀr att om 10 000 USD lÄses in i ett kassavalv sÄ kan emittenten skapa 10 000 token och var och en kan lösas in för 1 USD.

Detta Àr ganska enkelt att implementera i Ethereum, rent tekniskt sett. En emittent lanserar helt enkelt ett kontrakt med 10 000 token. Sedan kommer denne att distribuera dem till anvÀndare med löftet att de senare kan lösa in token för en proportionell mÀngd fiatvaluta. 

AnvĂ€ndarna kan göra ett antal saker med sina token – de kan köpa varor och tjĂ€nster eller anvĂ€nda dem i DApps. Alternativt kan de begĂ€ra att emittenten byter ut dem pĂ„ en gĂ„ng. I det fallet brĂ€nner emittenten alla returnerade token (gör dem oanvĂ€ndbara) och tar ut rĂ€tt mĂ€ngd fiat frĂ„n sina reserver.

Kontraktet som styr detta system Àr, som tidigare nÀmnts, relativt förenklat. Att lansera ett stablecoin krÀver dock mycket arbete med externa faktorer som logistik, regelefterlevnad med mera.


SĂ€kerhetstoken

SÀkerhetstoken liknar stablecoin. PÄ kontraktsnivÄ kan de till och med vara identiska, eftersom de fungerar pÄ samma sÀtt. Skillnaden Àr pÄ emittentens nivÄ. SÀkerhetstoken representerar vÀrdepapper, sÄsom aktier, obligationer eller fysiska tillgÄngar. Ofta (Àven om sÄ inte alltid Àr fallet) ger de innehavaren nÄgon form av andel i ett företag eller en vara.


Verktygstoken

Verktygstoken Àr kanske de vanligaste typerna av token som finns idag. Till skillnad frÄn de tvÄ tidigare erbjudandena stöds de inte av nÄgot. Om tillgÄngsstödda token Àr som aktier i ett flygbolag, sÄ Àr verktygstoken som frekventa program: de fyller en funktion, men de har inget externt vÀrde. Verktygstoken kan tillgodose en mÀngd anvÀndningsomrÄden, fungera som valuta i spel, brÀnsle för decentraliserade applikationer, lojalitetspoÀng och mycket mer.



Kan man skapa ERC-20-token?

Du kan skapa ether (ETH), men token gĂ„r inte att skapa – vi sĂ€ger att de mintas nĂ€r nya skapas. NĂ€r ett kontrakt lanseras distribuerar utvecklarna utbudet enligt sina planer och mĂ„l.
Vanligtvis görs detta via en Initial Coin Offering (ICO), Initial Exchange Offering (IEO) eller Security Token Offering (STO). Du kan stöta pÄ varianter av dessa akronymer, men dessa begrepp Àr ganska lika varandra. Investerare skickar ether till kontraktsadressen och fÄr i gengÀld nya token. Pengarna som samlas in anvÀnds för att finansiera vidareutvecklingen av projektet. AnvÀndarna förvÀntar sig att kunna anvÀnda sina token (antingen omedelbart eller vid ett senare tillfÀlle) eller sÀlja dem vidare med vinst nÀr projektet utvecklas.

Tokendistributionen behöver inte vara automatiserad. MÄnga crowdfunding-event tillÄter anvÀndare att betala med en rad olika digitala valutor (som BNB, BTC, ETH och USDT). Respektive balans allokeras sedan till de adresser som anvÀndarna tillhandahÄller.


För- och nackdelar med ERC-20-token

Fördelar med ERC-20-token

Fungibla

ERC-20-token Ă€r fungibla – varje enhet Ă€r utbytbar med en annan. Om du hade en BinanceAcademyToken skulle det inte spela nĂ„gon roll vilken specifik token du hade. Du kan byta den mot nĂ„gon annans och de skulle fortfarande vara helt identiska, precis som kontanter eller guld.

Detta Ă€r idealiskt om din token syftar till att vara en valuta av nĂ„got slag. Du skulle inte vilja ha individuella enheter med sĂ€rskiljbara egenskaper, vilket skulle göra dem icke-fungibla. Detta kan göra att vissa token blir mer – eller mindre – vĂ€rdefulla Ă€n andra, vilket eliminerar deras syfte.


Flexibla

Som vi utforskade i föregÄende avsnitt Àr ERC-20-token mycket anpassningsbara och kan skrÀddarsys för mÄnga olika applikationer. De kan till exempel anvÀndas som valuta i spel, i lojalitetspoÀngprogram, som digitala samlarobjekt eller till och med för att representera konst och ÀganderÀtt.


PopulÀra

ERC-20:s popularitet i kryptovalutabranschen Àr en mycket övertygande anledning till att anvÀnda dem som en mall. Det finns massor av börser, plÄnböcker och smarta kontrakt som redan Àr kompatibla med nylanserade token. Dessutom finns det gott om stöd och dokumentation för utvecklare. 


Nackdelar med ERC-20-token

Skalbarhet

Precis som med mĂ„nga kryptovalutanĂ€tverk Ă€r Ethereum inte immun mot vĂ€xtvĂ€rk. I sin nuvarande form skalar den inte bra – att försöka skicka en transaktion under högtrafik resulterar i höga avgifter och förseningar. Om du startar en ERC-20-token och nĂ€tverket blir överbelastat, kan dess anvĂ€ndbarhet pĂ„verkas.

Detta Àr inte ett problem som Àr exklusivt för Ethereum. Det Àr snarare en nödvÀndig avvÀgning i sÀkra och distribuerade system. Communityn planerar att ta itu med dessa problem i migrationen till Ethereum 2.0 som kommer att implementera uppgraderingar som Ethereum Plasma och Ethereum Casper.


BedrÀgerier

Även om det inte Ă€r ett problem med sjĂ€lva tekniken kan enkelheten med vilken en token kan lanseras anses vara en nackdel i vissa avseenden. Det krĂ€vs minimal anstrĂ€ngning att skapa en enkel ERC-20-token, vilket betyder att vem som helst kan göra det – pĂ„ gott och ont.

DÀrför bör du vara försiktig med vad du investerar i. Det finns ett antal pyramid- och ponzi-system förklÀdda som blockkedjeprojekt.  Gör din egen efterforskning innan du investerar för att dra dina egna slutsatser om huruvida en möjlighet Àr legitim eller inte.

 

ERC-20, ERC-1155, ERC-223, ERC-721 – vad Ă€r skillnaden?

ERC-20 var den första (och hittills den mest populÀra) Ethereum-tokenstandarden, men inte den enda. Under Ärens lopp har mÄnga andra dykt upp, som antingen föreslÄr förbÀttringar av ERC-20 eller försöker uppnÄ helt olika mÄl.

NÄgra av de mindre vanliga standarderna Àr de som anvÀnds i icke-fungibla token (NFT:er). Ibland gynnas anvÀndningsomrÄdet faktiskt av att ha unika token med olika attribut. Om du ville tokenisera ett unikt konstverk, tillgÄng i ett spel med mera, kan en av dessa kontraktstyper vara mer tilltalande.

ERC-721-standarden anvÀndes till exempel för den omÄttligt populÀra DAppen CryptoKitties. Ett sÄdant kontrakt tillhandahÄller ett API för anvÀndarna att skapa sina egna icke-fungibla token och för att koda metadata (bilder, beskrivningar med mera). 

ERC-1155-standarden kan ses som en förbÀttring av bÄde ERC-721 och ERC-20. Den beskriver en standard som stöder bÄde fungibla och icke-fungibla token i samma kontrakt.

Andra alternativ som ERC-223 eller ERC-621 syftar till att förbÀttra anvÀndbarheten. Den första implementerar skyddsÄtgÀrder för att förhindra oavsiktliga tokenöverföringar. Den andra lÀgger till extra funktioner för att öka och minska tokentillgÄngen.


Sammanfattningsvis

ERC-20-standarden har dominerat kryptotillgÄngsvÀrlden i flera Är och det Àr inte svÄrt att förstÄ varför. Med relativ lÀtthet kan vem som helst anvÀnda ett enkelt kontrakt som passar ett brett spektrum av anvÀndningsomrÄden (verktygstoken, stablecoin, och sÄ vidare). Med det sagt saknar ERC-20 nÄgra av de funktioner som har skapats av andra standarder. Det ÄterstÄr att se om efterföljande typer av kontrakt kommer att ersÀtta den.