O que é a interface ERC-721?
A interface ERC-721 é um conjunto padronizado de funções e eventos de contratos inteligentes usado para representar e transferir tokens não fungíveis em Ethereum e redes blockchain compatíveis.Um token não fungível, ou NFT, representa um token com identificação exclusiva, em vez de uma quantidade intercambiável de unidades idênticas.A especificação oficial do ERC-721 define como carteiras, aplicativos, contratos inteligentes e ferramentas de blockchain podem verificar a titularidade de NFTs e realizar transferências padronizadas.
A interface não determina o que um NFT representa, qual é seu valor nem se o conteúdo associado a ele é autêntico.Ela define uma linguagem técnica comum que diferentes aplicativos cripto podem usar para interagir com contratos de NFT.O padrão ERC-721 alcançou o status Final no processo de Ethereum Improvement Proposal e continua sendo um dos principais padrões para ativos únicos em blockchain.O ERC-721 pode ser usado para colecionáveis digitais, itens de jogos, credenciais de associação, terrenos virtuais, ingressos para eventos, ativos semelhantes a domínios, posições financeiras e registros tokenizados.Por que uma interface é importante?
Uma interface de contrato inteligente descreve as funções externas e os eventos que um software compatível espera encontrar em um contrato.Sem uma interface compartilhada, cada projeto de NFT poderia usar nomes de funções e regras de transferência diferentes.Assim, carteiras e aplicativos descentralizados precisariam de código personalizado para cada coleção.A interface ERC-721 permite que o software chame funções conhecidas, como
O que torna um token ERC-721 não fungível?
Cada token ERC-721 tem um número inteiro sem sinal exclusivo chamado token ID.O token é totalmente identificado pela combinação da rede blockchain, do endereço do contrato e do token ID.O token ID 100 em um contrato não tem relação com o token ID 100 em outro contrato.O padrão não exige que os token IDs comecem em zero, aumentem em sequência nem sigam um padrão previsível.Os aplicativos devem tratar cada token ID como um identificador opaco, em vez de presumir quais IDs existem.De acordo com o modelo principal de propriedade do ERC-721, cada token ID válido tem um único proprietário por vez.Um NFT pode ser transferido como um token completo, enquanto a propriedade fracionada exige um contrato ou uma estrutura de token separada, fora da interface básica.ID da interface principal ERC-721
A interface principal ERC-721 é identificada pelo valor
Um contrato compatível deve retornar
O padrão de detecção de interface ERC-165 calcula um identificador de interface aplicando XOR aos seletores de função incluídos nela.
O ERC-165 permite que um aplicativo consulte quais interfaces padronizadas um contrato afirma oferecer antes de tentar interagir com ele.Uma resposta positiva é útil para verificar compatibilidade, mas não comprova, por si só, que todas as funções foram implementadas corretamente.Aplicativos que lidam com ativos valiosos também podem precisar de análise de código, testes e simulação de transações.Principais funções do ERC-721
A interface ERC-721 obrigatória inclui consultas de titularidade, funções de transferência e funções de gerenciamento de aprovações.As principais funções são
A função balanceOf
A função
A função ownerOf
A função
A função transferFrom
A função
O endereço
Um NFT enviado com
As funções safeTransferFrom
O ERC-721 define duas versões sobrecarregadas de
Se o destinatário for um contrato inteligente, o processo de transferência chama
O que é IERC721Receiver?
Sua função obrigatória é
Um destinatário válido retorna o seletor da função, normalmente representado como
A documentação atual de implementação do ERC-721 inclui uma interface de destinatário e um utilitário básico de custódia para contratos que precisam aceitar transferências seguras.
Um destinatário deve verificar qual contrato de NFT fez a chamada antes de usar o callback para atualizar uma contabilidade importante.Risco do callback de destinatário ERC-721
Uma transferência segura para um contrato gera uma chamada externa a esse destinatário.O destinatário pode executar código adicional antes de a transação original terminar.Isso cria uma possível via de reentrância quando o aplicativo remetente ainda não concluiu suas atualizações internas de estado.Um destinatário malicioso pode tentar chamar outra função no contrato original durante o callback.As orientações de segurança para contratos inteligentes da Solidity recomendam concluir as verificações e os efeitos importantes no estado antes de fazer interações externas, quando o design pretendido permitir.
Os desenvolvedores devem testar transferências seguras de NFTs com contratos destinatários maliciosos, em vez de presumir que o callback é inofensivo.A função approve
A função
Chamar
A função getApproved
A função
Ao determinar se outro endereço pode transferir o token, os aplicativos também devem verificar
A função setApprovalForAll
A função
A função isApprovedForAll
A função
Eventos ERC-721
A interface principal ERC-721 define os eventos
O evento Transfer
O evento
O evento Approval
O evento
O evento ApprovalForAll
O evento
Interface opcional de metadados ERC-721
A extensão de metadados adiciona
Seu ID de interface ERC-165 é
A função
A função
A função
Como funciona tokenURI
A função
O guia atual de desenvolvimento do ERC-721 observa que a parte que controla o local de armazenamento pode alterar os metadados off-chain.
A titularidade do token não garante automaticamente a disponibilidade permanente de uma imagem ou arquivo externo.Interface enumerável opcional ERC-721
A extensão enumerável permite que aplicativos descubram token IDs por meio de consultas on-chain.Seu ID de interface ERC-165 é
Ela adiciona
A função
Em vez disso, muitos aplicativos reconstroem as posições de NFTs a partir de eventos
Emissão e queima
A interface principal ERC-721 não exige uma função pública de emissão.Cada projeto decide se a emissão será aberta, restrita, programada, limitada ou permanentemente desativada.O padrão também não exige uma função pública de queima.De acordo com a implementação do contrato, a queima remove um token dos registros de titularidade válida.Os usuários devem analisar quem pode emitir ou queimar NFTs e se um administrador pode afetar tokens mantidos por outras contas.Uma interface de transferência compatível não comprova que a oferta de tokens seja fixa.Interface ERC-721 vs. implementação ERC-721
A interface define o comportamento externo necessário para a compatibilidade.Uma implementação contém a lógica efetiva de armazenamento, autorização, transferência, emissão, metadados e administração.Dois contratos podem oferecer suporte à mesma interface ERC-721 e ainda usar designs internos muito diferentes.Uma implementação pode ser imutável, enquanto outra pode funcionar por meio de um proxy atualizável.Uma pode ter oferta fixa, enquanto outra permite que um administrador emita tokens indefinidamente.Uma pode armazenar metadados on-chain, enquanto outra aponta para um servidor que pode ser alterado.Os usuários devem analisar a implementação, em vez de tratar o suporte à interface como uma avaliação completa de segurança.ERC-721 vs. ERC-20
O ERC-20 representa saldos fungíveis, enquanto o ERC-721 representa tokens identificados individualmente.Uma conta ERC-20 pode manter uma quantidade divisível, como 250 unidades.Uma conta ERC-721 possui uma quantidade de token IDs distintos.A função
ERC-721 vs. ERC-1155
O ERC-721 se concentra em tokens não fungíveis identificados individualmente.O ERC-1155 permite que um contrato gerencie vários token IDs, incluindo ativos fungíveis, semifungíveis e não fungíveis.Uma conta ERC-1155 pode manter várias unidades de um mesmo token ID.Um token ID ERC-721 tem um único proprietário e não mantém um saldo quantitativo para cada conta.O padrão mais adequado depende do modelo do ativo, dos padrões de transferência, da necessidade de operações em lote e dos requisitos do aplicativo.Royalties e a interface ERC-721
A interface principal ERC-721 não define royalties para criadores.Uma interface de royalties separada pode informar o destinatário e o valor sugerido de um pagamento.As informações de royalties não obrigam automaticamente todos os sistemas de transferência a realizar o pagamento.Uma coleção que declare oferecer royalties deve explicar como as informações são calculadas e se podem mudar.Os usuários não devem presumir que um NFT ERC-721 inclui direitos de royalties permanentes ou exigíveis.Riscos de segurança das aprovações ERC-721
O phishing de aprovações é um dos riscos mais importantes para quem possui NFTs.Um site malicioso pode solicitar
Risco de transferência insegura
A função
É por isso que
Riscos de metadados e autenticidade
Qualquer pessoa pode implantar um contrato ERC-721 usando o nome ou símbolo conhecido de uma coleção.O endereço do contrato é o identificador técnico mais importante de uma coleção.Os metadados também podem conter nomes enganosos, obras de arte copiadas, links externos inseguros ou arquivos indisponíveis.Uma URI de token controlada por um administrador do projeto pode posteriormente apontar para outro conteúdo.A titularidade on-chain não verifica, por si só, a identidade do criador nem os direitos de propriedade intelectual.Os usuários devem confirmar o endereço da coleção e as informações do projeto por meio de fontes confiáveis.Risco de contratos atualizáveis
Uma implementação ERC-721 pode funcionar por trás de um proxy atualizável.Um administrador autorizado pode conseguir alterar as regras de transferência, a lógica dos metadados, os direitos de emissão ou outros comportamentos depois que os usuários adquirirem NFTs.As atualizações podem corrigir bugs, mas também criam riscos relacionados à governança e ao comprometimento de chaves.Os usuários devem analisar as permissões de atualização, os atrasos de execução, os controles de multisig e as funções administrativas.O suporte à interface ERC-721 não revela todas as funções privilegiadas da implementação.Como os desenvolvedores devem implementar o ERC-721
Os desenvolvedores devem começar com uma implementação revisada e mantida ativamente, em vez de reescrever a lógica sensível de titularidade sem um motivo sólido.A API atual de ERC-721 do OpenZeppelin oferece componentes principais, de metadados, enumeráveis, pausáveis, passíveis de queima, de royalties, de votação e relacionados a destinatários.
O acesso à emissão deve ser restrito de acordo com a política de oferta documentada da coleção.Deve-se considerar a emissão segura quando NFTs puderem ser emitidos diretamente para contratos inteligentes.Os callbacks de destinatário devem ser tratados como chamadas externas com possível comportamento de reentrância.Os testes devem abranger titularidade, aprovações, permissões de operador, destinatários seguros, destinatários maliciosos, queimas, token IDs inválidos e transferências não autorizadas.Os desenvolvedores também devem testar se a detecção de interface retorna os valores corretos para cada extensão implementada.Como os aplicativos podem detectar suporte ao ERC-721
Um aplicativo pode chamar
Um valor de retorno
Exemplo de transferência ERC-721
Suponha que Alice seja proprietária do token ID 42 em um contrato ERC-721.A função
A carteira dela chama
Ele atualiza a titularidade e chama
Se o destinatário retornar o seletor correto, a transferência é concluída e um evento
Erros comuns relacionados à interface ERC-721
Um erro comum é presumir que o nome de uma coleção identifica exclusivamente um contrato NFT.Outro erro é tratar
Um terceiro erro é usar
Perguntas frequentes
O que é a interface ERC-721?
A interface ERC-721 é um conjunto padronizado de funções e eventos para acompanhar a titularidade, as aprovações e as transferências de tokens não fungíveis.Qual é o ID da interface ERC-721?
O ID da interface principal ERC-721 é
O que balanceOf retorna em um contrato ERC-721?
Ela retorna o número de NFTs distintos daquele contrato pertencentes a um endereço.O que ownerOf faz?
Ela retorna o proprietário atual de um token ID válido.Qual é a diferença entre transferFrom e safeTransferFrom?
O que é onERC721Received?
É o callback que um contrato inteligente implementa para confirmar que pode receber um NFT por meio de uma transferência segura.Uma transferência segura de NFT pode falhar?
Sim. Ela falha quando as verificações de autorização falham ou quando um contrato destinatário não retorna o seletor de callback esperado.O que approve faz?
Autoriza um endereço a transferir um NFT específico.O que setApprovalForAll faz?
Concede a um operador autoridade sobre todos os NFTs que o chamador possui naquele contrato ERC-721.Uma aprovação de operador expira automaticamente?
Não. Uma aprovação padrão para toda a coleção continua ativa até que o proprietário a revogue ou que o contrato aplique regras personalizadas adicionais.A transferência de um NFT remove sua aprovação específica?
Sim. Uma implementação ERC-721 normal remove a aprovação associada ao token durante a transferência.Os metadados são obrigatórios no ERC-721?
Não. A interface de metadados é opcional, embora a maioria das coleções de NFT a implemente.Qual é o ID da interface de metadados ERC-721?
A extensão de metadados usa o ID de interface
Qual é o ID da interface enumerável ERC-721?
A extensão enumerável usa o ID de interface
Todo contrato ERC-721 oferece suporte a totalSupply?
Não.
O ERC-721 exige uma função de emissão?
Não. A interface principal não define como usuários ou administradores emitem NFTs.O ERC-721 exige uma função de queima?
Não. A queima é um recurso da implementação, não uma função principal obrigatória.O ERC-721 impõe royalties?
Não. Royalties estão fora da interface principal ERC-721 e exigem lógica ou padrões separados.Os metadados ERC-721 podem mudar?
Sim. O padrão permite que a URI do token seja alterável, a menos que a implementação ofereça garantias mais fortes de imutabilidade.A conformidade com o ERC-721 comprova que um NFT é autêntico?
Não. Qualquer pessoa pode implantar um contrato compatível; portanto, os usuários precisam verificar o endereço do contrato e o emissor de forma independente.Conclusão
A interface ERC-721 fornece regras comuns de titularidade, aprovação, transferência e eventos usadas por tokens não fungíveis em aplicativos compatíveis com Ethereum.Seu ID de interface principal é
Você também pode gostar
HOT
Criptomoedas que estão em alta atualmente e ganhando atenção significativa do mercado
TOP volume
As criptomoedas com o maior volume de negociação
Recém-adicionados
Criptomoedas listadas recentemente que estão disponíveis para negociação

