Como criar um NFT (mint) com ethers.js
Autor: Alchemy Team
Este tutorial descreve como mintar um NFT na blockchain Ethereum usando Ethers através da biblioteca ethers.js e do nosso smart contract da Parte I: How to Create an NFT. Vamos também explorar testes básicos
Tempo estimado para concluir este guia: ~10 minutos
Além disso, não deixe de conferir o restante da nossa série de tutoriais sobre NFT:
- 🌟 How to mint an NFT using Web3.js
- 👛 How to view your NFT in your mobile wallet
- 💸 How to set a price on an NFT
- 💻 NFT minter tutorial: How to create a full stack DApp
Em outro tutorial, aprendemos como mintar um NFT usando Web3 e a biblioteca de contratos OpenZeppelin. Neste exercício, vamos te guiar por uma implementação alternativa usando a versão 4 da biblioteca OpenZeppelin, além da biblioteca Ethereum Ethers.js em vez de Web3.
Também vamos cobrir os fundamentos de como testar seu contrato com Hardhat e Waffle. Neste tutorial estou usando Yarn, mas você pode usar npm/npx se preferir.
Por fim, vamos usar TypeScript. Isso já é bem documentado, então não vamos abordá-lo aqui.
Em todos os outros aspectos, este tutorial funciona da mesma forma que a versão com Web3, incluindo ferramentas como Pinata e IPFS.
Um lembrete rápido
Como lembrete, "mintar um NFT" é o ato de publicar uma instância única do seu token ERC721 na blockchain. Este tutorial pressupõe que você já fez o deploy de um smart contract na rede Ropsten na Parte I da série de tutoriais de NFT, o que inclui a instalação do Ethers.
Passo 1: crie seu contrato em Solidity
OpenZeppelin é uma biblioteca para desenvolvimento seguro de smart contracts. Você simplesmente herda suas implementações de padrões populares como ERC20 ou ERC721, e estende o comportamento conforme sua necessidade. Vamos colocar esse arquivo em contracts/MyNFT.sol.
Passo 2: crie tasks do Hardhat para fazer o deploy do nosso contrato e mintar os NFTs
Crie o arquivo tasks/nft.ts contendo o seguinte:
Passo 3: crie os helpers
Você deve ter notado que nossas tasks importaram alguns helpers. Aqui estão eles.
contract.ts
env.ts
provider.ts
Note que a função final getProvider() usa a rede ropsten. Esse argumento é opcional e assume "homestead" como padrão caso seja omitido. Estamos usando a Alchemy, claro, mas existem várias alternativas suportadas.
wallet.ts
Passo 4: crie os testes
No seu diretório de testes, crie estes arquivos. Note que esses testes não são exaustivos. Eles testam um pequeno subconjunto da funcionalidade ERC721 oferecida pela biblioteca OpenZeppelin, e têm como objetivo fornecer a você os blocos de construção para criar testes mais robustos.
test/MyNFT.spec.ts (unit tests)
tasks.spec.ts (integration specs)
test-helpers.ts Note que isso requer as bibliotecas NPM importadas, incluindo sinon, chai e sinon-chai. A chamada sinon.restore() é necessária devido ao uso de stubbing.
Passo 5: configuração
Aqui está nosso hardhat.config.ts bem simples.
Note o condicional que só invoca o dotenv se não estivermos executando testes. Você pode não querer fazer isso em produção, mas fique tranquilo, pois o dotenv vai ignorar silenciosamente caso o arquivo .env não esteja presente.
Executando nossas tasks
Agora que colocamos esses arquivos no lugar, podemos rodar o hardhat para ver nossas tasks (excluindo as tasks nativas, por questão de brevidade).
Esqueceu os argumentos da sua task? Sem problema.
Executando nossos testes
Para rodar nossos testes, executamos hardhat test.
Resumo
Neste tutorial, criamos uma base sólida para uma infraestrutura de NFT bem testada, baseada em Solidity. A wallet fornecida por waffle.provider.getWallets() está vinculada a uma conta fake local da Hardhat Network que convenientemente já vem pré-carregada com um saldo em eth que podemos usar para financiar nossas transações de teste.
Newsletter da Alchemy
Seja o primeiro a saber sobre lançamentos
Assine nossa newsletter
Receba as últimas atualizações de produtos e recursos da Alchemy
Ao inserir seu endereço de e-mail, você concorda em receber nossas comunicações de marketing e atualizações de produtos. Você reconhece que a Alchemy processa as informações que recebemos de acordo com nosso Aviso de Privacidade. Você pode cancelar a inscrição a qualquer momento.
Artigos relacionados

Transforme o Claude Code em um agente de pesquisa onchain
Transforme o Claude Code em um agente de pesquisa onchain com o Alchemy CLI. Rastreie lançamentos de tokens, carteiras de deployers e admin keys fazendo as perguntas certas.

O roteador Cortex: como escolhemos o nó saudável mais rápido para cada requisição
Levar uma requisição até uma região próxima é o básico. O que acontece depois, escolher qual nó responde, é onde o Cortex atua.

Melhor infraestrutura blockchain para agentes de IA (2026)
Compare a melhor infraestrutura blockchain para agentes de IA em 2026: frameworks de agentes, provedores de RPC e dados prontos para agentes, e os padrões que os conectam.