ERC-721: Der Ethereum-Standard für nicht-fungible Token

ERC-721: Der Ethereum-Standard für nicht-fungible Token

ERC-721 ist ein Standard für nicht-fungible Token (NFTs) auf Ethereum. Ein Standard ist ein veröffentlichtes Regelwerk. Nicht-fungibel bedeutet, dass sich jeder Token von den anderen unterscheidet. ERC-721 legt eine Schnittstelle fest, also die Liste der Funktionen und Events, die ein Smart Contract bereitstellt. Ein Smart Contract ist ein Programm, das auf einer Blockchain gespeichert ist. Bei ERC-721 ist ein Token eine Einheit, die über einen Smart Contract auf einer bestehenden Blockchain ausgegeben wird.

ERC-721 ist als Ethereum Improvement Proposal (EIP) veröffentlicht, ein Entwurfsdokument für die Ethereum-Community. Der Vorschlag trägt die Nummer 721, daher wird ERC-721 auch als EIP-721 bezeichnet. ERC ist die Kategorie von Vorschlägen für Standards auf Anwendungsebene, also Standards, an die sich Anwendungen auf Ethereum halten, wie zum Beispiel Token-Standards.

Der Code in ERC-721 nennt seine Schnittstelle ERC721. Ein ERC-721-Token ist ein Token, der von einem Contract ausgegeben wird, der sich an ERC-721 hält.

Eine Funktion ist ein benannter Vorgang, den ein Contract bereitstellt und den ein Nutzer aufrufen kann. Ein Event ist eine Meldung, die ein Contract auf der Blockchain festhält, wenn sich etwas ändert, damit Software die Änderung nachverfolgen kann. Ein Event auszulösen bedeutet, es festzuhalten.

Eine Blockchain ist das gemeinsam geführte, geordnete Verzeichnis von Transaktionen. Eine Transaktion ist eine Anfrage, die ein Nutzer an eine Blockchain sendet, zum Beispiel eine Anfrage, einen Token zu verschieben. Eine Adresse ist eine Kennung auf einer Blockchain für einen Nutzer oder für einen Smart Contract.

Was legt der ERC-721-Standard fest?

Der ERC-721-Standard legt eine Schnittstelle fest: die Funktionen, die ein Contract bereitstellen muss, und die Events, die er auslösen muss. Software kann dadurch Contracts, die sich an ERC-721 halten, auf dieselbe Weise aufrufen.

ERC-721 verlangt außerdem die Erkennung der Schnittstelle über ERC-165, einen Standard, mit dem ein Contract angeben kann, welche Schnittstellen er unterstützt.

ERC-721 beschreibt zwei optionale Erweiterungen. Die Metadaten-Erweiterung fügt Funktionen hinzu, die einen Namen und ein Symbol für die Token eines Contracts sowie einen Link für jede Token-ID zurückgeben, und eine Aufzählungs-Erweiterung fügt Funktionen hinzu, die die Token auflisten, die ein Contract verwaltet.

ERC-721 ist ein NFT-Standard und wurde für Ethereum geschrieben. Andere Blockchains und andere Standards können sich anders verhalten als ERC-721.

Ein Contract, der sich an ERC-721 hält, unterscheidet seine Token anhand der Token-ID, einer Nummer, die der Contract jedem Token zuweist. Die Adresse des Contracts, der die Token verwaltet, identifiziert zusammen mit einer Token-ID einen einzelnen Token, und ERC-721 verlangt, dass eine Token-ID gleich bleibt, solange der Contract besteht.

ERC-721 vs. ERC-20: Worin unterscheiden sich die beiden Standards?

ERC-721 und ERC-20 unterscheiden sich darin, was ein Contract verwaltet, was ein Transfer benennt und was eine Genehmigung (Approval) abdeckt. ERC-20 ist ein Standard für fungible Token, also Token, deren Einheiten austauschbar sind, sodass eine Einheit derselben wie eine andere entspricht. ERC-721 ist ein Standard für nicht-fungible Token, die ein Contract anhand der Token-ID unterscheidet, weshalb der Tausch zweier solcher Token kein Tausch von Gleichem gegen Gleiches ist.

  • Ein ERC-20-Contract erfasst, wie viele Einheiten jede Adresse hält, während ein ERC-721-Contract erfasst, welche Adresse welche Token-ID kontrolliert.
  • Ein ERC-20-Transfer benennt eine Token-Menge, während ein ERC-721-Transfer eine Token-ID benennt.
  • Eine ERC-20-Genehmigung deckt eine Menge ab, die eine andere Adresse übertragen darf, während eine ERC-721-Genehmigung entweder eine einzelne Token-ID abdeckt oder, wenn ein Operator benannt wird, alle Token, die eine Adresse im selben Contract kontrolliert. Ein Operator ist eine Adresse, der die Adresse, die die Token kontrolliert, erlaubt hat, alle ihre Token zu übertragen.

Welche Funktionen und Events definiert ERC-721?

Diese Tabelle listet namentlich die Funktionen und Events auf, die ERC-721 definiert, zusammen mit der Funktion zur Schnittstellenerkennung aus ERC-165, und beschreibt, was jede davon bewirkt.

Name

Art

Was sie bewirkt

balanceOf

Funktion

Gibt zurück, wie viele Token eine Adresse kontrolliert.

ownerOf

Funktion

Gibt die Adresse zurück, die eine Token-ID kontrolliert.

transferFrom

Funktion

Verschiebt eine Token-ID von einer Adresse zu einer anderen.

safeTransferFrom

