ERC-721 Token

ERC-721-Token sind ethereumbasierte nicht-fungible Token. Sie sind nicht austauschbar.

ERC-721 Token unterscheiden sich von ERC-20 Token in dem Sinne, dass ERC-721 Token nicht fungible sind. Dies bedeutet, dass jedes Token einzigartig und somit nicht austauschbar ist.

Was ist der ERC-721 Token?

ERC steht für Ethereum Request for Comments. Dies ist keine Technologie oder Plattform, sondern bietet den Entwicklern eine technische Anleitung für den Bau.

Entwickler können einen ERC gründen, indem sie einen Ethereum Improvement Proposal (EIP) einreichen.

ERC-721, The Non-Fungible Token Standard, wurde von William Entriken, Dieter Shirley, Jacob Evans und Nastassia Sachs aufgrund von ERC-20 Schnittstellenproblemen entwickelt. Das passierte durch einen Ethereum Verbesserungsvorschlag (EIP), der am 24. Januar 2018 erstellt wurde.

Was hat der Token mit NFTs zu tun?

Eine beliebte dezentrale Ethereum-Anwendung, Cryptokitties, nutzte ERC-721, um einzigartige digitale Sammlerstücke in Form von Kitties zu erstellen. Jedes einzelne Kätzchen war auf dem Marktplatz einen anderen Betrag wert, der von den Nutzern der Plattform vorgegeben wurde. Jedes Kätzchen hatte dabei einen anderen Preis, jeder Token daher einzigartig sein – Non Fungible Token betraten das Krypto-Parkett.

Um einen ERC-721-Token erstellen zu können, muss der Vertrag sowohl mit der ERC-721- als auch mit der ERC-165-Schnittstelle kompatibel sein.

Wie könnte der Code eines ERC-721 aussehen?

So könnte ein Vertrag für tokenisierte Gegenstände aussehen:

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>// contracts/GameItem.sol<br>// SPDX-License-Identifier: MIT<br>pragma solidity ^0.6.0;</p>
<!-- /wp:paragraph -->

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";

contract GameItem is ERC721 {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;

constructor() public ERC721("GameItem", "ITM") {}

function awardItem(address player, string memory tokenURI)
    public
    returns (uint256)
{
    _tokenIds.increment();

    uint256 newItemId = _tokenIds.current();
    _mint(player, newItemId);
    _setTokenURI(newItemId, tokenURI);

    return newItemId;
}

Häufige Fragen (FAQ)