Een inleiding over ERC-20-tokens

Delen
Copied to clipboard!
Een inleiding over ERC-20-tokens

Inhoud


Introductie

Ethereum is in 2014 opgericht door Vitalik Buterin en positioneert zichzelf als een  open source platform voor het lanceren van gedecentraliseerde applicaties ( DApps). Veel van de motivaties van Buterin voor het creëren van een nieuwe  blockchain kwamen voort uit het gebrek aan flexibiliteit van het  Bitcoin -protocol.

Sinds de lancering heeft de Ethereum-blockchain ontwikkelaars, bedrijven en ondernemers aangetrokken, waardoor een groeiende industrie van gebruikers is ontstaan die  smart contracten en gedistribueerde applicaties lanceert.

In dit artikel zullen we kijken naar de  ERC-20 -standaard, een belangrijk framework voor het maken van  tokens. Hoewel het specifiek is voor het Ethereum-netwerk, inspireerde het framework ook andere blockchain-standaarden, zoals Binance Chain  BEP-2.


Wat is de ERC-20-standaard?

In Ethereum is een ERC een  Ethereum-verzoek om opmerkingen. Dit zijn technische documenten met standaarden voor programmeren op Ethereum. Ze moeten niet worden verward met Ethereum Improvement Proposals (EIP's), die, net als de BIP's van Bitcoin, verbeteringen in het protocol zelf suggereren. ERC's zijn in plaats daarvan gericht op het opstellen van conventies die het voor applicaties en contracten gemakkelijker maken om met elkaar te communiceren.

ERC-20, geschreven door Vitalik Buterin en Fabian Vogelsteller in 2015, stelt een relatief eenvoudig formaat voor op Ethereum gebaseerde tokens voor. Door het overzicht te volgen, hoeven ontwikkelaars het wiel niet opnieuw uit te vinden. In plaats daarvan kunnen ze een fundament bouwen dat al in de hele industrie wordt gebruikt.

Zodra nieuwe ERC-20-tokens zijn gemaakt, werken ze automatisch samen met services en software die de ERC-20-standaard ondersteunen ( software wallets, hardware wallets, exchanges, etc.).

Opgemerkt moet worden dat de ERC-20-standaard is ontwikkeld tot een EIP (met name EIP-20). Dit gebeurde een paar jaar na het oorspronkelijke voorstel vanwege het wijdverbreide gebruik ervan. Maar zelfs jaren later is de naam ERC-20 blijven hangen.


Een korte samenvatting over Ethereum-tokens

In tegenstelling tot ETH (de eigen cryptocurrency van Ethereum), worden ERC-20-tokens niet bewaard door accounts. De tokens bestaan alleen binnen een contract, dat is als een op zichzelf staande database. Het specificeert de regels voor de tokens (d.w.z. naam, symbool, deelbaarheid) en houdt een lijst bij die de saldi van gebruikers toewijst aan hun Ethereum-adressen.

Om tokens te verplaatsen, moeten gebruikers een transactie naar het contract sturen met het verzoek om een deel van hun saldo elders toe te wijzen. Als Alice bijvoorbeeld 5.000 BinanceAcademyTokens naar Bob wil sturen, roept ze een functie binnen het smart contract van BinanceAcademyToken aan met het verzoek dit te doen.


Users interacting with a smart contract


Haar oproep is opgenomen in wat lijkt op een gewone Ethereum transactie die 0 ETH loont om de token contract. De oproep is opgenomen in een extra veld in de transactie, waarin staat wat Alice in ons geval wil doen, tokens overdragen aan Bob.

Ook al verstuurt ze geen ether, ze moet er toch een vergoeding in betalen om haar transactie in een  blok te laten opnemen. Als ze geen ETH heeft, moet ze er een paar kopen voordat ze de tokens overzet.

Hierbij is een realistisch voorbeeld van het bovenstaande op Etherscan: iemand doet een oproep naar het BUSD-contract. U kunt zien dat tokens zijn overgedragen en dat er een vergoeding is betaald, ook al geeft het veld Waarde aan dat 0 ETH is verzonden.

Nu we op de hoogte zijn, gaan we onder de motorkap kijken om de structuur van een typisch ERC-20-contract beter te begrijpen.


Hoe worden ERC-20-tokens ontwikkeld?


Illustration of an ERC-20 token being created


Om ERC-20-compatibel te zijn, moet uw contract zes verplichte functies bevatten:  totalSupply,  balanceOf,  transfer,  transferFrom,  keuren en  toelage. Daarnaast kunt u optionele functies specificeren, zoals  naam,  symbool en  decimaal. Het is u misschien duidelijk wat die functies doen met hun naam. Zo niet, maak je geen zorgen, we zullen ze opsplitsen. 

Hieronder staan de functies zoals ze verschijnen in de speciaal gebouwde Solidity-taal van Ethereum.


totalSupply

function totalSupply() public view returns (uint256)

Indien aangeroepen door een gebruiker, retourneert de bovenstaande functie de  totale voorraad tokens die het contract bevat.


balanceOf 

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

In tegenstelling tot  totalSupply heeft  balanceOf een parameter (een adres) nodig. Wanneer het wordt aangeroepen, retourneert het het saldo van de token-bezittingen van dat adres. Onthoud dat accounts op het Ethereum-netwerk openbaar zijn, dus u kunt het saldo van elke gebruiker opvragen, mits u het adres weet.


transfer

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

transfer draagt tokens op passende wijze over van de ene gebruiker naar de andere. Hier geeft u het adres op waarnaar u wilt verzenden en het bedrag dat u wilt overboeken.

Wanneer aangeroepen, activeert  transfer iets dat een  event wordt genoemd (event transfer, in dit geval), wat in feite de blockchain vertelt om er een verwijzing naar op te nemen.


transferFrom

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

De  transferFrom functie is een handig alternatief voor  transfer dat een beetje meer programmeerbaarheid mogelijk maakt in gedecentraliseerde applicaties. Net als  transfer, wordt het gebruikt om tokens te verplaatsen, maar die tokens hoeven niet per se van de persoon te zijn die het contract heeft opgevraagd. 

Met andere woorden, u kunt iemand of een ander contract machtigen om namens u geld over te maken. Een mogelijke use-case is het betalen voor op abonnementen gebaseerde services, waarbij u niet elke dag / week / maand handmatig een betaling wilt verzenden. In plaats daarvan laat je een programma het gewoon voor je doen.

Deze functie activeert dezelfde gebeurtenis als  transfer.


approve

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

approve is een andere nuttige functie vanuit het oogpunt van programmeerbaarheid. Met deze functie kunt u het aantal tokens beperken dat een smart contract van uw saldo kan opnemen. Zonder dit risico loopt u het risico dat het contract niet goed functioneert (of wordt uitgebuit) en dat al uw geld wordt gestolen. 

Neem opnieuw ons voorbeeld van een abonnementsmodel. Stel dat u een enorme hoeveelheid BinanceAcademyTokens heeft en dat u wekelijks terugkerende betalingen wilt instellen voor een streaming  DApp. U bent dag en nacht bezig met het lezen van  Binance Academy -inhoud, dus u wilt niet elke week de tijd nemen om handmatig een transactie te maken.

Je hebt een enorm saldo van BinanceAcademyTokens, veel meer dan wat nodig is om voor het abonnement te betalen. Om te voorkomen dat de DApp ze allemaal leegmaakt, kunt u een limiet instellen met approve. Stel dat uw abonnement één BinanceAcademyToken per week kost. Als u de goedgekeurde waarde op twintig tokens had begrensd, zou u uw abonnement vijf maanden automatisch kunnen laten betalen.

In het slechtste geval, als de DApp probeert al uw geld op te nemen of als er een bug wordt gevonden, kunt u slechts twintig tokens verliezen. Het is misschien niet ideaal, maar het is zeker aantrekkelijker dan al je bezittingen te verliezen.

Wanneer aangeroepen, approve activeert de approval gebeurtenis. Net als de  transfer -gebeurtenis, schrijft het gegevens naar de blockchain.


allowance 

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

 allowance kan worden gebruikt in combinatie met approve. Wanneer u een contract toestemming heeft gegeven om uw  tokens te beheren, kunt u dit gebruiken om te controleren hoeveel het nog kan opnemen. Als uw abonnement bijvoorbeeld twaalf van uw twintig goedgekeurde tokens heeft opgebruikt, zou het aanroepen van de functie  allowance in totaal acht moeten opleveren.


De optionele functies

De eerder besproken functies zijn verplicht. Aan de andere kant hoeven  naam,  symbool en  decimaal niet te worden opgenomen, maar ze kunnen van uw ERC-20-contract een een beetje mooier. Respectievelijk stellen ze je in staat om een voor mensen leesbare naam toe te voegen, een symbool in te stellen (d.w.z. ETH, BTC, BNB) en om op te geven tot hoeveel decimalen tokens deelbaar zijn. Tokens die als valuta worden gebruikt, hebben bijvoorbeeld meer baat bij deelbaarheid dan een token dat eigendom van een eigendom vertegenwoordigt.


Bekijk  dit voorbeeld op GitHub om deze elementen in een echt contract te zien.


Wat kunnen ERC-20-tokens?


Illustration of various uses of ERC-20 tokens


Door alle bovenstaande functies samen te stellen, hebben we een ERC-20-contract. We kunnen het  totale aanbod opvragen, saldi controleren, geld overmaken en toestemming geven aan andere  DApps om tokens voor ons te beheren.

Een groot deel van de aantrekkingskracht van ERC-20-tokens is hun flexibiliteit. De vastgestelde conventies beperken de ontwikkeling niet, dus partijen kunnen aanvullende functies implementeren en specifieke parameters instellen om aan hun behoeften te voldoen.


Stablecoins

Stablecoins (tokens gekoppeld aan  fiat-valuta's) gebruiken vaak de ERC-20-tokenstandaard. De transactie naar het BUSD-contract waarnaar we eerder verwezen, is een voorbeeld en de meeste grote stablecoins zijn ook beschikbaar in dit formaat.

Voor een typische door fiat gesteunde stablecoin houdt een emittent reserves aan van euro's, dollars, enz. Vervolgens geven ze voor elke eenheid in hun reserve een token uit. Dit betekent dat als $ 10.000 was opgesloten in een kluis, de uitgever 10.000 tokens kon maken, elk inwisselbaar voor $ 1.

Dit is technisch gezien vrij eenvoudig te implementeren in Ethereum. Een uitgever start gewoon een contract met 10.000 tokens. Vervolgens zullen ze ze onder gebruikers verspreiden met de belofte dat ze de tokens later kunnen inwisselen voor een evenredig bedrag aan fiat-valuta

Gebruikers kunnen een aantal dingen doen met hun tokens, ze kunnen goederen en diensten kopen of gebruiken in DApps. Als alternatief kunnen ze vragen dat de uitgevende instelling ze meteen ruilt. In dat geval verbrandt de uitgever  de geretourneerde tokens (waardoor ze onbruikbaar worden) en trekt het juiste bedrag van fiat uit hun reserves.

Het contract dat dit systeem beheerst, zoals eerder vermeld, is relatief simplistisch. Het lanceren van een stablecoin vereist echter veel werk aan externe factoren zoals logistiek, naleving van regelgeving, enz.


Security tokens

Security tokens zijn vergelijkbaar met stablecoins. Op contractniveau kunnen beide zelfs identiek zijn omdat ze op dezelfde manier functioneren. Het onderscheid vindt plaats op het niveau van de uitgevende instelling. Security tokens vertegenwoordigen effecten, zoals aandelen, obligaties of fysieke activa. Vaak (hoewel dit niet altijd het geval is), verlenen ze de houder een bepaald belang in een bedrijf of goed.


Utility tokens

Utility-tokens zijn misschien wel de meest voorkomende soorten tokens van tegenwoordig. In tegenstelling tot de vorige twee aanbieders, worden ze nergens door ondersteund. Als door activa gedekte tokens vergelijkbaar zijn met aandelen in een luchtvaartmaatschappij, dan zijn utility-tokens als frequent flyer-programma's: ze hebben een functie, maar ze hebben geen externe waarde. Utility-tokens kunnen voor talloze gebruikssituaties geschikt zijn en dienen als  in-game valuta, brandstof voor gedecentraliseerde applicaties, loyaliteitspunten en nog veel meer.


 ➠  Wilt u aan de slag met cryptocurrency? Koop uw Ether op Binance! 


Kun je ERC-20-tokens minen?

Je kunt ether (ETH) minen, maar tokens zijn niet te minen, we zeggen dat ze minted zijn wanneer nieuwe worden gemaakt. Bij het sluiten van een contract verdelen ontwikkelaars het aanbod volgens hun plannen en roadmap.

Dit gebeurt doorgaans via een  Initial Coin Offering (ICO)  Initial Exchange Offering (IEO) of Security Token Offering (STO). U kunt variaties van deze acroniemen tegenkomen, maar deze concepten lijken veel op elkaar. Investeerders sturen ether naar het contractadres en ontvangen in ruil daarvoor nieuwe tokens. Het ingezamelde geld wordt gebruikt om de verdere ontwikkeling van het project te financieren. Gebruikers verwachten dat ze hun tokens kunnen gebruiken (onmiddellijk of op een later tijdstip) of ze met winst kunnen doorverkopen naarmate het project zich ontwikkelt.

De token-distributie hoeft niet te worden geautomatiseerd. Bij veel crowdfunding-evenementen kunnen gebruikers betalen met een reeks verschillende digitale valuta's (zoals BNB, BTC, ETH en USDT). De respectievelijke saldi worden vervolgens toegewezen aan de adressen die door de gebruikers zijn opgegeven.


Voors en tegens van ERC-20-tokens

Voordelen van ERC-20-tokens

Uitwisselbaar

ERC-20-tokens zijn  uitwisselbaar elke eenheid is uitwisselbaar met een andere. Als je een BinanceAcademyToken had, zou het niet uitmaken welk specifiek token je had. Je zou het voor iemand anders kunnen ruilen, en ze zijn nog steeds functioneel identiek, net als contant geld of goud.

Dit is ideaal als je token een valuta wil zijn. Je zou geen individuele eenheden willen met onderscheidbare eigenschappen, waardoor ze niet-uitwisselbaar zouden zijn. Hierdoor kunnen sommige tokens meer of minder waardevol worden dan andere, waardoor hun doel wordt ondermijnd.


Flexibel

Zoals we in de vorige sectie hebben onderzocht, zijn ERC-20-tokens zeer aanpasbaar en kunnen ze worden aangepast aan veel verschillende toepassingen. Ze kunnen bijvoorbeeld worden gebruikt als in-game valuta, in loyaliteitsprogramma's, als  digitale verzamelobjecten, of zelfs om kunst en eigendomsrechten te vertegenwoordigen.


Populair

De populariteit van ERC-20 in de cryptocurrency-industrie is een zeer dwingende reden om het als blauwdruk te gebruiken. Er is een overvloed aan exchanges, portefeuilles en smart contracten die al compatibel zijn met nieuw gelanceerde tokens. Bovendien is er veel ondersteuning en documentatie voor ontwikkelaars.


Nadelen van ERC-20-tokens

Schaalbaarheid

Zoals met veel cryptocurrency-netwerken, is Ethereum niet immuun voor groeipijnen. In zijn huidige vorm schaalt het niet goed om een transactie te verzenden tijdens piekuren, wat resulteert in hoge kosten en vertragingen. Als u een ERC-20-token start en het netwerk overbelast raakt, kan dit de bruikbaarheid beïnvloeden.

Dit is geen exclusief probleem voor Ethereum. Het is eerder een noodzakelijke afweging in veilige, gedistribueerde systemen. De community is van plan deze problemen aan te pakken bij de migratie naar  Ethereum 2.0, die upgrades zal implementeren zoals  Ethereum Plasma en  Ethereum Casper.

Lees meer over schaalbaarheidsproblemen in  Blockchain-schaalbaarheid: sidechains en betalingskanalen.


Scams

Hoewel het geen probleem is met de technologie zelf, kan het gemak waarmee een token kan worden gelanceerd in sommige opzichten als een nadeel worden beschouwd. Het kost minimale moeite om een eenvoudig ERC-20-token te maken, wat betekent dat iedereen het voor goed of slecht kan doen.

Daarom moet je voorzichtig zijn met waar je in investeert. Er zijn een aantal  Pyramid- en Ponzi-schema's vermomd als blockchain-projecten.  Doe je eigen onderzoek voordat je investeert om je eigen conclusies te trekken over de vraag of een kans legitiem is.

 

ERC-20, ERC-1155, ERC-223, ERC-721 wat is het verschil?

ERC-20 was de eerste (en tot op heden de meest populaire) Ethereum-tokenstandaard, maar het is zeker niet de enige. In de loop der jaren zijn er vele andere opgedoken, die verbeteringen op de ERC-20 voorstellen of proberen verschillende doelen te bereiken.

Enkele van de minder gebruikelijke standaarden zijn degene die worden gebruikt in  niet-fungibele tokens (NFT's). Soms profiteert uw use-case eigenlijk van het hebben van unieke tokens met verschillende attributen. Als u een uniek kunstwerk, in-game-item, enz. Wilt tokeniseren, is een van deze contracttypen misschien aantrekkelijker.

De  ERC-721 standaard werd bijvoorbeeld gebruikt voor de immens populaire CryptoKitties DApp. Een dergelijk contract biedt een  API waarmee gebruikers hun eigen niet-fungibele tokens kunnen maken en  metadata (afbeeldingen, beschrijvingen, enz.) Kunnen coderen. 

De ERC-1155-standaard kan worden gezien als een verbetering ten opzichte van zowel ERC-721 als ERC-20. Het schetst een standaard die zowel fungible als non-fungible tokens in hetzelfde contract ondersteunt.

Andere opties zoals ERC-223 of ERC-621 zijn bedoeld om de bruikbaarheid te verbeteren. De eerste implementeert waarborgen om onbedoelde tokenoverdrachten te voorkomen. De laatste voegt extra functies toe voor het vergroten en verkleinen van het tokenaanbod.

Bekijk voor meer informatie over het onderwerp NFT's  A Guide to Crypto Collectibles and Non-Fungible Tokens (NFTs).


Tot Slot

De ERC-20-standaard domineert al jaren de crypto-activaruimte en het is niet moeilijk te begrijpen waarom. Met relatief gemak kan iedereen een eenvoudig contract implementeren voor een breed scala aan gebruiksscenario's (utility-tokens, stablecoins, enz.). Dat gezegd hebbende, mist ERC-20 enkele van de functies die door andere normen tot leven zijn gebracht. Het valt nog te bezien of de volgende soorten contracten in de plaats zullen komen.

Loading