Funktion

Verschiebt eine Token-ID von einer Adresse zu einer anderen und führt zusätzlich eine Empfängerprüfung durch, wenn die empfangende Adresse ein Smart Contract ist.

approve

Funktion

Erlaubt einer benannten Adresse, eine Token-ID zu übertragen.

getApproved

Funktion

Gibt die Adresse zurück, die für die Übertragung einer Token-ID genehmigt ist.

setApprovalForAll

Funktion

Erlaubt einer Adresse, einen Operator für alle ihre Token im selben Contract zu aktivieren oder zu deaktivieren.

isApprovedForAll

Funktion

Gibt zurück, ob eine Adresse Operator für eine andere Adresse ist.

supportsInterface

Funktion, aus ERC-165

Gibt zurück, ob ein Contract eine bestimmte Schnittstelle unterstützt.

Transfer

Event

Meldet, dass sich die Adresse, die einen Token kontrolliert, geändert hat.

Approval

Event

Meldet, dass die für eine Token-ID genehmigte Adresse geändert oder erneut bestätigt wurde.

ApprovalForAll

Event

Meldet, dass ein Operator aktiviert oder deaktiviert wurde.

Welche Funktion prüft den empfangenden Contract?

Die Funktion safeTransferFrom führt nach dem Verschieben eines Tokens eine Empfängerprüfung durch. Wenn die empfangende Adresse ein Smart Contract ist, ruft der ERC-721-Contract bei diesem eine Funktion namens onERC721Received auf, die Empfängerfunktion. Der empfangende Contract stellt diese Empfängerfunktion bereit, und die Funktion gibt eine bestimmte, von ERC-721 definierte Antwort zurück, die dem ERC-721-Contract signalisiert, dass der empfangende Contract die Übertragung akzeptiert. Gibt der empfangende Contract etwas anderes zurück, wird die Transaktion abgebrochen, was ERC-721 als Revert bezeichnet.

Die Funktion transferFrom ruft keine Empfängerfunktion auf. ERC-721 überlässt die Prüfung, ob die empfangende Adresse Token entgegennehmen kann, dem Aufrufer, also demjenigen, der die Transaktion sendet, die die Funktion aufruft. Ein Token, der an einen Contract gesendet wird, der die Empfängerfunktion nicht bereitstellt, kann verloren gehen.

Wie funktionieren Genehmigungen und Operatoren?

Eine Genehmigung erlaubt einer anderen Adresse, einen Token zu übertragen. Die Funktion approve benennt eine Adresse für eine Token-ID, und getApproved gibt diese Adresse zurück. ERC-721 legt fest, dass die genehmigte Adresse bei einer Übertragung des Tokens auf „keine“ zurückgesetzt wird.

Ein Operator ist eine Adresse, der über setApprovalForAll erlaubt wurde, alle Token zu übertragen, die eine andere Adresse im selben Contract kontrolliert. ERC-721 verlangt, dass ein Contract für jede Adresse, die Token kontrolliert, mehr als einen Operator zulässt, und isApprovedForAll gibt zurück, ob eine Adresse Operator für eine andere Adresse ist.

Nach ERC-721 kann eine Übertragung von der Adresse beantragt werden, die den Token kontrolliert, von einem Operator dieser Adresse oder von der Adresse, die für diese Token-ID genehmigt ist.

Was fügt die optionale Metadaten-Erweiterung hinzu?

Die optionale Metadaten-Erweiterung von ERC-721 fügt einem Contract drei Funktionen hinzu: name, symbol und tokenURI. Metadaten sind Daten, die Token beschreiben, und diese drei Funktionen geben sie zurück.

Die Funktion name gibt einen Namen für die Token zurück, die ein Contract verwaltet, und symbol gibt eine Kurzform dieses Namens zurück.

Die Funktion tokenURI gibt eine URI für eine Token-ID zurück. Eine URI, kurz für Uniform Resource Identifier, ist ein Link. Ein Contract, der die Erweiterung weglässt, hat keine URI.

ERC-721 legt fest, dass die von tokenURI zurückgegebene URI auf eine JSON-Datei verweisen kann, ein Textformat für strukturierte Daten. Die Datei kann Felder für Name, Beschreibung und Bild enthalten.

ERC-721 erlaubt es einem Contract, die URI zu ändern, die er für eine Token-ID zurückgibt, sodass dieselbe Token-ID später zu einer anderen Datei führen kann. ERC-721 macht keine Angaben dazu, wo die Datei gespeichert ist, auf die die URI verweist.

Was überlässt ERC-721 dem jeweiligen Contract?

Stand Oktober 2026 legt ERC-721 weder den Inhalt eines Tokens noch damit verbundene Rechte, den Speicherort der Dateien eines Tokens, die Art und Weise, wie Token erstellt oder zerstört werden, noch den rechtlichen Status eines Tokens fest. Der Glossareintrag Non-fungible Token (NFT) erklärt, was der Datensatz eines Tokens – also die Informationen, die ein Contract über jeden Token führt – auslässt.

Contracts, die sich an ERC-721 halten, können sich dennoch im Verhalten unterscheiden. ERC-721 listet die Fälle auf, in denen eine Übertragung fehlschlagen muss, und erlaubt einem Contract, eine Übertragung auch in anderen Fällen abzubrechen, zum Beispiel während Übertragungen pausiert sind. Ein Contract kann daher eine Übertragung aus Gründen ablehnen, die ERC-721 nicht auflistet.

5. Januar 2026

GoMining News

Das könnte Sie auch interessieren: