Aprenderemos a cunhar um contrato inteligente NFT na Blockchain e a acessar o NFT cunhado além de validar a propriedade.
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
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
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.
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
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/"
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();
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
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
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.
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
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
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.
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.
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.
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.
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)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.