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. Im Dezember 2018 gab es neun letzte Ethereum-Anfragen für Kommentare. ERC-20, ERC-55, ERC-137, ERC-162, ERC-165, ERC-181, ERC-190, ERC-721 und ERC-1167.

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. Durch einen Ethereum Verbesserungsvorschlag (EIP), der am 24. Januar 2018 erstellt wurde.

Was hat der Token mit NFTs zu tuen?

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 verschiedene Kätzchen hat einen anderen Preis, und deshalb muss jeder Token einzigartig sein.

Die Erstellung von blockchainbasierten, nicht fungiblen Token ermöglicht unteranderm Folgendes:

  • physisches Eigentum (Häuser, Kunstwerke und Fahrzeuge)
  • Virtuelle Sammlerstücke (Kryptokitties, Sammlerkarten)
  • Vermögenswerte mit negativem Wert (Darlehen)

Um ein 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;
}