WEB3DEV

Cover image for Cunhagem e Acesso ao Token ERC721 na Blockchain
Fatima Lima
Fatima Lima

Posted on • Atualizado em

Cunhagem e Acesso ao Token ERC721 na Blockchain

Aprenderemos a cunhar um contrato inteligente NFT na Blockchain e a acessar o NFT cunhado além de validar a propriedade.

Image description

Contrato Inteligente de NFT: Criação de Ativos Digitais e Metadados para NFT

 

Esta é a etapa seguinte ao nosso trabalho anterior no qual criamos um Contrato Inteligente NFT e o implantamos na Blockchain. Se você não tiver passado pelo post anterior, então consulte-o usando o seguinte.

Crie e Hospede sua Obra de Arte Digital e seus Metadados

Você deve estar se perguntando, por que precisamos fazer isso? Como todos sabemos, um NFT representa a propriedade da obra de arte digital ou do ativo digital que um indivíduo possui, mas em sua verdadeira forma, um NFT contém apenas a referência da obra de arte digital ou ativo digital e não o conteúdo real. Sim, essa é a realidade que a maioria de nós desconhece, agora que temos esse raciocínio, então vamos prosseguir.

Primeiro vamos criar uma obra de arte digital e seus metadados que serão hospedados no IPFS. Eu criei uma obra de arte digital com toda a minha criatividade e nós estaremos usando a mesma. Agora, não me julgue com base em minha criatividade. ;-)

Consulte a amostra da arte

Image description

Contrato Inteligente NFT: Minha obra de arte digital para NFT

Para tornar nosso ativo NFT disponível o tempo todo, estaremos utilizando nft.storage que é um sistema de armazenamento contínuo baseado em IPFS. Você tem que criar uma conta para carregar o ativo digital e seus metadados relacionados. Use o link signup para fazer o necessário. Carregue a arte digital e depois copie a URL IPFS do arquivo usando Ações >> Copie URL IPFS e salve-a, pois a usaremos nos próximos passos.

Nota: A URL IPFS estará na forma de ipfs://bafybeihunj........zd2jq

Agora vamos criar metadados para nossa arte digital que será um arquivo JSON. Podemos nomeá-lo como nft-metadata.json. Este arquivo simplesmente armazena os dados sobre a arte digital e a url da imagem em formato de URL IPFS que copiamos há pouco. O esquema de metadados será parecido com

Image description

Contrato Inteligente NFT: Arquivo de Metadados NFT nft-metadata.json

Nota: Você pode adicionar tantos metadados na forma aninhada de atributos quanto quiser, porém sempre forneça detalhes relevantes para os atributos description, image e name como geralmente é exibido em nosso NFT. O atributo image tem o URL fornecido pelo IPFS para nossa arte digital, carregada na etapa anterior..

Carregue o arquivo nft-metadata.json em nft.storage e desta vez copie a url de armazenamento IPFS NFT completa usando Ações >> Veja a URL que estará na forma de https://bafkreicld..........3zb3u.ipfs.nftstorage.link/

Heeee….. Terminamos alguns grandes feitos e agora passamos para a próxima seção.

Configuração de projeto de contrato inteligente

Consulte a seção de configuração do projeto do Contrato Inteligente NFT se você não tiver feito a montagem do projeto anteriormente, pois analisaremos os arquivos do projeto para interagir com nosso contrato inteligente implantado.

Image description

Contrato Inteligente do NFTt:configuração do projeto Github

Como uma rápida atualização: nosso projeto tem a seguinte estrutura onde SmartNFT.sol é nosso código Solidity com nossa lógica de contrato inteligente de NFT e a pasta scripts tem deploy.js pelo qual nós implantamos nosso contrato na Goreli Test Network. O arquivo nft-metadata.json é o mesmo arquivo que criamos na seção acima e que inclui nossos metadados da arte digital

Atualizando a configuração .env

Nós temos o arquivo criado .env durante o processo de implantação do nosso contrato e possuímos as configurações do projeto que são necessárias para implantar nosso Contrato Inteligente.

Agora, a fim de cunhar com nosso Contrato Inteligente de NFT atualizaremos nosso arquivo .env adicionando a PUBLIC_KEY que é nossa chave pública da carteira Metamask, Token_URI que são nossos metadados de arte digital URI armazenados no IPFS como criamos na seção acima, a configuração CONTRACT_ADDRESS que nós pegamos na seção do post anterior.

#configuração do arquivo .env para interagir com nosso Contrato Inteligente de NFT
API_URL = Copia o valor HTTP da sua seção de detalhes da chave do app Alchemy
API_KEY = Copia o valor API_KEY da sua seção de detalhes da chave do app Alchemy
PRIVATE_KEY = Sua chave privada da carteira MetaMask
PUBLIC_KEY = Sua chave pública da carteira MetaMask 
CONTRACT_ADDRESS = Obtemos esse endereço no momento em que nosso contrato inteligente NFT foi implantado no passo anterior
TOKEN_URI= IPFS NFT Metadata Storage file URI
Enter fullscreen mode Exit fullscreen mode

Nota: Se você se esquecer de onde vamos obter a configuração env #1, #2 e #3 então, consulte o passo do post anterior para uma rápida atualização.

O arquivo .env, totalmente configurado e atualizado, terá o seguinte aspecto


#.env file configuration for minting our NFT Smart Contract

API_URL = "https://eth-goerli.g.alchemy.com/v2/NNSC4vzqU_.......vIDTEU"

API_KEY = "0xg9z_SP.......Jo5H0yP"

PRIVATE_KEY = "0x8b4640dac7c...........................c6e77ea68bc7d7"

PUBLIC_KEY = "0xcCa54718f9...................DB6B058Af753a"

