Vergleich von ERC20, ERC223 und dem neuen Token-Standard Ethereum ERC777

Sie sind alle mit ERC20-Token vertraut, da Sie wahrscheinlich ein Paar besitzen, das durch eine Art Token-Verkauf verteilt wird. Aber wussten Sie, dass es neben ERC20 noch viele weitere Standards gibt? Ethereum hat eine lange Geschichte von entwickelten Standards.

Um Ihnen eine bessere Vorstellung davon zu geben, was ERC bedeutet, steht es für “Ethereum Request for Comment”. Dies ist ein Vorschlag zur Diskussion und Vorschläge zum aktuellen Standard. Die Nummer (wie 20) bezieht sich auf eine Ausgabenummer auf der Code-Sharing-Plattform Github. Schauen wir uns zunächst den ERC20-Standard an.

ERC20-Standard

Was genau ist der ERC20-Standard??

Das Aufkommen von ERC20-Token revolutionierte den Markt für Kryptowährungen und öffnete die Tür für die Fülle von ICO-Kryptowährung Projekte, die die Welt im Jahr 2017 erlebte. Der 2015 eingeführte ERC20-Code enthält eine spezifische Liste von Regeln, die ein bestimmtes Token auf Ethereum-Basis bereitstellen muss, und vereinfacht so das Programmieren der Funktionen von Token in der Blockchain von Ethereum. Grundsätzlich handelt es sich bei ERC20-Token um spezielle Formen intelligenter Verträge, bei denen die Blockchain von Ethereum verwendet wird.

Die bekanntesten Beispiele für ERC20-Token sind Bancor, EOS, Tronix, BNB, VeChain und Bankex.

Vor der Innovation des ERC20-Standards für Ethereum-Token mussten Codierer spezifische Implementierungsstandards erstellen, um ein Token zu entwickeln und im Ethereum-Netzwerk zu starten. Trotzdem hat der ERC20-Token-Code dank eines optimierten Protokolls und intelligenter Vertragsstandards die Erstellung von Token vereinfacht. Der ERC20-Code verringerte die Komplexität, die mit der Implementierung der intelligenten Verträge von Token verbunden ist, wodurch die Möglichkeit, die Verträge von Token zu brechen, erheblich verringert wurde.

Ab April 2018 gibt es 66.468 ERC20-Token-Verträge, Dank der Einheitlichkeit des Token-Codes im ERC20-Standard, der es Kryptowährungsbörsen leicht machte, verschiedene Token auf ihren Handelsplattformen aufzulisten. Als solches hat der ERC20-Standard der Krypto-Community geholfen, Liquiditätsprobleme zu überwinden, die mit einer solch enormen Anzahl von Ethereum-basierten Token verbunden sein könnten.

ERC20-Token-Funktionen:

Der ERC20-Code beschreibt sechs spezifische Funktionen für Token:

1- Den Gesamtvorrat an Token über die "totalSupply" Funktion

2- Abrufen des Token-Guthabens eines anderen Kontos, das mit dem verknüpft ist "_Inhaber" Adresse über die " balanceOf (address _owner) Konstante gibt zurück (uint256 balance)" Funktion.

3- Senden einer bestimmten Anzahl von Token "_Wert" an eine bestimmte Adresse über die " transfer (address _to, uint256 _value) gibt zurück (bool success)" Funktion.

4- Senden einer bestimmten Anzahl von Token "_Wert" von einer Token- (Vertrags-) Adresse zu einer anderen Token- (Vertrags-) Adresse über die "transferFrom (Adresse _from, Adresse _to, uint256 _value) gibt zurück (bool success)" Funktion.

5- Aktivieren eines bestimmten Kontos, um Token wiederholt von seinem Konto abzuheben, während die Obergrenze für die Anzahl der Token, die mit dem Konto abgezogen werden sollen, vordefiniert wird "_Wert" Parameter. Dies kann über die erreicht werden "genehmigen (Adresse _spender, uint256 _value) gibt zurück (bool Erfolg)". Die Obergrenze für die Auszahlung, d.h. "_Wert" Parameter, kann beim Abrufen der Funktion überschrieben werden.

