ERC-721: O Padrão Ethereum para Tokens Não Fungíveis

ERC-721: O Padrão Ethereum para Tokens Não Fungíveis

ERC-721 é um padrão para tokens não fungíveis (NFTs) na Ethereum. Um padrão é um conjunto publicado de regras. Não fungível significa que cada token é distinto dos demais. O ERC-721 especifica uma interface, que é a lista de funções e eventos que um contrato inteligente disponibiliza. Um contrato inteligente é um programa armazenado em uma blockchain. Para o ERC-721, um token é uma unidade emitida em uma blockchain existente por meio de um contrato inteligente.

O ERC-721 é publicado como uma Ethereum Improvement Proposal (EIP), que é um documento de design para a comunidade Ethereum. O número da proposta é 721, por isso o ERC-721 também é escrito como EIP-721. ERC é a categoria de propostas para padrões de nível de aplicação, ou seja, padrões que aplicações na Ethereum seguem, como os padrões de token.

O código do ERC-721 nomeia sua interface como ERC721. Um token ERC-721 é um token emitido por um contrato que segue o ERC-721.

Uma função é uma operação nomeada que um contrato disponibiliza e que um usuário pode chamar. Um evento é um aviso que um contrato registra na blockchain quando algo muda, para que programas possam acompanhar a mudança. Emitir um evento é registrá-lo.

Uma blockchain é o registro compartilhado de transações, mantido em ordem. Uma transação é uma solicitação que um usuário envia a uma blockchain, como um pedido para mover um token. Um endereço é um identificador em uma blockchain para um usuário ou para um contrato inteligente.

O Que o Padrão ERC-721 Especifica?

O padrão ERC-721 especifica uma interface: as funções que um contrato deve disponibilizar e os eventos que deve emitir. Programas podem então chamar contratos que seguem o ERC-721 da mesma forma.

O ERC-721 também exige a detecção de interface por meio do ERC-165, que é um padrão que permite a um contrato declarar quais interfaces ele suporta.

O ERC-721 descreve duas extensões opcionais. A extensão de metadados adiciona funções que retornam um nome e um símbolo para os tokens de um contrato, além de um link para cada ID de token, e uma extensão de enumeração adiciona funções que listam os tokens que um contrato rastreia.

O ERC-721 é um padrão de NFT, e foi escrito para a Ethereum. Outras blockchains e outros padrões podem funcionar de forma diferente do ERC-721.

Um contrato que segue o ERC-721 diferencia seus tokens pelo ID do token, um número que o contrato atribui a cada token. O endereço do contrato que rastreia os tokens, junto com um ID de token, identifica um único token, e o ERC-721 exige que um ID de token permaneça o mesmo enquanto o contrato existir.

ERC-721 vs ERC-20: Como os Dois Padrões Diferem?

O ERC-721 e o ERC-20 diferem no que um contrato rastreia, no que uma transferência nomeia e no que uma aprovação cobre. O ERC-20 é um padrão para tokens fungíveis, ou seja, tokens cujas unidades são intercambiáveis, de modo que uma unidade seja igual à outra. O ERC-721 é um padrão para tokens não fungíveis, que um contrato diferencia pelo ID do token, de modo que trocar dois deles não é uma troca de igual para igual.

  • Um contrato ERC-20 registra quantas unidades cada endereço possui, enquanto um contrato ERC-721 registra qual endereço controla cada ID de token.
  • Uma transferência ERC-20 nomeia uma quantidade de tokens, enquanto uma transferência ERC-721 nomeia um ID de token.
  • Uma aprovação ERC-20 cobre uma quantidade que outro endereço pode transferir, enquanto uma aprovação ERC-721 cobre um único ID de token ou, quando nomeia um operador, todos os tokens que um endereço controla no mesmo contrato. Um operador é um endereço que o endereço que controla os tokens autorizou a transferir todos eles.

Quais Funções e Eventos o ERC-721 Define?

Esta tabela lista, por nome, as funções e eventos que o ERC-721 define, junto com a função de detecção de interface do ERC-165, e descreve o que cada um faz.

Nome

Tipo

O que faz

balanceOf

function

Retorna quantos tokens um endereço controla.

ownerOf

function

Retorna o endereço que controla um ID de token.

transferFrom

function

Move um ID de token de um endereço para outro.

