WEB3DEV

Cover image for Crie um NFT com royalties na Blockchain Avalanche usando o Remix IDE
Paulo Gio
Paulo Gio

Posted on

Crie um NFT com royalties na Blockchain Avalanche usando o Remix IDE

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;
    }
}
Enter fullscreen mode Exit fullscreen mode

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.

https://github.com/figment-networks/learn-tutorials/raw/master/assets/create-ERC721-contract.png

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.

https://github.com/figment-networks/learn-tutorials/raw/master/assets/compile-and-install-deps.png

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;

    ...
Enter fullscreen mode Exit fullscreen mode

https://github.com/figment-networks/learn-tutorials/raw/master/assets/add-royalties-ERC721.png

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_;
    }
Enter fullscreen mode Exit fullscreen mode

https://github.com/figment-networks/learn-tutorials/raw/master/assets/initialize-royalties-ERC721.png

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;
    }
Enter fullscreen mode Exit fullscreen mode

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.

https://github.com/figment-networks/learn-tutorials/raw/master/assets/compile-ERC721.png

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!

https://github.com/figment-networks/learn-tutorials/raw/master/assets/ERC721-Deploy.png

Ainda na aba “Deploy & Run Transactions” no Remix, chame as respectivas funções; nome, royalties e símbolo do contrato inteligente ERC721 implantado.

https://github.com/figment-networks/learn-tutorials/raw/master/assets/Deploy-And-Run-Transections.png

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.

https://github.com/figment-networks/learn-tutorials/raw/master/assets/Add-Collectibles.png

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.

Latest comments (0)