6- Rückgabe der Restmenge an Token innerhalb des voreingestellten Betrags, der durch die Obergrenze definiert ist, die von der ausgegeben werden darf "_spender" vom Konto des "_Inhaber". Dies kann über die ausgeführt werden "Zulässige (Adresse * _Besitzer *, Adresse * _Spender *) Konstante gibt zurück (uint256 verbleibend)" Funktion.

Diese sechs durch den ERC20-Code definierten Funktionen stellen wichtige Funktionsprobleme dar, darunter, wie diese Token zwischen verschiedenen Konten übertragen werden und wie Benutzer Daten abrufen können, die einem bestimmten ERC20-Token zugeordnet sind. Diese Funktionsgruppe wird vorgeschrieben, um sicherzustellen, dass auf Ethereum basierende Token in jedem Teil der Ethereum-Plattform ähnlich funktionieren. Daher unterstützen alle Krypto-Geldbörsen, die mit der Äthermünze kompatibel sind, auch Token, die auf dem ERC20-Standard basieren.

Kritischer Fehler:

ERC20 ist der erste Token-Standard von Ethereum. Wie so oft bei neuem Code enthält er einige Fehler oder logische Fehler. ERC20 bietet zwei Möglichkeiten zum Ausführen einer Token-Transaktion. Zunächst können Sie mit der Übertragungsfunktion Token an die Adresse einer anderen Person senden. Wenn Sie Token auf einen Smart-Vertrag einzahlen möchten, sollten Sie die Kombination “Genehmigen + Übertragen von” verwenden. Sie sollten diesen Vertrag autorisieren, Ihre Token über die Genehmigungsfunktion zurückzuziehen. Anschließend müssen Sie eine Vertragsfunktion aufrufen, die Ihre Einzahlung abwickelt, und Ihre Token über die Funktion transferFrom abheben.

Was ist, wenn Sie versehentlich Token für einen Vertrag mit der Überweisungsfunktion hinterlegen? Die Transaktion wird erfolgreich sein, aber diese Transaktion wird vom Empfängervertrag nicht anerkannt. Wenn Sie beispielsweise Token an einen dezentralen Austauschvertrag senden, erhält der Austauschvertrag Ihre Token, schreibt diese Token jedoch nicht Ihrem Umtausch-Token-Guthaben gut. Wenn der dezentrale Austauschvertrag keine Funktion zum Extrahieren von Notfalltoken implementiert, ist es außerdem auf keinen Fall möglich, Ihre Token zurückzugewinnen, was zu einem dauerhaften Verlust der Token führt. Aufgrund dieses Fehlers hat das Ethereum-Ökosystem bereits Millionen von Dollar verloren.

Warum verwenden wir immer noch den ERC20-Standard??

Reddit Benutzer u / Dexaran, Der Entwickler des ERC223-Standards ist einer der ersten Entwickler, der die Community über den oben genannten Fehler informiert hat. Wir haben ihn gefragt, warum ERC20 immer noch so weit verbreitet ist, auch wenn wir über diesen kritischen Fehler Bescheid wissen. Er gab folgende Gründe an:

  1. Wegen der kriminellen Verantwortungslosigkeit von Token-Entwicklern für ihre Taten.
  2. Weil die Ethereum Foundation den ERC20-Token-Standard immer noch fördert, auch wenn bekannt ist, dass er Fehler enthält. Die gleiche Situation wie zuvor bei TheDAO. Sie müssen sagen "Hör jetzt damit auf" aber sie werden nicht.
  3. Denn der Hauptgrund für die Token-Entwicklung liegt eher in der Mittelbeschaffung als in der Produkterstellung.
  4. Weil die Verwendung eines anderen Standards zu höheren Netzwerkeffekten führt. Dies ist nicht das, was wir wirklich brauchen, da das Ethereum-Netzwerk bereits Skalierbarkeitsprobleme aufweist.

ERC223 Standard

Das ERC223 Standard wurde von u / Dexaran vorgeschlagen, der bei der Erstellung dieses Artikels mitgewirkt hat. ERC223 ist ein Token-Standard, mit dem sich Token-Übertragungen genau wie Ether-Transaktionen verhalten können. ERC223 verwendet die Ereignisbehandlung (betrachtet eine Transaktion als Ereignis), um zu verhindern, dass Token bei nicht behandelten Transaktionen verloren gehen. Dieser verbesserte Standard behebt den kritischen ERC20-Fehler, indem die Übertragungsfunktion einen Fehler bei ungültigen Übertragungen auslöst und die Transaktion abbricht, sodass kein Geld verloren geht. Kurz gesagt, ERC223 konzentriert sich auf Sicherheit.

Ergänzungen und Probleme

ERC223 fügt der Übertragungsfunktion einen zusätzlichen Datenparameter hinzu, um komplexere Vorgänge als nur eine Tokenübertragung zu ermöglichen.

Dexarans Hauptanliegen ist, dass zu viele Menschen ihre Token verlieren können, indem sie sie mit der Übertragungsfunktion an Verträge senden, nicht mit den zuvor beschriebenen Methoden genehmigen und übertragen von. Seine Lösung besteht darin, die Übertragungsmethode zu modifizieren, um zu überprüfen, ob die Empfangsadresse ein Vertrag ist (d. H. Daten enthält) oder nicht. Wenn es sich um einen Vertrag handelt, wird davon ausgegangen, dass eine tokenFallback-Funktion vorhanden ist, um ihn zurückzurufen. Die Hauptschwäche besteht darin, dass, wenn das tokenFallback nicht vorhanden ist, die Fallback-Funktion des empfangenden Vertrags aufgerufen wird und die gesendeten Token möglicherweise immer noch verloren gehen.

ERC777 Standard

ERC777 ist ein neuer fungibler Token-Standard, der auf ERC820 (Contract Pseudo-Introspection Registry) basiert und versucht, die Probleme von ERC20 zu lösen, z. B. das Fehlen von Mechanismen zur Transaktionsabwicklung, die zum Verlust von Millionen Dollar aus dem Ethereum-Ökosystem führten. Kurz gesagt, ERC777 konzentriert sich auf Annahme durch das Anbieten eines breite Palette von Transaktionsabwicklungsmechanismen.

Leistungen

Der Hauptvorteil von ERC777 besteht darin, dass eine neue Methode zur Erkennung der Vertragsschnittstelle verwendet wird. Dieser Standard geht davon aus, dass es im Netzwerk von Ethereum ein zentrales Vertragsregister gibt (dies ist in ERC820 definiert). Jeder kann diese Registrierung aufrufen, um zu erfahren, ob eine bestimmte Adresse (es spielt keine Rolle, ob diese Adresse ein Vertrag ist oder nicht) einen bestimmten Satz von Funktionen unterstützt, d. H. “Schnittstelle”.

Eines der Hauptprobleme von Ethereum ist die Unfähigkeit zu wissen, welche Funktionen der Vertrag implementiert. ERC820 soll dies lösen. ERC777 nutzt diesen Ansatz, was definitiv eine gute Idee ist.

Auf der anderen Seite können Sie ein Token erstellen, das die Standardfunktionen von ERC20 zusammen mit den neuen ERC777-Funktionen ohne Überschreibungen implementiert (und optional den kritischen Fehler von ERC20 erbt). Dies kann einen guten Netzwerkeffekt für diesen neuen Token-Standard und eine schnellere Einführung garantieren. Wie die Praxis zeigt, besteht das Hauptziel von Token-Entwicklern darin, Geld zu sammeln, das davon ausgeht, dass sie ihre Token zum Austausch bringen müssen. Für den Austausch ist es einfacher, ein Token zu unterstützen, das ältere ERC20-Funktionen implementiert (es spielt keine Rolle, ob diese Funktionen Fehler enthalten oder nicht), ohne nach neueren Funktionen neuer Token-Standards zu suchen. Je einfacher es für den Austausch ist, Token auf einem neuen Standard zu unterstützen, desto mehr Entwickler werden ihn verwenden. Dies fördert die Einführung von ERC777, während ERC223 diese Eigenschaft nicht besitzt.

