Ir para o conteúdo

ERC-721

ERC-721 é a interface padrão do Ethereum para tokens não fungíveis (NFTs): cada token é identificado separadamente, e um contrato inteligente registra suas regras de propriedade e transferência.

Atualizado

Somente para fins educacionais; não constitui recomendação nem aconselhamento de investimento. Investir pode causar perdas.

Resposta direta

ERC-721 é a interface padrão do Ethereum para tokens não fungíveis. Em vez de um único saldo intercambiável, um contrato ERC-721 acompanha cada token por meio de tokenId, expõe seus proprietários e define como eles podem ser transferidos ou autorizados. O token é identificado pelo par formado pelo endereço do contrato e tokenId; o padrão, por si só, não determina o preço, a autenticidade, a escassez nem os direitos legais do ativo.

ERC-721 é diferente de ERC-20 porque as unidades de ERC-20 são fungíveis: uma unidade deve ser intercambiável com outra. Tokens ERC-721 podem pertencer à mesma coleção e ainda assim ter identificadores e metadados diferentes. Uma carteira ou marketplace pode oferecer suporte aos dois padrões, mas as chamadas de transferência e aprovação são diferentes.

A pergunta prática não é se um projeto diz usar “ERC-721”, mas o que seu contrato e os sistemas ao redor realmente fazem. Antes de tratar um NFT como ativo, verifique a implementação, as permissões, os metadados, a autorização do marketplace, a liquidez e os direitos prometidos aos detentores.

Como funciona

Identidade e propriedade

O contrato registra um proprietário para cada tokenId existente. ownerOf retorna esse endereço e balanceOf conta quantos tokens um endereço possui. A emissão normalmente cria um novo identificador e emite um evento Transfer a partir do endereço zero; a queima geralmente emite uma transferência para o endereço zero. Esses eventos ajudam na indexação, mas a autoridade é o estado do contrato.

Transferências e aprovações

O proprietário pode chamar transferFrom diretamente ou autorizar um endereço para um token com approve. setApprovalForAll autoriza um operador a controlar todos os tokens que o proprietário possui naquela coleção. Isso é conveniente para marketplaces, mas cria uma permissão ampla. Confira o operador pelo endereço do contrato e revogue on-chain as aprovações que não forem mais necessárias. Uma ordem de marketplace assinada é diferente de uma aprovação on-chain: cancelar uma não cancela necessariamente a outra.

safeTransferFrom também verifica se o contrato receptor implementa IERC721Receiver. Essa verificação ajuda a evitar o envio do token a um contrato que não consiga recebê-lo; transferFrom não executa o callback do receptor. Nenhuma das duas funções garante que um marketplace, uma ponte ou uma carteira tratará o token corretamente.

Metadados e royalties

A extensão opcional de metadados expõe tokenURI, que pode apontar para dados armazenados on-chain ou em outro lugar. Uma URI base mutável, um contrato atualizável, um administrador ou um serviço de hospedagem centralizado pode mudar o que o token exibe após a emissão. Armazenamento permanente e descentralizado reduzem algumas dependências, mas não provam autoria, procedência ou titularidade de propriedade intelectual.

ERC-721 não obriga marketplaces secundários a pagar royalties ao criador. Uma coleção pode implementar a interface opcional de royalties EIP-2981, mas o marketplace decide se irá respeitá-la, e a interface não liquida nem impõe o pagamento. Limites de oferta, aleatoriedade, autenticidade da obra, licenças de marca e outras promessas devem ser verificadas separadamente no código, nas regras de distribuição e nos documentos legais.

Exemplo

Suponha que um contrato emita o token #42 para Alice. O token não é identificado globalmente apenas por 42: o endereço do contrato da coleção também faz parte da identidade. Alice pode listá-lo em um marketplace concedendo approve para esse token ou setApprovalForAll ao operador do marketplace. Quando a venda é executada, o marketplace chama uma função de transferência, e o contrato verifica propriedade e autorização. Alice deve revogar depois a aprovação para toda a coleção quando não precisar mais dela.

A imagem exibida pelo marketplace é uma questão separada de metadados. Alice deve verificar o comportamento de tokenURI, as permissões de atualização, a hospedagem e a licença da coleção, em vez de supor que possuir o token transfere direitos autorais ou de uso comercial.

Riscos

  • Risco do contrato: uma falha, uma atualização maliciosa, um administrador privilegiado ou um hook de transferência incorreto pode bloquear ou mover tokens.

  • Risco de autorização: um setApprovalForAll para toda a coleção ou um marketplace comprometido pode mover todos os tokens aprovados daquela coleção.

  • Risco de metadados e legal: arquivos fora da cadeia podem desaparecer ou mudar, e a propriedade do token não concede automaticamente direitos autorais, de marca ou outros direitos legais.

  • Risco de mercado: os preços de NFTs podem ser voláteis, a liquidez pode ser baixa e o preço mínimo exibido talvez não seja executável para um token específico.

As operações on-chain geralmente são irreversíveis. Verifique o contrato da coleção, o endereço receptor, as aprovações, os controles de metadados e os detalhes da transação antes de assinar; trate afirmações de promotores ou comunidades como alegações a verificar, não como garantias.

Equívocos comuns

Mito 1: ERC-721 garante escassez

Ele apenas distingue tokens dentro de um contrato. O emissor pode cunhar mais tokens, implantar coleções semelhantes ou fazer vários identificadores apontarem para mídias equivalentes. A escassez depende das regras de oferta e das permissões que as aplicam.

Mito 2: O NFT inclui todos os direitos de propriedade intelectual

A blockchain registra uma transferência de token. Direitos autorais, reprodução, uso comercial, adaptação e marca dependem da licença da coleção e da lei aplicável; não podem ser inferidos de ownerOf.

Mito 3: Cancelar uma listagem do marketplace remove todas as permissões

A listagem, sua assinatura e validade, e um approve ou setApprovalForAll on-chain são estados separados. Verifique e revogue independentemente a permissão on-chain quando ela não for mais necessária.

Tópicos relacionados

Fontes

Navegação

Pesquisar na wiki...