Pular para o conteúdo principal
Change page

Padrão de token não fungível ERC-721

Introdução

O que é um token não fungível?

Um token não fungível (NFT) é usado para identificar algo ou alguém de forma única. Esse tipo de token é perfeito para ser usado em plataformas que oferecem itens colecionáveis, chaves de acesso, bilhetes de loteria, assentos numerados para shows e partidas esportivas, etc. Esse tipo especial de token tem possibilidades incríveis, por isso merece um padrão adequado, e o ERC-721 veio para resolver isso!

O que é o ERC-721?

O ERC-721 introduz um padrão para NFT, em outras palavras, esse tipo de token é único e pode ter um valor diferente de outro token do mesmo contrato inteligente, talvez devido à sua idade, raridade ou até mesmo algo como o seu visual. Espere, visual?

Sim! Todos os NFTs têm uma variável uint256 chamada tokenId, portanto, para qualquer contrato ERC-721, o par contract address, uint256 tokenId deve ser globalmente único. Dito isso, um aplicativo descentralizado (dapp) pode ter um "conversor" que usa o tokenId como entrada e gera uma imagem de algo legal, como zumbis, armas, habilidades ou gatinhos incríveis!

Pré-requisitos

Corpo

O ERC-721 (Ethereum Request for Comments 721), proposto por William Entriken, Dieter Shirley, Jacob Evans e Nastassia Sachs em janeiro de 2018, é um padrão de token não fungível que implementa uma API para tokens dentro de contratos inteligentes.

Ele fornece funcionalidades como transferir tokens de uma conta para outra, obter o saldo atual de tokens de uma conta, obter o proprietário de um token específico e também o fornecimento total do token disponível na rede. Além dessas, ele também tem algumas outras funcionalidades, como aprovar que uma quantidade de tokens de uma conta possa ser movida por uma conta de terceiros.

Se um contrato inteligente implementar os seguintes métodos e eventos, ele pode ser chamado de contrato de token não fungível ERC-721 e, uma vez implantado, será responsável por rastrear os tokens criados no Ethereum.

Do EIP-721 (abre em uma nova aba):

Métodos

Eventos

    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

Exemplos

Vamos ver como um padrão é tão importante para simplificar a inspeção de qualquer contrato de token ERC-721 no Ethereum. Precisamos apenas da Interface Binária de Aplicação (ABI) do contrato para criar uma interface para qualquer token ERC-721. Como você pode ver abaixo, usaremos uma ABI simplificada, para torná-lo um exemplo de baixo atrito.

Exemplo com Web3.py

Primeiro, certifique-se de ter instalado a biblioteca Python Web3.py (abre em uma nova aba):

pip install web3

O contrato do CryptoKitties tem alguns eventos interessantes além dos padrões.

Vamos verificar dois deles, Pregnant e Birth.

Leitura adicional

Tutoriais: Construa com tokens não fungíveis (ERC-721) no Ethereum