safeTransferFrom

function

Move um ID de token de um endereço para outro e também executa uma verificação do destinatário quando o endereço receptor é um contrato inteligente.

approve

function

Permite que um endereço nomeado transfira um ID de token.

getApproved

function

Retorna o endereço aprovado para transferir um ID de token.

setApprovalForAll

function

Permite que um endereço ative ou desative um operador para todos os seus tokens no mesmo contrato.

isApprovedForAll

function

Retorna se um endereço é operador de outro endereço.

supportsInterface

function, do ERC-165

Retorna se um contrato suporta uma determinada interface.

Transfer

event

Anuncia que o endereço que controla um token mudou.

Approval

event

Anuncia que o endereço aprovado para um ID de token foi alterado ou reafirmado.

ApprovalForAll

event

Anuncia que um operador foi ativado ou desativado.

Qual Função Verifica o Contrato Receptor?

A função safeTransferFrom executa uma verificação do destinatário depois de mover um token. Quando o endereço receptor é um contrato inteligente, o contrato ERC-721 chama uma função nele chamada onERC721Received, que é a função receptora. O contrato receptor disponibiliza essa função, e ela retorna uma resposta específica, definida pelo ERC-721, que sinaliza ao contrato ERC-721 que o contrato receptor aceita a transferência. Se o contrato receptor retornar qualquer outra coisa, a transação é cancelada, o que o ERC-721 chama de reversão (revert).

A função transferFrom não chama uma função receptora. O ERC-721 deixa a verificação de que o endereço receptor pode receber tokens a cargo de quem chama a função, ou seja, de quem envia a transação que a chama. Um token enviado a um contrato que não disponibiliza a função receptora pode ser perdido.

Como Funcionam as Aprovações e os Operadores?

Uma aprovação permite que outro endereço transfira um token. A função approve nomeia um endereço para um único ID de token, e getApproved retorna esse endereço. O ERC-721 determina que o endereço aprovado seja redefinido para nenhum quando o token é transferido.

Um operador é um endereço que foi autorizado, por meio de setApprovalForAll, a transferir todos os tokens que outro endereço controla no mesmo contrato. O ERC-721 exige que um contrato permita mais de um operador para cada endereço que controla tokens, e isApprovedForAll retorna se um endereço é operador de outro endereço.

Segundo o ERC-721, uma transferência pode ser solicitada pelo endereço que controla o token, por um operador desse endereço ou pelo endereço aprovado para aquele ID de token.

O Que a Extensão Opcional de Metadados Adiciona?

A extensão opcional de metadados do ERC-721 adiciona três funções a um contrato: name, symbol e tokenURI. Metadados são dados que descrevem os tokens, e essas três funções os retornam.

A função name retorna um nome para os tokens que um contrato rastreia, e symbol retorna um nome abreviado para eles.

A função tokenURI retorna uma URI para um ID de token. Uma URI, abreviação de identificador uniforme de recurso (uniform resource identifier), é um link. Um contrato que não inclui essa extensão não tem URI.

O ERC-721 determina que a URI retornada por tokenURI pode apontar para um arquivo JSON, que é um formato de texto para dados estruturados. O arquivo pode conter os campos nome, descrição e imagem.

O ERC-721 permite que um contrato altere a URI que retorna para um ID de token, de modo que o mesmo ID de token possa, posteriormente, levar a um arquivo diferente. O ERC-721 não especifica onde o arquivo apontado pela URI é armazenado.

O Que o ERC-721 Deixa a Cargo de Cada Contrato?

Em outubro de 2026, o ERC-721 não define o conteúdo de um token, quaisquer direitos ligados a ele, onde os arquivos de um token são armazenados, como os tokens são criados ou destruídos, nem o status legal de um token. O verbete do glossário Token não fungível (NFT) explica o que o registro de um token, ou seja, as informações que um contrato mantém sobre cada token, deixa de fora.

Contratos que seguem o ERC-721 ainda podem diferir em comportamento. O ERC-721 lista os casos em que uma transferência deve falhar, e permite que um contrato cancele uma transferência em outros casos, por exemplo, enquanto as transferências estão pausadas. Um contrato pode, portanto, recusar uma transferência por motivos que o ERC-721 não lista.

5 de janeiro de 2026

Notícias da GoMining

Talvez você se interesse por: