Aprenda a criar um NFT com royalties na Avalanche.
Introdução
Um token ERC721 é um tipo de token não fungível (NFT) que pode conter ou fazer referência a metadados na forma de arte ou conteúdo digital, como imagens, áudio, postagens de mídia social, sites e projetos de arte generativa em uma perspectiva mais ampla - e até mesmo Realidade Virtual e Realidade Aumentada!
Um NFT é representado por uma unidade discreta de dados em um livro-razão digital conhecido como blockchain, onde cada token representa algumas propriedades digitais exclusivas, que não podem ser intercambiadas. Esses tokens permitem muitos casos de uso que seriam impossíveis com tokens intercambiáveis ou "fungíveis", como utilidade específica, prova de propriedade e um histórico de transação de ativos exclusivo.
Consulte a documentação oficial do desenvolvedor Ethereum para saber mais sobre os tokens ERC-721.
Pré-requisitos
Em preparação para o tutorial, você precisará ter uma compreensão básica do Remix IDE e dos contratos inteligentes Solidity. Consulte o tutorial de contratos inteligentes Avalanche para obter mais informações sobre a carteira Avalanche.
Escreva um contrato inteligente usando o Remix IDE
No Remix IDE, crie um novo arquivo e cole este contrato inteligente ERC721 abaixo, que importa o padrão de token do OpenZeppelin. As linhas de importação (import
) serão processadas pelo compilador Solidity, que é executado pelo Remix IDE, e todas as dependências (arquivos necessários) serão trazidas para o espaço de trabalho do Remix.
// contracts/GameItem.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract GameItem is ERC721URIStorage {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
constructor() ERC721("GameItem", "ITM") {}
function awardItem(address player, string memory tokenURI)
public
returns (uint256)
{
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_mint(player, newItemId);
_setTokenURI(newItemId, tokenURI);
return newItemId;
}
}
Esta captura de tela mostra a interface principal do Remix IDE, com o código Solidity acima colado em um novo arquivo chamado ERC721.sol
.
Vá para a segunda guia na barra lateral para compilar o código Solidity, que também buscará e instalará o modelo pronto do OpenZeppelin para contratos inteligentes ERC721 que foi especificado pelas instruções import
.
Abra o arquivo ERC721.sol no diretório .deps/npm/openzeppelin/contracts/token/ERC721/
para declarar uma variável de royalties do tipo uint8
no contrato. Isso nos dá a capacidade de especificar os royalties como um número. O sublinhado antes do nome da variável é para evitar o sombreamento da variável.
// .deps/npm/openzeppelin/contracts/token/ERC721/ERC721.sol
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
using Address for address;
using Strings for uint256;
// Nome do Token
string private _name;
// Símbolo do Token
string private _symbol;
// Royalties
uint8 private _royalties;
...
Após declarar a variável royalties no contrato ERC721, devemos inicializá-la também no construtor.
constructor(string memory name_, string memory symbol_, uint8 royalties_) {
_name = name_;
_symbol = symbol_;
_royalties = royalties_;
}
Para obter o valor atual da variável royalties do contrato inteligente, crie uma função pública royalties()
, que pode ser definida como um tipo view
. Também queremos torná-la virtual
para que possa ser substituída por qualquer contrato que herde a função. Ele retornará um valor uint8
, que corresponde ao valor que _royalties
armazena na blockchain.
function royalties() public view virtual returns (uint8) {
return _royalties;
}
Agora podemos compilar o contrato inteligente ERC721 alterado e verificar se há avisos, certificando-se de que a versão do Solidity declarada e a versão do compilador sejam semelhantes. O compilador Solidity usa versionamento semântico, portanto, esteja ciente de que, por exemplo, as strings de versão 0.8.0
e ^0.8.0
não são iguais.
Em seguida, baixe e instale a carteira Metamask para o seu navegador. Crie uma nova carteira na Metamask e siga nosso guia rápido para se conectar à cadeia de contratos (C-Chain) de testes da Avalanche, Fuji. Você precisará ter uma chave de API do DataHub válida para a Avalanche.
Solicite AVAX da torneira (faucet) de testes para a implantação, em https://faucet.avax-test.network/.
Passe os parâmetros necessários para o construtor no Remix: o Nome do Token, o Símbolo e os Royalties. Em seguida, clique no botão “Deploy” para implantar!
Ainda na aba “Deploy & Run Transactions” no Remix, chame as respectivas funções; nome, royalties e símbolo do contrato inteligente ERC721 implantado.
Copie o endereço do contrato implantado para importar na carteira Avalanche. Agora ele deve aparecer na guia de colecionáveis na seção de portfólio dentro de sua carteira Avalanche.
Parabéns! Você adicionou com sucesso o NFT como colecionável na carteira Avalanche.
Conclusão
Obrigado por concluir este tutorial, agora você deve saber como criar um NFT com royalties na Avalanche usando um simples contrato inteligente do Solidity. Divirta-se com isso! Se você gostaria de saber o histórico técnico de como os NFTs funcionam na rede Avalanche ou gostaria de construir produtos usando NFTs, confira este tutorial sobre NFTs na Avalanche!.
Se você tiver alguma dificuldade em seguir este tutorial ou simplesmente quiser discutir a tecnologia Avalanche conosco, você pode se juntar ao nosso canal do Discord!
Sobre o autor
Artigo publicado por Devendra Yadav. Traduzido por Paulinho Giovannini.
Referências
Este tutorial é baseado na documentação oficial da Avalanche.
Top comments (0)