CONTRACT_ADDRESS= "0xa5a1abF..............AEBbE46Ea90EC7c5"

TOKEN_URI="https://bafkreicld..........3zb3u.ipfs.nftstorage.link/"
Enter fullscreen mode Exit fullscreen mode

Cunhando um Contrato Inteligente NFT

Vamos passar aos próximos passos e ver como podemos cunhar com nosso contrato NFT implantado. Navegue até o arquivo scripts/mint-nft.js e você encontrará o seguinte código


const {

  API_URL,

  API_KEY,

  PRIVATE_KEY,

  PUBLIC_KEY,

  CONTRACT_ADDRESS,

  TOKEN_URI

} = process.env;

const contract = require("../artifacts/contracts/SmartNFT.sol/SmartNFT.json")

const provider = new ethers.providers.AlchemyProvider(network = "goerli", API_KEY);

const signer = new ethers.Wallet(PRIVATE_KEY, provider);

const etherInterface = new ethers.utils.Interface(contract.abi);

async function mintNFT() {

  const nonce = await provider.getTransactionCount(PUBLIC_KEY, 'latest');

  const txn = {

    from: PUBLIC_KEY,

    to: CONTRACT_ADDRESS,

    nonce: nonce,

    gasPrice: gasPrice,

    data: etherInterface.encodeFunctionData("publishNFT", [PUBLIC_KEY, TOKEN_URI])

  };

  const signedTxn = await signer.signTransaction(txn);

  const txnReceipt = await provider.sendTransaction(signedTxn);

  await txnReceipt.wait();

  const hash = txnReceipt.hash;

  const receipt = await provider.getTransactionReceipt(hash);

  console.log('transaction receipt ', receipt);

  const {

    logs

  } = receipt;

  const tokenInBigNumber = ethers.BigNumber.from(logs[0].topics[3]);

  const tokenId = tokenInBigNumber.toNumber();

  console.log("tokenId minted: ", tokenId);

}

mintNFT();

Enter fullscreen mode Exit fullscreen mode

Você pode ver que estamos alocando as variáveis locais usando a configuração .env que foi feita nos passos anteriores.

Execute o comando para interagir com seu contrato

npx hardhat run scripts/mint-nft.js
Enter fullscreen mode Exit fullscreen mode

Com a execução bem sucedida, a saída será

transaction receipt  {
 to: '0xa5a1ab.............0EC7c5',
 from: '0xcCa54........7DB6B058Af753a',
 .......................
 .......................
 .......................
 .......................
 transactionIndex: 22,
 status: 1,
 type: 0
}
tokenId minted:  1
Enter fullscreen mode Exit fullscreen mode

Os registros de transações mostram que fizemos uma transação a partir de nosso endereço de carteira identificado como atributo from para o endereço de nosso Contrato Inteligente NFT identificado com o atributo to.

Parabéns!!! Cunhamos nosso Contrato Inteligente NFT. Vamos verificar rapidamente esta transação na blockchain ethereum.

Image description

NFT Smart Contract: Minting transaction Verification

Podemos ver a entrada da transação tendo o Status Sucesso para o nosso Contrato Inteligente NFT, tendo o endereço mencionado na etiqueta como Interacted With (To) e Token Transferred o que confirma que o token foi transferido para nosso endereço da carteira Metamask, o que significa que agora somos os proprietários deste NFT. Na próxima seção veremos como podemos acessar esta arte digital por meio da nossa carteira Metamask como proprietário.

Acessar o NFT cunhado como proprietário

Estou usando a carteira Metamask pelo celular e podemos consultar o processo através de capturas de tela para entender como acessar o NFT cunhado como um proprietário.

Passo1:

Abra a carteira Metamask em seu dispositivo móvel e sua Rede deve ser configurada para Goreli test Network . Você verá a interface abaixo

Image description

Contrato Inteligente NFT: Acesso ao NFT cunhado Passo1

Passo2:

Vá para a aba NFTs e se for a primeira vez, então você não verá nenhum NFT. Clique em import NFTs para importar o NFT cunhado

Image description

Contrato Inteligente NFT: Acesso ao NFT cunhado Passo 2

Passo3:

Aqui você tem que digitar o endereço do Contrato Inteligente NFT no campo Endereço e no campo ID, digitar o ID do token cunhado como recebemos na saída do comando CLI na seção anterior.

Image description

Contrato Inteligente NFT: Acesso ao NFT cunhado Passo3

Passo4:

Se os dados corretos forem inseridos, então em poucos segundos você encontrará o NFT cunhado exibido sob a aba NFTs.

Image description

Contrato Inteligente NFT: Acesso ao NFT cunhado Passo4

Toque na Obra de Arte Digital e ela abrirá todos os metadados que fornecemos nas seções anteriores como detalhes do seu NFT.

Image description

Contrato Inteligente NFT: Acesso a detalhes do NFT cunhado

Nota: Por acaso, se você não for o proprietário deste NFT, então durante este processo você encontrará a mensagem "Você não é o proprietário deste colecionável". Este cenário será aplicável ao caso em que outra pessoa esteja tentando acessar o NFT que você possui.

Image description

Contrato Inteligente NFT: Acessar o NFT errado ou não possuir o NFT

Com isso, terminamos com tudo. Ufa....... sério, fizemos bastante. Aprendemos como criar um contrato inteligente NFT, implantando-o em blockchain, hospedando uma arte digital junto com os metadados como um NFT e cunhando o NFT seguido de acesso ao NFT cunhado em nossa carteira criptográfica.

Não se esqueça de comemorar esta conquista ;-)

Este artigo foi escrito por Hemant Juyal e traduzido por Fátima Lima. O original pode ser lido aqui.

Top comments (1)

Collapse
 
gedehuntu37 profile image
anjayani

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.