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

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

O 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 restantes. 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 numa blockchain. No caso do ERC-721, um token é uma unidade emitida numa blockchain existente através de um contrato inteligente.

O ERC-721 é publicado como uma Ethereum Improvement Proposal (EIP), ou seja, um documento de design para a comunidade Ethereum. O número da proposta é 721, pelo que o ERC-721 também é designado EIP-721. ERC é a categoria de propostas para padrões ao nível das aplicações, isto é, padrões que as aplicações na Ethereum seguem, como os padrões de tokens.

O código do ERC-721 dá à sua interface o nome ERC721. Um token ERC-721 é um token emitido por um contrato que segue o ERC-721.

Uma função é uma operação com nome que um contrato disponibiliza e que um utilizador pode chamar. Um evento é um aviso que um contrato regista na blockchain quando algo se altera, para que o software possa acompanhar a alteração. Emitir um evento é registá-lo.

Uma blockchain é o registo partilhado de transações, mantido por ordem. Uma transação é um pedido que um utilizador envia a uma blockchain, como um pedido para mover um token. Um endereço é um identificador numa blockchain para um utilizador ou para um contrato inteligente.

O Que Especifica o Padrão ERC-721?

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

O ERC-721 exige ainda deteção de interface através da ERC-165, um padrão que permite a um contrato indicar quais as interfaces que suporta.

O ERC-721 descreve duas extensões opcionais. A extensão de metadados acrescenta funções que devolvem um nome e um símbolo para os tokens de um contrato, bem como uma ligação para cada ID de token, e a extensão de enumeração acrescenta funções que listam os tokens que um contrato controla.

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

Um contrato que siga o ERC-721 distingue os seus tokens pelo ID do token, um número que o contrato atribui a cada token. O endereço do contrato que controla os tokens, em conjunto com um ID de token, identifica um único token, e o ERC-721 exige que um ID de token se mantenha inalterado enquanto o contrato existir.

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

O ERC-721 e o ERC-20 diferem naquilo que um contrato regista, no que uma transferência indica e no que uma aprovação abrange. O ERC-20 é um padrão para tokens fungíveis, ou seja, tokens cujas unidades são intermutáveis, de modo que uma unidade é igual a outra. O ERC-721 é um padrão para tokens não fungíveis, que um contrato distingue pelo ID do token, pelo que trocar dois deles não é uma troca de iguais.

  • Um contrato ERC-20 regista quantas unidades cada endereço detém, enquanto um contrato ERC-721 regista qual o endereço que controla cada ID de token.
  • Uma transferência ERC-20 indica uma quantidade de tokens, enquanto uma transferência ERC-721 indica um ID de token.
  • Uma aprovação ERC-20 abrange uma quantidade que outro endereço pode transferir, enquanto uma aprovação ERC-721 abrange um único ID de token ou, quando designa um operador, todos os tokens que um endereço controla no mesmo contrato. Um operador é um endereço a quem o endereço que controla os tokens permitiu transferir todos eles.

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

Esta tabela lista, por nome, as funções e os eventos que o ERC-721 define, juntamente com a função de deteção de interface proveniente do ERC-165, e indica o que faz cada um.

Nome

Tipo

O que faz

balanceOf

função

Devolve quantos tokens um endereço controla.

ownerOf

função

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

transferFrom

função

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

safeTransferFrom

função

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

approve

função

Permite que um único endereço designado transfira um ID de token.

getApproved

função

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

setApprovalForAll

função

Permite a um endereço ativar ou desativar um operador para todos os seus tokens no mesmo contrato.

isApprovedForAll

função

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

supportsInterface

função, da ERC-165

Devolve se um contrato suporta uma dada interface.

Transfer

evento

Anuncia que o endereço que controla um token foi alterado.

Approval

evento

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

ApprovalForAll

evento

Anuncia que um operador foi ativado ou desativado.

Que Função Verifica o Contrato Recetor?

A função safeTransferFrom executa uma verificação do recetor depois de mover um token. Quando o endereço recetor é um contrato inteligente, o contrato ERC-721 chama uma função deste contrato designada onERC721Received, que é a função recetora. O contrato recetor disponibiliza a função recetora, e esta devolve uma resposta específica que o ERC-721 define e que sinaliza ao contrato ERC-721 que o contrato recetor aceita a transferência. Se o contrato recetor devolver qualquer outra coisa, a transação é cancelada, o que o ERC-721 designa por reversão (revert).

A função transferFrom não chama nenhuma função recetora. O ERC-721 deixa a verificação de que o endereço recetor pode receber tokens a cargo de quem chama a função, ou seja, de quem envia a transação que a invoca. Um token enviado para um contrato que não disponibilize a função recetora pode perder-se.

Como Funcionam as Aprovações e os Operadores?

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

Um operador é um endereço a quem foi permitido, através de setApprovalForAll, transferir todos os tokens que outro endereço controla no mesmo contrato. O ERC-721 exige que um contrato permita mais do que um operador para cada endereço que controla tokens, e isApprovedForAll devolve se um endereço é operador de outro endereço.

No 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 esse ID de token.

O Que Acrescenta a Extensão Opcional de Metadados?

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

A função name devolve um nome para os tokens que um contrato controla, e symbol devolve um nome abreviado para os mesmos.

A função tokenURI devolve um URI para um único ID de token. Um URI, abreviatura de identificador uniforme de recurso (uniform resource identifier), é uma ligação. Um contrato que omita esta extensão não tem URI.

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

O ERC-721 permite que um contrato altere o URI que devolve para um ID de token, pelo que o mesmo ID de token pode mais tarde conduzir a um ficheiro diferente. O ERC-721 não especifica onde é armazenado o ficheiro para o qual o URI aponta.

O Que Deixa o ERC-721 ao Critério de Cada Contrato?

Em outubro de 2026, o ERC-721 não define o conteúdo de um token, quaisquer direitos associados a um token, onde são armazenados os ficheiros de um token, como os tokens são criados ou destruídos, nem o estatuto legal de um token. A entrada do glossário Non-fungible token (NFT) explica o que o registo de um token, ou seja, a informação que um contrato mantém sobre cada token, deixa de fora.

Contratos que sigam o ERC-721 podem, ainda assim, diferir no comportamento. O ERC-721 lista os casos em que uma transferência deve falhar, e permite que um contrato cancele uma transferência noutros casos, por exemplo enquanto as transferências estão suspensas. 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

Poderá estar interessado em: