Eine Einführung in ERC-20-Token
Startseite
Artikel
Eine Einführung in ERC-20-Token

Eine Einführung in ERC-20-Token

Mittel
Veröffentlicht Jul 31, 2020Aktualisiert Dec 28, 2022
12m

Inhalt


Einführung

Ethereum wurde 2014 von Vitalik Buterin gegründet und positionierte sich als Open-Source-Plattform für die Einführung dezentralisierter Anwendungen (DApps). Viele von Buterins Beweggründen für die Schaffung einer neuen Blockchain sind auf die mangelnde Flexibilität des Bitcoin-Protokolls zurückzuführen.
Seit ihrer Einführung hat die Ethereum-Blockchain Entwickler, Unternehmen und Entrepreneure angezogen und eine wachsende Industrie von Benutzern hervorgebracht, die Smart Contracts und verteilte Anwendungen veröffentlichen.
In diesem Artikel werden wir uns mit dem Standard ERC-20 befassen, einem wichtigen Rahmen für die Erstellung von Token. Dieser Rahmen ist zwar spezifisch für das Ethereum-Netzwerk, inspirierte aber auch andere Blockchain-Standards, wie den BEP-2 der Binance Chain.


Was ist der ERC-20-Standard?

In Ethereum ist ein ERC ein Ethereum Request for Comments. Dies sind technische Dokumente, die die Standards für die Programmierung in Ethereum umreißen. Sie sind nicht mit den Ethereum Improvement Proposals (EIPs) zu verwechseln, die, wie die BIPs von Bitcoin, Verbesserungen des Protokolls selbst vorschlagen. ERCs zielen stattdessen darauf ab, Konventionen aufzustellen, die es Anwendungen und Verträgen erleichtern, miteinander zu interagieren.

Das von Vitalik Buterin und Fabian Vogelsteller im Jahr 2015 verfasste ERC-20 schlägt ein relativ einfaches Format für auf Ethereum basierende Token vor. Wenn die Entwickler der Vorlage folgen, müssen sie das Rad nicht neu erfinden. Stattdessen können sie auf einer Grundlage aufbauen, die in der gesamten Branche bereits verwendet wird.

Sobald neue ERC-20-Token erstellt wurden, sind sie automatisch mit Diensten und Software interoperabel, die den ERC-20-Standard unterstützen (Software-Wallets, Hardware-Wallets, Tauschbörsen, usw.).

Es sei darauf hingewiesen, dass der ERC-20-Standard zu einem EIP (genauer gesagt, EIP-20) entwickelt wurde. Dies geschah aufgrund seiner weit verbreiteten Anwendung einige Jahre nach dem ursprünglichen Vorschlag. Doch auch Jahre später ist der Name “ERC-20” geblieben.


Eine kurze Zusammenfassung zu Ethereum-Token

Im Gegensatz zu ETH (Ethereums native Krypto-Währung) werden ERC-20-Token nicht auf Konten gehalten. Die Token existieren nur innerhalb eines Vertrages, der wie eine in sich geschlossene Datenbank ist. Sie legt die Regeln für die Token fest (d.h. Name, Symbol, Teilbarkeit) und führt eine Liste, die die Salden der Benutzer ihren Ethereum-Adressen zuordnet.

Um Token zu verschieben, müssen die Benutzer eine Transaktion an den Vertrag senden, um einen Teil des Guthabens anderweitig zu vergeben. Wenn Alice z.B. 5.000 BinanceAcademyToken an Bob senden möchte, ruft sie eine Funktion innerhalb des BinanceAcademyToken Smart Contracts auf, um dies zu tun.



Ihr Aufruf dieser Funktion ist in einer anscheinend regulären Ethereum-Transaktion enthalten, die dabei 0 ETH an den Token-Contract zahlt. Der Aufruf ist in einem zusätzlichen Feld in der Transaktion enthalten, das angibt, was Alice tun will – in unserem Fall Token an Bob überweisen.

Auch wenn sie keine Ether schickt, muss sie dennoch eine darin ausgewiesene Gebühr bezahlen, damit ihre Transaktion in einem Block enthalten ist. Wenn sie keine ETH hat, muss sie sich vor dem Transfer der Token einen kleinen Betrag ETH besorgen.
Hier ist ein Beispiel aus der realen Welt des obigen Beispiels auf Etherscan: Jemand ruft den BUSD-Contract auf. Sie können sehen, dass Tokens übertragen wurden und eine Gebühr bezahlt wurde, obwohl das Value Feld anzeigt, dass 0 ETH gesendet wurde.

Nun, da wir auf dem Laufenden sind, wollen wir einen Blick unter die Haube werfen, um die Struktur eines typischen ERC-20-Vertrages besser zu verstehen.


Wie werden ERC-20-Token erstellt?



Um ERC-20-konform zu sein, muss Ihr Vertrag sechs Pflichtfunktionen enthalten: totalSupply, balanceOf, transfer, transferFrom, approve und allowance. Zusätzlich können Sie optionale Funktionen angeben, wie z.B. name, symbol und decimal. Was diese Funktionen bewirken, wird Ihnen vielleicht aus ihren Namen ersichtlich. Wenn nicht, kein Problem – wir werden sie gleich erklären. 

Nachfolgend sind die Funktionen so dargestellt, wie sie in der von Ethereum speziell entwickelten Sprache Solidity erscheinen.


totalSupply

function totalSupply() public view returns (uint256)
Wenn sie von einem Benutzer aufgerufen wird, zeigt die obige Funktion den Gesamtvorrat (total supply) an Tokens an, die der Vertrag enthält.


balanceOf 

function balanceOf(address _owner) public view returns (uint256 balance)
Im Gegensatz zu 0>totalSupply, nimmt balanceOf einen Parameter (eine Adresse). Wenn es aufgerufen wird, zeigt es den Saldo der Token-Bestände dieser Adresse an. Denken Sie daran, dass die Konten im Ethereum-Netzwerk öffentlich sind, so dass Sie den Saldo jedes Benutzers abfragen können, sofern Sie die Adresse kennen.


transfer

function transfer(address _to, uint256 _value) public returns (bool success)
transfer überträgt Token von einem Benutzer zu einem anderen. Hier geben Sie die Adresse, an die Sie senden möchten, und den zu überweisenden Betrag an.
Wenn es aufgerufen wird, löst transfer etwas aus, das als event (in diesem Fall event transfer) bezeichnet wird, was der Blockchain im Grunde genommen sagt, einen Verweis darauf aufzunehmen.


transferFrom

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
Die Funktion transferFrom ist eine praktische Alternative zu transfer, die in dezentralisierten Anwendungen etwas mehr Programmierbarkeit ermöglicht. Wie transfer wird sie zum Transferieren von Token verwendet, aber diese Token müssen nicht unbedingt der Person gehören, die den Vertrag aufruft. 

Mit anderen Worten, Sie können jemanden – oder einen anderen Vertrag – ermächtigen, in Ihrem Namen Gelder zu überweisen. Ein möglicher Anwendungsfall ist die Bezahlung von Dienstleistungen auf Abonnementbasis, bei denen Sie nicht jeden Tag/Woche/Monat manuell eine Zahlung senden möchten. Stattdessen lassen Sie dies einfach von einem Programm für Sie erledigen.

Diese Funktion löst dasselbe Event aus wie transfer.


approve

function approve(address _spender, uint256 _value) public returns (bool success)
approve ist eine weitere nützliche Funktion unter dem Gesichtspunkt der Programmierbarkeit. Mit dieser Funktion können Sie die Anzahl der Token begrenzen, die ein Smart Contract von Ihrem Guthaben abziehen kann. Ohne diese Funktion laufen Sie Gefahr, dass der Vertrag nicht richtig funktioniert (oder ausgenutzt wird) und Ihnen Ihr gesamtes Guthaben gestohlen wird. 
Nehmen Sie noch einmal unser Beispiel für ein Abonnementmodell. Angenommen, Sie haben eine riesige Menge an BinanceAcademyToken und möchten wöchentlich wiederkehrende Zahlungen an ein Streaming DApp einrichten. Sie sind Tag und Nacht mit der Lektüre der Artikel auf Binance Academy beschäftigt, so dass Sie sich nicht jede Woche die Zeit nehmen wollen, eine Transaktion manuell zu erstellen.
Sie verfügen über einen massiven Bestand an BinanceAcademyToken, der weit über das hinausgeht, was zur Bezahlung des Abonnements benötigt wird. Um zu verhindern, dass die DApp sie alle abzieht, können Sie mit approve ein Limit setzen. Angenommen, Ihr Abonnement kostet ein BinanceAcademyToken pro Woche. Wenn Sie den genehmigten Wert auf zwanzig Token begrenzen, dann könnten Sie Ihr Abonnement fünf Monate lang automatisch bezahlen lassen.

Im schlimmsten Fall, wenn das DApp versucht, alle Ihre Gelder abzuheben oder wenn ein Bug gefunden wird, würden Sie nur zwanzig Token verlieren. Das mag zwar nicht ideal sein, aber es ist sicherlich attraktiver, als Ihr gesamtes Guthaben zu verlieren.

Wenn approve aufgerufen wird, löst dies das approval event aus. Wie das transfer event schreibt es Daten in die Blockchain.


allowance 

function allowance(address _owner, address _spender) public view returns (uint256 remaining)
allowance kann in Verbindung mit approve verwendet werden. Wenn Sie einem Vertrag die Erlaubnis erteilt haben, Ihre Token zu verwalten, können Sie damit prüfen, wie viele er noch einziehen kann. Wenn Ihr Abonnement zum Beispiel zwölf Ihrer zwanzig genehmigten Token aufgebraucht hat, sollten Sie mit der Funktion allowance insgesamt acht angezeigt bekommen.


Die optionalen Funktionen

Die zuvor besprochenen Funktionen sind obligatorisch. Auf der anderen Seite müssen name, symbol und decimal nicht aufgenommen werden, aber sie können Ihren ERC-20-Vertrag etwas verschönern. Entsprechend erlauben sie Ihnen, einen menschenlesbaren Namen hinzuzufügen, ein Symbol zu setzen (wie z.B. ETH, BTC, BNB) und festzulegen, auf wie viele Dezimalstellen Tokens teilbar sind. Beispielsweise können Token, die als Währungen verwendet werden, mehr davon profitieren, dass sie besser teilbar sind als ein Token, das das Eigentum an einer Immobilie repräsentiert.


Sehen Sie sich dieses Beispiel auf GitHub an, um diese Elemente in einem echten Vertrag zu sehen.


Was können ERC-20-Token tun?



Indem wir alle oben genannten Funktionen zusammenfassen, haben wir einen ERC-20-Vertrag. Wir können die Gesamtversorgung abfragen, Salden überprüfen, Gelder überweisen und anderen DApps die Erlaubnis erteilen, Tokens für uns zu verwalten.

Ein großer Teil der Attraktivität der ERC-20-Token liegt in ihrer Flexibilität. Die dargelegten Konventionen schränken die Entwicklung nicht ein, so dass die Parteien zusätzliche Funktionen implementieren und spezifische Parameter festlegen können, die ihren Bedürfnissen entsprechen.


Stablecoins

Stable Coins (an Fiatwährungen gekoppelte Token) verwenden oft den ERC-20-Token-Standard. Die bereits erwähnte Transaktion zum BUSD-Vertrag ist ein Beispiel dafür, und die meisten wichtigen Stablecoins sind ebenfalls in diesem Format erhältlich.

Bei einer typischen fiat-gestützten Stablecoin hält ein Emittent Reserven in Euro, Dollar usw. Dann gibt er für jede Einheit in seiner Reserve ein Token aus. Das bedeutet, dass der Emittent, wenn 10.000 $ in einem Tresor eingeschlossen wären, 10.000 Token erstellen könnte, die jeweils für 1 $ eingelöst werden könnten.

Dies ist in Ethereum technisch gesehen recht einfach umzusetzen. Ein Emittent beginnt einfach einen Vertrag mit 10.000 Token. Dann verteilt er sie an die Benutzer mit dem Versprechen, dass sie die Token später gegen einen entsprechenden Betrag in Fiat-Währung einlösen können.

Die Benutzer können mit ihren Token verschiedene Dinge tun – sie können Waren und Dienstleistungen kaufen oder sie in DApps verwenden. Alternativ könnten sie beim Herausgeber den sofortigen Umtausch anfordern. In diesem Fall wird der Herausgeber die zurückgegebenen Token verbrennen (wodurch sie unbrauchbar werden) und den korrekten Betrag in Fiat aus seinen Reserven abheben.

Der Vertrag, der dieses System regelt, ist, wie bereits erwähnt, relativ simpel. Die Einführung einer Stablecoin erfordert jedoch eine Menge Arbeit an externen Faktoren wie Logistik, Einhaltung von Vorschriften usw.


Security-Token

Security-Token sind ähnlich wie Stablecoins. Auf der Vertragsebene könnten beide sogar identisch sein, da sie auf die gleiche Weise funktionieren. Die Unterscheidung erfolgt auf der Ebene des Herausgebers. Security-Tokens repräsentieren Wertpapiere wie Aktien, Anleihen oder physische Vermögenswerte. Häufig (obwohl dies nicht immer der Fall ist) gewähren sie dem Inhaber eine Art Beteiligung an einem Unternehmen oder einer Ware.


Utility-Token

Utility-Token sind möglicherweise die heute am häufigsten vorkommenden Arten von Token. Im Gegensatz zu den beiden vorhergehenden Angeboten sind sie durch nichts abgesichert. Wenn durch Vermögenswerte abgesicherte Token so etwas ähnliches wie Aktien einer Fluggesellschaft sind, dann sind Utility-Token etwas wie Vielfliegerprogramme: Sie erfüllen eine Funktion, haben aber keinen externen Wert. Utility-Token können eine Vielzahl von Anwendungsfällen abdecken: Sie dienen als Währung im Spiel, als Treibstoff für dezentrale Anwendungen, als Treuepunkte und vieles mehr.



Kann man ERC-20-Token minen?

Man kann ether (ETH) durch Mining erhalten, aber Token sind nicht 'mineable' – wir nennen es minted, wenn neue erzeugt werden. Wenn ein Vertrag auf den Weg erstellt wird, verteilen die Entwickler das Angebot entsprechend ihren Plänen und ihrer Roadmap.
Typischerweise erfolgt dies über ein Initial Coin Offering (ICO), Initial Exchange Offering (IEO) oder ein Security Token Offering (STO). Möglicherweise stoßen Sie auf Variationen dieser Akronyme, aber diese Konzepte sind recht ähnlich. Investoren senden ETH an die Vertragsadresse und erhalten im Gegenzug neue Token. Das gesammelte Geld wird zur Finanzierung der weiteren Entwicklung des Projekts verwendet. Die Nutzer erwarten, dass sie ihre Token (entweder sofort oder zu einem späteren Zeitpunkt) verwenden oder sie im Laufe der Entwicklung des Projekts gewinnbringend weiterverkaufen können.

Die Verteilung der Token muss nicht automatisiert werden. Bei vielen Crowdfunding-Veranstaltungen können Benutzer mit einer Reihe verschiedener digitaler Währungen (wie BNB, BTC, ETH und USDT) bezahlen. Die jeweiligen Salden werden dann den von den Benutzern angegebenen Adressen zugeordnet.


Vor- und Nachteile von ERC-20-Token

Vorteile von ERC-20-Token

Fungibel

ERC-20-Token sind fungibel – jede Einheit ist mit einer anderen austauschbar. Wenn Sie im Besitz eines BinanceAcademyToken wären, würde es keine Rolle spielen, welches spezifische Token Sie besitzen. Sie könnten es gegen ein anderes eintauschen, und beide wären immer noch funktionell identisch, genau wie Bargeld oder Gold.

Dies ist ideal, wenn Ihr Token eine Art Währung sein soll. Sie würden keine einzelnen Einheiten mit unterscheidbaren Merkmalen wollen, weil diese dann nicht fungibel wären. Dies könnte dazu führen, dass einige Tokens mehr – oder weniger – wertvoll als andere werden und so ihren eigentlichen Zweck untergraben würden.


Flexibel

Wie wir im vorigen Abschnitt untersucht haben, sind die ERC-20-Token in hohem Maße anpassbar und können auf viele verschiedene Anwendungen zugeschnitten werden. Sie können z.B. als Währung in einem Spiel, in Treuepunkteprogrammen, als digitale Sammlerstücke oder sogar zur Repräsentation von Kunstwerken und Eigentumsrechten verwendet werden.


Populär

Die Popularität von ERC-20 in dem Bereich Krypto-Währungen ist ein höchst überzeugender Grund, es als Vorlage zu verwenden. Es gibt eine Menge von Tauschbörsen, Wallets und Smart Contracts, die bereits mit neu eingeführten Tokens kompatibel sind. Darüber hinaus gibt es reichlich Entwicklerunterstützung und Dokumentation.


Nachteile von ERC-20-Token

Skalierbarkeit

Wie viele Netzwerke für Krypto-Währungen ist auch Ethereum nicht immun gegen 'Wachstumsschmerzen'. In seiner gegenwärtigen Form skaliert es nicht gut – der Versuch, eine Transaktion zu Spitzenzeiten zu senden, führt zu hohen Gebühren und Verzögerungen. Wenn Sie ein ERC-20-Token einführen und das Netzwerk überlastet wird, könnte seine Nutzbarkeit beeinträchtigt werden.

Dies ist kein Problem, das ausschließlich Ethereum betrifft. Vielmehr ist es ein notwendiger Kompromiss in sicheren, verteilten Systemen. Die Community plant, diese Probleme bei der Migration zu Ethereum 2.0 anzugehen, wobei Upgrades wie Ethereum Plasma und Ethereum Casper implementiert werden sollen.
Erfahren Sie mehr über Probleme bei der Skalierbarkeit in dem Artikel Blockchain-Skalierbarkeit - Sidechains und Zahlungskanäle.


Scams

Obwohl die Technologie an sich kein Problem darstellt, könnte die Leichtigkeit, mit der ein Token eingeführt werden kann, in mancher Hinsicht als Nachteil betrachtet werden. Es ist nur ein minimaler Aufwand erforderlich, um ein einfaches ERC-20-Token zu erstellen, was bedeutet, dass es jeder tun könnte – im Guten wie im Schlechten.

Daher sollten Sie mit dem, in was Sie investieren, vorsichtig sein. Es gibt eine Reihe von Pyramiden- und Ponzi-Systemen, die als Blockchain-Projekte getarnt sind. Machen Sie Ihre eigenen Nachforschungen (DYOR) bevor Sie investieren, um Ihre eigenen Schlussfolgerungen darüber zu ziehen, ob eine Investitionsgelegenheit legitim ist.

 

ERC-20, ERC-1155, ERC-223, ERC-721 – was ist der Unterschied?

ERC-20 war der erste (und bis heute populärste) Ethereum-Token-Standard, aber er ist bei weitem nicht der einzige. Im Laufe der Jahre sind viele andere entstanden, die entweder Verbesserungen zu ERC-20 vorschlugen oder versuchten, ganz andere Ziele zu erreichen.

Einige der weniger verbreiteten Standards sind diejenigen, die bei nicht fungiblen Tokens (NFTs) verwendet werden. Manchmal profitiert Ihr Anwendungsfall tatsächlich davon, dass Sie einzigartige Token mit unterschiedlichen Attributen haben. Wenn Sie ein einzigartiges Kunstwerk, einen Gegenstand in einem Computerspiel usw. tokenisieren möchten, könnte einer dieser Vertragstypen attraktiver sein.
Der Standard ERC-721 wurde zum Beispiel für die äußerst beliebte CryptoKitties DApp verwendet. Ein solcher Vertrag sieht ein API für Benutzer vor, um ihre eigenen nicht fungiblen Token zu minten und Metadaten (Bilder, Beschreibungen usw.) zu kodieren. 

Der Standard ERC-1155 könnte als eine Verbesserung sowohl gegenüber ERC-721 als auch gegenüber ERC-20 angesehen werden. Er umreißt einen Standard, der sowohl fungible als auch nicht fungible Tokens im selben Vertrag unterstützt.

Andere Optionen wie ERC-223 oder ERC-621 zielen darauf ab, die Benutzerfreundlichkeit zu verbessern. Ersteres sieht Sicherheitsvorkehrungen vor, um versehentliche Token-Transfers zu verhindern. Die zweite Option bietet zusätzliche Funktionen zur Erhöhung und Verringerung des Token-Angebots.

Weitere Informationen zum Thema NFTs finden Sie unter Ein Leitfaden für Krypto-Sammelobjekte und Nicht-Fungible Token (NFTs).


Fazit

Der ERC-20-Standard dominiert seit Jahren den Krypto-Asset-Bereich, und es ist nicht schwer zu erkennen, warum. Mit relativer Leichtigkeit kann jeder einen einfachen Vertrag für ein breites Spektrum von Anwendungsfällen (Utility-Token, Stablecoins usw.) einsetzen. Allerdings fehlen dem ERC-20 einige der Funktionen, die durch andere Standards möglich gemacht wurden. Es bleibt abzuwarten, ob nachfolgende Vertragstypen an seine Stelle treten werden.