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.
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