Was ist unterschiedlich?

Dieser Token-Standard definiert einen völlig neuen Satz von Funktionen, d. H. “Sende” -Funktionen anstelle von “Übertragungs” -Funktionen. `authoriseOperator` statt` genehmigen`. “tokensReceived” -Handlerfunktion anstelle der “tokenFallback” -Handlerfunktion.

Ein solcher Ansatz kann garantieren, dass die Funktionen dieses Standards nicht mit Funktionen eines anderen Token-Standards gekreuzt und überschrieben werden. Daher ist es möglich, ein Token zu erstellen, das gleichzeitig mit den Standards ERC777 und ERC820 kompatibel ist.

Endlich standardisiert ERC777 Minze und Brennen Funktionalität von Token.

Fehlerquellen und Sicherheitsbedenken

ERC777 implementiert die Funktion “authoriseOperator”, mit der jemand Token in Ihrem Namen verwalten kann. Dexaran erklärte uns, dass er der Meinung ist, dass diese Methode veraltet ist und nicht angewendet werden sollte. Darüber hinaus beeinträchtigt die Autorisierung einer Person zur Verwaltung von Token in Ihrem Namen die Bandbreite des Netzwerks und erfordert mehr Gas. `authoriseOperator` repräsentiert bereits eine Transaktion, und eine andere Transaktion ist erforderlich, um die auszuführen "autorisierte Rücknahme". Daher sind zwei Transaktionen erforderlich, um eine Übertragung durchzuführen, die mit nur einer Transaktion durchgeführt werden kann.

Als Nächstes enthält der ERC777-Standard ein optionales Flag, um zu verhindern, dass Token hängen bleiben, indem einige Überprüfungen der ITokenRecipient-Schnittstelle durchgeführt werden und um zu überprüfen, ob die Adresse auf der Whitelist steht. Da sich dieser Standard auf die Sicherheit eines Netzwerks konzentriert, das Token im Wert von Millionen von Dollar verarbeitet, ist es nicht gut, diese Überprüfungen optional zu machen.

Andere Standards

Es gibt viele andere Standards wie ERC827 Dies kombiniert einige Vorteile von ERC223 mit älteren ERC20-Funktionen. Das ERC664 Standard konzentriert sich auf die Modularität des Token-Standards. Dieser Standard ermöglicht das Upgrade von Token-Verträgen, hat jedoch den kritischen ERC20-Fehler geerbt. Andere Standards umfassen ERC721, ERC677 und ERC820, sind jedoch weniger bekannt.

Kompatibilität zwischen Standards

Wir haben Dexaran gefragt, welche Standards abwärtskompatibel sind. Er sagte uns, wir sollten zuerst verstehen, wofür “Abwärtskompatibilität” steht: “Abwärtskompatibilität ist eine Eigenschaft eines Systems, Produkts oder einer Technologie, die Interoperabilität mit einem älteren Legacy-System oder mit Eingaben ermöglicht, die für ein solches System entwickelt wurden.”

ERC20 & ERC223: ERC223-Token sind mit ERC20 kompatibel. Alles, was für die ordnungsgemäße Verwendung mit ERC20 ausgelegt ist (wie Brieftaschen), kann auch mit ERC223 verwendet werden. Die einzige Ausnahme bilden Verträge, die auf der Genehmigung + Übertragung von Token-Einzahlungsmustern beruhen. Es ist jedoch möglich, genehmigte + transferFrom-Funktionen mit ERC223-Token zu implementieren, auch wenn diese derzeit nicht im Standard enthalten sind. Brieftaschen und Dienste von Drittanbietern, bei denen es sich nicht um Smart-Contracts handelt, unterstützen ERC223 automatisch, da die eingegebenen Anrufdaten des ERC20-Tokens für ERC223 gültig sind.

