
Os NFTs estão agora varrendo o globo. Ao comercializar bens e serviços, eles estão transformando todas as facetas da nossa sociedade. As enormes vendas que esses NFTs geraram por meio da comunidade cripto viraram de cabeça para baixo o mercado de colecionáveis digitais e arte. À medida que o uso de tokens digitais cresceu, muitos padrões de token surgiram. Em nosso último artigo, falamos sobre o famoso token ERC-20. Esta lição mostrará como criar um contrato ERC-721. Saiba mais sobre o padrão ERC-721 e como desenvolver um contrato inteligente lendo sobre ele.
Uma introdução ao lendário padrão ERC-721

Considerado o padrão lendário que inicialmente deu origem à febre dos NFTs, ERC-721. O sucesso desse padrão se deve a várias características inovadoras. Ele simplifica a transferência de NFTs entre contas e a troca dessas moedas virtuais por outras moedas fiduciárias. Suas ideias incluem propriedade fracionada de propriedade privada, propriedade de blockchain de cópias originais de arte digital que rendem milhões de dólares e avatares distintos disponibilizados ao público em geral como membros de um clube exclusivo.
Embora às vezes seja confundido com o ERC 20, o primeiro exige a criação de um contrato para incluir informações básicas, como um nome ou símbolo, um id exclusivo e, na maioria das circunstâncias, um URI ou Uniform Resource Locator, o fato de o ERC 721 ser único e não poder ser copiado o torna diferente de outros ERCs. Manter e trocar tokens não fiduciários dentro de contratos inteligentes se tornou mais simples por causa do padrão ERC-721. Depois de revisar alguns fundamentos do ERC-721, vamos criar um contrato usando-o.
Empregando o Open Zeppelin para redigir um contrato ERC-721 simples

O tutorial a seguir usará o Remix como nosso IDE padrão para escrever, compilar e implementar o contrato. Vamos começar agora
Vá até o Remix e crie um novo arquivo chamado “HelloWorld.sol”. É aqui que escreveremos nosso contrato inteligente
Antes de inicializar o código, temos que definir a versão do compilador Solidity para nosso contrato usando pragma junto com a licença subjacente:
// SPDX-License-Identifier:NÃO LICENCIADO
pragma solidez >=0,8,0;
Depois de declarar a versão do compilador Solidity, passamos a importar as bibliotecas apropriadas do Open Zeppelin, principalmente a ERC721, de sua fonte oficial.
A biblioteca ERC721 contém as definições fundamentais necessárias para que um contrato seja considerado compatível com ERC-721.
importar “@openzeppelin/contracts/token/ERC721/ERC721.sol”;
Nomearemos nosso contrato Hellonft e o declararemos como compatível com ERC-721, juntamente com a definição do símbolo como HONFT
contrato HelloWorld é ERC721(“HelloWorld”, “HONFT”) {
Em seguida, inicializamos o tokenId (identificador exclusivo para cada token) para 0
uint tokenId;
Criamos um mapeamento com o endereço como chave e tokenMetaData como valor.
mapeamento(endereço=>tokenMetaData[]) público propertyRecord;
A estrutura tokenMetaData foi projetada para manter o tokenId, o timestamp e o tokenURI de cada token em um só lugar para que eles possam ser vinculados ao propertyRecord de endereços de forma completa.
estrutura tokenMetaData{uint tokenId;uint timeStamp;string tokenURI;}
Agora começamos a escrever nossa função mintToken. A cunhagem permite que o sus tokenize vários ativos. Nós cunhamos a imagem de amostra no formato .png.
função mintToken(endereço do destinatário, string url da memória) public {
Agora usamos o método _safeMint para iniciar o processo de cunhagem importado do contrato ERC721 e enviar o tokenMetaData para o receptor para manter nossos próprios ownedRecords. Nós codificamos o mesmo arquivo .png como o URI para cunhagem de qualquer token em nosso contrato para simplificar as coisas.
_safeMint(destinatário, tokenId); propertyRecord[destinatário].push(tokenMetaData(tokenId, bloco.timestamp, url)); tokenId = tokenId + 1; }}
Agora você pode prosseguir para implementar este contrato em qualquer rede de teste, incluindo Remix. O contrato completo deve ficar assim agora:
// SPDX-License-Identifier:NÃO LICENCIADO
pragma solidez >=0,8,0;
importar “@openzeppelin/contracts/token/ERC721/ERC721.sol”;
contrato HelloWorld é ERC721(“HelloWorld”, “HONFT”) { uint tokenId; mapeamento(endereço=>tokenMetaData[]) público propertyRecord;
estrutura tokenMetaData { uint tokenId; uint carimbo de data/hora; sequência tokenURI; }
função mintToken(endereço do destinatário, string url da memória) public { _safeMint(destinatário, tokenId); propertyRecord[destinatário].push(tokenMetaData(tokenId, block.timestamp, url)); tokenId = tokenId + 1; }}
Após chamar a função mintToken, você terá tokenizado com sucesso seu primeiro NFT
Considerações finais

Nesta lição, nós o guiamos pela criação do seu contrato NFT ERC-721 usando o Open Zeppelin. Este artigo também atualiza os fundamentos e justificativas por trás dos padrões de token mais amplamente usados. Esperamos que as informações aqui ajudem você a redigir seu primeiro contrato inteligente NFT. Como sempre, esteja confiante e divirta-se codificando!
A criação de um contrato inteligente ERC-721 simples foi publicada originalmente no CryptoStars no Medium, onde as pessoas continuam a conversa destacando e respondendo a esta história.
