---
title: "Cómo crear un NFT con ethers.js"
description: "Descubre la guía paso a paso para crear NFTs con Ethers.js. Crea tus propios activos digitales sin esfuerzo y únete a la revolución blockchain."
---

# Cómo crear un NFT con ethers.js

Este tutorial describe cómo acuñar un NFT en la blockchain de Ethereum usando Ethers mediante la librería [ethers.js](https://www.alchemy.com/dapps/ethers-js), y nuestro contrato inteligente de la Parte I: How to Create an NFT. También exploraremos pruebas básicas.

_Tiempo estimado para completar esta guía: ~10 minutos_

Además, no dejes de revisar el resto de nuestra serie de tutoriales de NFT:

- 🌟  [Cómo acuñar un NFT usando Web3.js](https://www.alchemy.com/blog/how-to-mint-an-nft-using-web3-js)
- 👛  [Cómo ver tu NFT en tu billetera móvil](https://www.alchemy.com/blog/how-to-view-your-nft-in-your-mobile-wallet)
- 💸  [Cómo fijar un precio para un NFT](https://www.alchemy.com/blog/how-to-set-a-price-on-an-nft)
- 💻  [Tutorial de minter de NFT: cómo crear una DApp full stack](https://www.alchemy.com/blog/nft-minter-tutorial-how-to-create-a-full-stack-dapp)

En [otro tutorial](https://www.alchemy.com/docs/reference/nft-api-overview), aprendimos a acuñar un NFT usando Web3 y la [librería de contratos de OpenZeppelin](https://docs.openzeppelin.com/contracts/erc721). En este ejercicio, te guiaremos a través de una implementación alternativa usando la versión 4 de la [librería de OpenZeppelin](https://docs.openzeppelin.com/contracts/4.x/erc721), así como la librería de Ethereum [Ethers.js](https://docs.ethers.io/) en lugar de Web3.

También cubriremos los fundamentos de probar tu contrato con [Hardhat](https://www.alchemy.com/dapps/hardhat) y [Waffle](https://www.alchemy.com/dapps/waffle). Para este tutorial estoy usando Yarn, pero puedes usar npm/npx si lo prefieres.

Por último, usaremos TypeScript. Esto está bastante bien documentado, así que no lo cubriremos aquí.

En todos los demás aspectos, este tutorial funciona igual que la versión con Web3, incluyendo herramientas como Pinata e IPFS.

## Un recordatorio rápido

Como recordatorio, "acuñar un NFT" es el acto de publicar una instancia única de tu token ERC721 en la blockchain. Este tutorial asume que ya [desplegaste con éxito un contrato inteligente en la red Ropsten en la Parte I](https://www.alchemy.com//blog/how-to-create-an-nft) de la serie de tutoriales de NFT, lo cual incluye instalar Ethers.

## Paso 1: crea tu contrato en Solidity

[OpenZeppelin](https://www.alchemy.com/dapps/openzeppelin) es una librería para el desarrollo seguro de contratos inteligentes. Simplemente heredas sus implementaciones de estándares populares como [ERC20](https://www.alchemy.com/overviews/erc20-solidity) o ERC721, y extiendes el comportamiento según tus necesidades. Vamos a colocar este archivo en contracts/MyNFT.sol.

## Paso 2: crea tareas de Hardhat para desplegar nuestro contrato y acuñar NFT's

Crea el archivo tasks/nft.ts con lo siguiente:

## Paso 3: crea los helpers

Notarás que nuestras tareas importaron algunos helpers. Aquí están.

`contract.ts`

`env.ts`

`provider.ts`

Nota que la función final getProvider\(\) usa la red ropsten. Este argumento es opcional y por defecto usa "homestead" si se omite. Nosotros usamos Alchemy, por supuesto, pero hay varias [alternativas soportadas](https://docs.ethers.io/v5/api/providers/#providers-getDefaultProvider).

`wallet.ts`

## Paso 4: crea las pruebas

En tu directorio de test, crea estos archivos. Ten en cuenta que estas pruebas no son exhaustivas. Prueban un pequeño subconjunto de la funcionalidad de ERC721 que ofrece la librería de OpenZeppelin, y están pensadas para darte las piezas básicas para crear pruebas más robustas.

`test/MyNFT.spec.ts (unit tests)`

`tasks.spec.ts (integration specs)`

`test-helpers.ts` Ten en cuenta que esto requiere las librerías de NPM importadas, incluyendo sinon, chai y sinon-chai. La llamada a `sinon.restore()` es necesaria debido al uso de stubbing.

## Paso 5: configuración

Aquí está nuestro `hardhat.config.ts` bastante minimalista.

Nota el condicional para invocar dotenv solo si no estamos ejecutando pruebas. Puede que no quieras ejecutar esto en producción, pero ten la seguridad de que dotenv ignorará silenciosamente esto si el archivo .env no está presente.

## Ejecutando nuestras tareas

Ahora que hemos puesto estos archivos en su lugar, podemos ejecutar hardhat para ver nuestras tareas \(excluyendo las tareas integradas por brevedad\).

¿Olvidaste los argumentos de tu tarea? No hay problema.

## Ejecutando nuestras pruebas

Para ejecutar nuestras pruebas, ejecutamos `hardhat test`.

## Resumen

En este tutorial, hemos creado una base sólida para una infraestructura de NFT bien probada basada en [Solidity](https://www.alchemy.com/overviews/solidity). La billetera proporcionada por **waffle.provider.getWallets\(\)** se vincula a una cuenta local simulada de [Hardhat Network](https://hardhat.org/hardhat-network/) que [convenientemente viene precargada](https://hardhat.org/hardhat-network/reference/#initial-state) con un saldo de eth que podemos usar para financiar nuestras transacciones de prueba.
