Was ist der ERC-721-Tokenstandard und wie funktioniert er innerhalb der Blockchain?

Was ist der ERC-721-Tokenstandard?
ERC-721 ist ein Ethereum-Standard für NFTs: einzigartige Tokens, die du nicht eins zu eins tauschen kannst, als wären sie alle gleich. Jede NFT hat eine eigene Nummer, die TokenId. Dadurch kann ein Contract genau nachverfolgen, welche Adresse welche NFT besitzt.
Du kannst dir das mit nummerierten Eintrittskarten vorstellen. Zwei Karten können beide Zugang zum selben Event geben, aber Karte Nummer 14 ist technisch nicht dieselbe Karte wie Nummer 15. Bei ERC-721 funktioniert das genauso: Jeder Token ist separat registriert.
Ein ERC-721-Token wird durch zwei Dinge gemeinsam identifiziert: die Adresse des Smart Contracts und die TokenId. Diese Kombination verweist auf einen ganz bestimmten Token auf einer Ethereum-Chain.
Der Standard gibt Smart Contracts einen gemeinsamen Satz an Regeln. Dadurch können eine Krypto Wallet, ein Marktplatz oder eine andere App erkennen, wie sie eine kompatible NFT anzeigen, abrufen und versenden soll. Auch ERC-165 gehört dazu. Das ist eine Methode, mit der Software prüfen kann, welchen Standard ein Contract unterstützt.
Wichtig zu wissen: Eine eindeutige TokenId bedeutet nur, dass der Token innerhalb dieses Contracts einzigartig ist. Sie beweist nicht automatisch, dass das verknüpfte Bild, das Kunstwerk oder ein physisches Objekt ebenfalls wirklich einzigartig oder authentisch ist.
Wichtigste Erkenntnisse
- ERC-721 ist ein Ethereum-Standard für einzigartige, nicht austauschbare Tokens.
- Jede NFT hat innerhalb eines Contracts eine eigene TokenId.
- Die Contract-Adresse und die TokenId zusammen identifizieren einen ganz bestimmten Token.
- Der Standard hilft Wallets und Apps dabei, NFTs auf dieselbe Weise zu erkennen und zu verarbeiten.
- Eine eindeutige TokenId beweist nicht automatisch, dass das verknüpfte Werk oder Objekt authentisch ist.
Wie funktioniert der ERC-721-Tokenstandard?
Ein ERC-721-Smart-Contract hält für jede TokenId fest, welche Blockchain-Adresse der aktuelle Eigentümer ist. Mit ownerOf(tokenId) kannst du diesen Eigentümer abfragen. Mit balanceOf(adresse) siehst du, wie viele NFTs eine Adresse insgesamt besitzt.
Wenn jemand eine NFT versendet, ändert der Contract den registrierten Eigentümer. Für so eine Übertragung gibt es unter anderem transferFrom und safeTransferFrom.
Die zweite Option ist meist besonders wichtig, wenn du eine NFT an einen anderen Smart Contract sendest. safeTransferFrom prüft dann, ob der empfangende Contract ERC-721-Tokens annehmen kann. Wenn nicht, wird die Transaktion zurückgesetzt. So verhinderst du, dass eine NFT versehentlich in einem Contract hängen bleibt, der nichts damit anfangen kann.
Ein Eigentümer kann auch einer anderen Adresse eine Erlaubnis geben:
- Mit
approvedarf diese Adresse eine bestimmte TokenId verschieben. - Mit
setApprovalForAllerhält ein Operator die Erlaubnis, alle ERC-721-Tokens dieses Eigentümers zu verschieben.
Diese letzte Erlaubnis ist also ziemlich weitreichend. Gib so eine Vollmacht nur einem Contract, dem du vertraust. Eine Erlaubnis für eine einzelne NFT verfällt, sobald diese NFT übertragen wird.
Der Contract speichert Übertragungen und Erlaubnisse auch in Events: Meldungen im öffentlichen Blockchain-Log. Apps können damit verfolgen, wann eine NFT den Eigentümer wechselt oder wann ein Operator eine Erlaubnis erhält.
ERC-721 legt nicht fest, wie Minting oder Burning funktionieren muss. Minting ist das Erstellen und Ausgeben eines neuen Tokens, während Burning einen Token dauerhaft aus dem Umlauf nimmt. Der Ersteller des Contracts entscheidet selbst, wer minten darf, wie viele Tokens es geben kann und ob Transfers zum Beispiel vorübergehend pausiert werden können oder Gebühren haben.
Wofür werden ERC-721-Tokens verwendet?
ERC-721-Tokens werden für Dinge verwendet, die du einzeln verfolgen willst, weil jeder Token eigene Eigenschaften oder eine eigene Funktion haben kann. Denk an digitale Kunst, Sammlerstücke, Game-Items, Eventtickets, Zertifikate, Zugangstokens und Online-Identität.
Sie können auch verwendet werden, um bestimmte physische Assets mit einem Token zu verknüpfen, zum Beispiel ein Haus. Aber dabei gibt es einen wichtigen Unterschied: ERC-721 registriert vor allem, wer den Token auf der Blockchain verwaltet. Ob dieser Token außerhalb der Blockchain auch Anspruch auf ein Ticket, ein Objekt oder einen anderen Anspruch gibt, hängt vom Ersteller, den Metadaten, den Vertragsbedingungen und eventuellen separaten Vereinbarungen ab.
Da viele Apps dieselbe ERC-721-Schnittstelle verstehen, können die meisten Anwendungen einen Token grundsätzlich erkennen und übertragen. Das macht den Standard innerhalb von Krypto praktisch, ohne dass jede App für jede NFT-Collection neu herausfinden muss, wie der Contract funktioniert. Deshalb ist es auch für Menschen relativ einfach, selbst ein NFT-Projekt zu starten.
Welche Rolle spielen ERC-721-Tokens bei NFTs?
ERC-721 ist eine weit verbreitete technische Grundlage für NFTs auf Ethereum. Der Standard regelt den Kern: eine einzelne NFT identifizieren, den Eigentümer registrieren, die NFT versenden und Erlaubnisse verwalten.
NFT bedeutet einfach non-fungible token: ein Token, der nicht als gleichwertige Einheit austauschbar ist. ERC-721 ist nicht dasselbe wie NFT. Es ist ein bestimmter Standard, mit dem du NFTs bauen kannst. Eine NFT kann also auch einen anderen technischen Standard verwenden.
Ein ERC-721-Contract kann außerdem zusätzliche Regeln enthalten. Zum Beispiel Regeln für Minting, den Zugriff auf bestimmte Funktionen, Metadaten oder Einschränkungen bei Transfers.
Royalties sind nicht standardmäßig in ERC-721 enthalten. ERC-2981 ist ein separater Standard, mit dem sich Royalty-Informationen abrufen lassen. Das bedeutet aber noch nicht, dass ein Marktplatz diese Royalty auch automatisch zahlt: Die Zahlung hängt vom Marktplatz oder einer anderen beteiligten Partei ab.
Wie werden digitale Eigentumsrechte festgehalten?
Ein ERC-721-Contract legt fest, welche Adresse Eigentümer einer bestimmten TokenId ist. Jeder kann diese technische Eigentumsregistrierung über ownerOf und über die Transfer-Events des Contracts prüfen. Schließlich ist alles auf der Blockchain sichtbar, der Eigentümer einer NFT ist also fast immer überprüfbar oder einsehbar. Auch die Smart Contracts, die für die NFT-Collection verwendet werden, sind in den meisten Fällen einsehbar.
Angenommen, TokenId 42 geht von Adresse A an Adresse B. Dann wird Adresse B der registrierte Eigentümer von TokenId 42. Die Contract-Adresse und TokenId 42 bleiben dabei dieselbe technische Identifikation dieses Tokens.
Die NFT kann außerdem Metadaten haben: zusätzliche Informationen über den Token. Über tokenURI kann der Contract zum Beispiel auf eine JSON-Datei mit einem Namen, einer Beschreibung und einem Link zu einem Bild verweisen.
Dieses On-Chain-Eigentum ist nicht automatisch dasselbe wie Urheberrecht, geistiges Eigentum oder rechtliches Eigentum am Bild, Werk oder physischen Objekt. Der Besitz der NFT bedeutet also nicht automatisch, dass du alle Rechte an den verknüpften Inhalten erhältst. Dafür ist in der Regel eine separate gültige Vereinbarung nötig.
Was ist der Unterschied zwischen ERC-721 und ERC-20?
ERC-20 ist für fungible Tokens gemacht, während ERC-721 für non-fungible Tokens gemacht ist. Fungibel bedeutet, dass jede Einheit untereinander gleich ist. Ein ERC-20-Token desselben Typs ist also gleich einem anderen ERC-20-Token dieses Typs.
Bei ERC-20 sendest du eine Menge, zum Beispiel 10 Tokens. Bei ERC-721 sendest du eine bestimmte TokenId, zum Beispiel Token Nummer 42.
Die wichtigsten Unterschiede im Überblick:
- Übertragung: ERC-20 dreht sich um eine Anzahl von Tokens. ERC-721 dreht sich um eine einzigartige TokenId.
- Eigentum: Bei ERC-20 hat eine Adresse einen Kontostand. Bei ERC-721 hält der Contract pro TokenId fest, wem sie gehört.
- Erlaubnis: ERC-20 nutzt eine Allowance für einen Ausgabenbetrag. ERC-721 kann eine Erlaubnis für eine einzelne NFT oder für alle NFTs eines Eigentümers vergeben.
- Teilbarkeit: ERC-20-Tokens können in Mengen versendet werden. Ein ERC-721-Token ist technisch eine einzelne TokenId und hat keine standardmäßige
decimals-Funktion. - Gesamtmenge: ERC-20 hat
totalSupplyals Standardfunktion. Bei ERC-721 isttotalSupplynur verfügbar, wenn der Contract die optionale ERC721Enumerable-Erweiterung verwendet.
Auch Metadaten sind bei ERC-721 optional. Ein Contract muss also nicht zwingend einen Namen, ein Symbol oder tokenURI anbieten, auch wenn die meisten NFT-Contracts das tun.
Wie erstellst du einen ERC-721-Token?
Du erstellst einen ERC-721-Token, indem du einen Smart Contract baust und darin Minting-Logik einfügst. ERC-721 selbst liefert keine fertige öffentliche Mint-Funktion, also entscheidet der Entwickler selbst, wie neue Tokens entstehen.
In der Praxis läuft das meist so ab:
-
Einen ERC-721-Contract bauen oder verwenden Ein Entwickler schreibt einen Smart Contract in Solidity, der ERC-721 und ERC-165 unterstützt. Oft wird eine getestete Basisimplementierung wie OpenZeppelin ERC721 erweitert, statt alles von Grund auf neu zu schreiben.
-
Die Regeln für Minting festlegen Der Contract muss bestimmen, wer minten darf, wie TokenIds ausgegeben werden, ob es eine maximale Anzahl von Tokens gibt und ob Minting Geld kostet. Auch Zugriffskontrolle gehört hier dazu: Nicht jeder muss automatisch neue NFTs erstellen können.
-
Eine neue TokenId zuweisen Für jede neue NFT muss der Contract eine TokenId verwenden, die noch nicht existiert. Diese TokenId wird einer gültigen Adresse zugewiesen, also nicht einer leeren Adresse.
-
Wenn möglich sicheres Minting verwenden
_safeMintprüft bei einem Empfänger, der selbst ein Smart Contract ist, ob dieser Contract ERC-721-Tokens annehmen kann. Das verringert die Chance, dass eine neue NFT beim Empfänger hängen bleibt. -
Deployen und Transaktionen ausführen Nach dem Deployment auf einer EVM-Chain werden Minting, Transfers und Erlaubnisse als Blockchain-Transaktionen ausgeführt. Die Kosten und Risiken hängen von der gewählten Chain und vor allem vom Code im Contract ab.
Ein Contract zu kopieren reicht für eine sichere Nutzung nicht aus. Zusätzliche Logik für Zahlungen, Whitelists, Upgrades oder Royalties kann neue Schwachstellen hinzufügen. Tests und, wo passend, ein unabhängiges Security-Audit sind deshalb wichtig.
Welche Bestandteile enthält ein ERC-721-Smart-Contract?
Ein ERC-721-Smart-Contract muss einen festen Kern an Funktionen und Events anbieten. Diese feste Schnittstelle sorgt dafür, dass andere Apps wissen, wie sie mit den NFTs umgehen sollen.
Zu den verpflichtenden Bestandteilen gehören unter anderem:
balanceOf: fragt ab, wie viele NFTs eine Adresse besitzt.ownerOf: fragt ab, welche Adresse Eigentümer einer bestimmten TokenId ist.transferFromundsafeTransferFrom: senden eine NFT an eine andere Adresse.approveundgetApproved: regeln und prüfen die Erlaubnis für eine bestimmte NFT.setApprovalForAllundisApprovedForAll: regeln und prüfen die Erlaubnis für alle NFTs eines Eigentümers.Transfer,ApprovalundApprovalForAll: Events, mit denen Apps Übertragungen und Vollmachten verfolgen können.supportsInterface: die ERC-165-Funktion, mit der Apps prüfen können, dass der Contract ERC-721 unterstützt.
Es gibt auch optionale Erweiterungen. ERC721Metadata fügt name, symbol und tokenURI hinzu. ERC721Enumerable fügt unter anderem totalSupply hinzu und Funktionen, um TokenIds aufzulisten.
Außerdem hat ein praktischer Contract oft eigene Funktionen, etwa eine Mint-Funktion, Rollen für Administratoren, Verkaufsregeln, eine Base URI oder eine Burn-Funktion. Wie der Contract intern Daten speichert, zum Beispiel Eigentümer und Erlaubnisse, schreibt ERC-721 nicht vor. Der Standard legt fest, was der Contract nach außen können muss.
Wie werden Metadaten mit einem ERC-721-Token verknüpft?
Metadaten werden meist über tokenURI(tokenId) verknüpft, eine optionale Funktion, die einen Verweis auf Informationen über eine bestimmte NFT zurückgibt. Diese URI kann zum Beispiel auf eine JSON-Datei zeigen.
In so einer JSON-Datei können Felder wie name, description und image stehen. Ein NFT-Marktplatz oder eine Krypto Wallet kann diese Daten nutzen, um den Namen, die Beschreibung und das Bild des Tokens anzuzeigen. Da jede NFT eigene Statistiken hat, kannst du sie als eine Art Sammelbild sehen. Manche Sammelbilder sind einzigartig und selten, während andere häufig vorkommen. So wird auch der Wert von NFTs im Allgemeinen bestimmt.
Ein Entwickler kann für jede NFT eine eigene URI speichern. Eine andere Möglichkeit ist, eine Base-URI zu verwenden und pro Token eine eigene Nummer oder einen eigenen Teil anzuhängen. OpenZeppelin bietet dafür unter anderem ERC721URIStorage mit _setTokenURI.
Wichtig zu beachten: ERC-721 schreibt nicht vor, dass Metadaten dauerhaft oder unveränderlich sein müssen. Eine URI ist ein Textverweis auf Daten außerhalb der Blockchain. Wer die URI ändern kann und wo der Inhalt liegt, unterscheidet sich je nach Contract und Speicheraufbau. Ein Bild oder eine JSON-Datei kann sich also möglicherweise ändern oder nicht mehr verfügbar sein.
Was sind die Vor- und Nachteile von ERC-721?
ERC-721 ist nützlich, weil es eine klare, gemeinsame Methode bietet, um einzigartige Tokens auf Ethereum zu erstellen. Aber der Standard löst nicht jedes Problem rund um NFTs.
Vorteile:
- Interoperabilität: Wallets, Broker, Auktionen und andere Apps können ERC-721-NFTs auf vorhersehbare Weise erkennen und verarbeiten.
- Nachvollziehbarkeit: Pro TokenId ist sichtbar, welche Adresse Eigentümer ist und welche Übertragungen es gegeben hat.
- Flexible Erlaubnisse: Du kannst einer Adresse die Erlaubnis für eine einzelne NFT geben oder einem Operator für alle deine NFTs.
- Erweiterbar: Metadaten und Enumerierung sind optional. Ein Contract kann also klein bleiben oder zusätzliche Funktionen bekommen.
Nachteile und Risiken:
- Viel Macht mit
setApprovalForAll: Ein genehmigter Operator darf alle ERC-721-Tokens deiner Adresse verschieben. Prüfe solche Vollmachten regelmäßig und gib sie nur vertrauenswürdigen Contracts. - Risiko bei
transferFrom: Eine NFT kann hängen bleiben, wenn der empfangende Contract die NFT nicht verarbeiten kann.safeTransferFromprüft das besser, aber der zusätzliche externe Aufruf kann ein Reentrancy-Risiko mit sich bringen. Dabei versucht ein anderer Contract während der Ausführung, erneut eine Funktion aufzurufen. - Höhere Kosten bei der Enumerierung: ERC721Enumerable wird oft nicht verwendet, weil das Auflisten von Tokens on-chain viel zusätzliches Gas kosten kann.
- Keine Garantie außerhalb der Blockchain: ERC-721 beweist nicht automatisch Urheberrecht, die Authentizität von Ansprüchen, dauerhafte Metadaten oder eine verpflichtende Royalty-Zahlung.
Kurz gesagt: ERC-721 liefert eine technische Grundlage für Eigentum und Übertragung einer NFT. Ob eine Collection auch sicher ist und welche Rechte genau damit verbunden sind, hängt vom Contract-Code, den Verwaltungsrechten, den Metadaten und den Vereinbarungen außerhalb der Blockchain ab.
Fazit
ERC-721 ist der Ethereum-Standard, der NFTs eine eigene Identität gibt. Ein Smart Contract registriert pro TokenId, wem der Eigentümer ist, wie eine NFT übertragen wird und wer dafür die Erlaubnis hat.
Das macht ERC-721 unter anderem für digitale Kunst, Game-Items, Tickets und Zugangstokens nützlich. Gleichzeitig ist eine NFT nicht automatisch ein Beweis für Urheberrecht, Authentizität oder rechtliches Eigentum an dem, was damit verknüpft ist. Schau deshalb nicht nur auf die NFT selbst, sondern auch auf die Vertragsregeln, die Metadaten und die Erlaubnisse, die du einem Contract gibst.