ERC20 & ERC777: Die folgende Erklärung finden Sie im Abschnitt “Abwärtskompatibilität” des ERC777-Vorschlags: “Diese EIP führt keine Abwärtskompatibilitäten ein und ist mit dem älteren ERC-20-Token-Standard kompatibel.”

Dexaran sagte uns jedoch genau das Gegenteil und gab uns dieses Beispiel: „Brieftaschen und Dienste wie MetaMask, Mist und MyEtherWallet arbeiten mit ERC20-Token. Die Eingabe, die für das ERC20-Token vorgesehen ist, ist ein Vertragsaufruf, der codierte Parameter und eine Funktionssignatur enthält. Funktionsaufrufe in der virtuellen Ethereum-Maschine werden durch die ersten vier Datenbytes angegeben, die mit einer Transaktion gesendet werden. Diese 4-Byte-Signaturen sind als die ersten vier Bytes des Hash der kanonischen Darstellung der Funktionssignatur definiert. Dies bedeutet, dass die Funktionen “Übertragung (Adresse, uint256)” und “Senden (Adresse, uint256)” unterschiedliche Signaturen haben. Infolgedessen ist die für das ERC20-Token vorgesehene Eingabe für das ERC777-Token nicht gültig. “ Da wir unsere Definition der Abwärtskompatibilität verwenden, ist ERC777 nicht mit dem ERC20-Token-Standard kompatibel.

Wann welcher Standard zu verwenden ist

ERC20: Der Reddit-Benutzer u / Dexaran gab uns diesen sarkastischen Rat: “Wenn Sie möchten, dass Ihre Investoren aufgrund von Fehlern Geld verlieren.”

ERC223: Dieser Token-Standard kann neben ERC777 auch verwendet werden. Der ERC777 verfügt über einige elegante Funktionen, die dem ERC223 fehlen, aber die Logik des ERC223 ist im Vergleich zum ERC777 unkompliziert, was garantieren kann, dass er viel enthält weniger fehleranfälliger Code. Darüber hinaus ist ERC223 nicht auf einen zentralen Dienst angewiesen, was bedeutet, dass Ihr ERC223-Token nur von Ihrer eigenen Implementierung abhängt. Wie bereits erwähnt, zielt ERC223 auf Sicherheitsverbesserungen ab, dies führte jedoch dazu, dass ERC223-Token nicht den ERC20-Standards entsprachen.

ERC777: Dieser Token-Standard ist bereits verwendbar. Auf der anderen Seite hat ERC777 einige Sicherheitsbedenken, wie oben erwähnt. Sie stützen sich auch auf das zentrale Vertragsregister, was ebenfalls ein Sicherheitsrisiko darstellt. Eine zentrale Registrierung kann Entwicklern das Leben erleichtern, fungiert aber auch als zentraler Fehlerpunkt, genau wie bei Parity Multisig. Alle Parity Multisigs stützten sich auf eine zentrale Codebibliothek. Es kam vor, dass es einen Fehler in der Bibliothek gab und dieser ausgenutzt wurde. Infolgedessen stürzten alle Parity Multisigs ab. Darüber hinaus definiert ERC777 einen neuen Satz von Funktionen. Dies ist ein Versuch, Token-Entwicklern zu ermöglichen, ihre Token gleichzeitig mit den Standards ERC20 und ERC777 kompatibel zu machen, um sie zu übernehmen. Dies bedeutet, dass ein Entwickler einen Fehler von ERC20 in ERC777 erben kann, es einem Entwickler jedoch ermöglicht, mehr Transaktionsbehandlungsereignisse zu verwenden.

Im Allgemeinen: Alle Token haben einen ähnlichen Anwendungsfall – ICO. Ich würde sagen, dass ERC223 und ERC777 versuchen, ein Problem von ERC20 auf unterschiedliche Weise zu lösen. ERC223 nimmt bereits seine Nische ein Ethereum Classic anstelle des ERC20.

Dieser Artikel wurde mit Hilfe von Dexaran, dem ERC223-Entwickler, erstellt. Einige von Paul Edges Kommentaren zu den Token-Standards von Ethereum wurden ebenfalls verwendet.