Acuña NFTs con Hardhat
Esta guía te enseña a utilizar Hardhat para desplegar un contrato inteligente NFT en la red Palm.
Dentro de tu directorio de scripts, crea un archivo mint.js.
Usaremos la versión Hardhat de la librería ethers.js . Esto proporciona más abstracciones y código más delgado que web3.js.
Requiere las bibliotecas correctas:
La ABI (Application Binary Interface) de nuestro contrato es la interfaz que permite a nuestro JavaScript interactuar con nuestro contrato inteligente. Hardhat genera y almacena la versión ABI de nuestro contrato en la carpeta artifacts como un archivo JSON.
Añade lo siguiente a mint.js:
3. Añade a provider
En el lenguaje de Ethers.js , un proveedor representa una conexión a una cadena de bloques Ethereum. Si añades uno, tu aplicación podrá interactuar con la red Palm.
En este escenario, debido a que estamos utilizando la versión plugin Hardhat de Ethers.js, nuestro objetoethers.provider recupera todos los detalles de la conexión desde hardhat.config.js.
Añade esta linea a mint.js:
Este paso consiste en añadir un archivo multimedia de tu elección a IPFS, el cual es un sistema distribuido para almacenar y acceder a archivos, sitios web, aplicaciones y datos.
Para ayudar a garantizar la disponibilidad de este archivo, puedes "anclar" el archivo en IPFS. Hay varios servicios de anclaje disponibles que mantendrán tu archivo en IPFS:
Ejemplo Utilizando NFT Storage
a) Accede a NFT Storage y crea una cuenta
b) Carga tu archivo
c) Guarda su CID (el identificador de contenido de un archivo o dato)
En este ejemplo implementaremos el Esquema JSON de Metadatos ERC721.
Un archivo de metadatos NFT es un documento JSON que sirve como descriptor para el archivo multimedia que representa su NFT.
Permite especificar los
- Nombre del NFT
- URI de la imagen (por ejemplo, como URI CID de IPFS)
- Descripción
- Otros atributos como algún tipo de rasgo
a) En el directorio raíz, crea un nuevo archivo llamado nft-metadata.json
b) Edita el siguiente código JSON para que coincida con las especificaciones de tu NFT
c) Añade el CID de la imagen que guardaste en el Paso 4..
d) Carga nft-metadata.json a NFT Storage
e) Copia su CID
f) Añade esta línea al archivo mint.js
La variable tokenCID se pasará como argumento a la función mintNFT del contrato.
a) Añade tu clave pública a una variable PUBLIC_KEY en tu archivo .env :
PUBLIC_KEY = "la-direccion-publica-de-tu-cartera"
b) Obtén la dirección del contrato que desplegaste anteriormente desde Using Hardhat, la dirección devuelta por Hardhat en el despliegue, y crea una variable .env apuntando a esa dirección:
Tu archivo .env debería contener ahora las siguientes variables:
La cartera es una clase conveniente en Ethers.js,representa una cuenta de Ethereum y permite firmar transacciones y mensajes como lo haría una EOA (Externally-owned account, cuenta de propiedad externa).
Añade lo siguiente a mint.js:
8. Configura el contrato Ethers.js
Un contrato Ethers.js es una representación del contrato real que ha sido desplegado. Esta clase te permite interactuar con tu contrato usando JavaScript. Puedes enviarle una transacción; en este caso, la usaremos para activar nuestra función MintNFT.
Añade estas líneas de código a mint.js:
Crea la función main , que llamará asíncronamente a la función MintNFT pasando como argumentos:
- Tu dirección (o cualquier otra dirección de destinatario que elijas)
- El CID de los metadatos de tu NFT
Se requiere que la confirmación sea de 5 bloques:
función main : tx.wait(5)),
Por lo tanto, pasarán unos segundos antes de ver la confirmación en tu terminal.
Tu archivo mint.js debería tener ahora este aspecto:
Por último, ejecuta mint.js para desplegar tu NFT:
Pega la dirección en Contract deployed to address: del paso anterior en la barra de búsqueda. Puede tardar entre 10 y 20 minutos en aparecer.
| Red de prueba | Red principal |
URL del Explorador |
✅ ¡Tu NFT está acuñado!
Ten en cuenta que tu contrato desplegado puede actuar como una fábrica de NFTs, permitiéndote acuñar cualquier número de tokens.
Si quieres que tu token aparezca en tu monedero MetaMask
- Ve a MetaMask
- Elige Importar tokens
- Pega la dirección del contrato (que se encuentra en tu archivo .env ) en la dirección del Token contract address es decir, el valor de CONTRACT_ADDRESS = 0x3DB7Da7f66a416B1865b699E426fE9e413285BB9
- Añade un Token Symbol
- Añade 0 como un decimal
- Clic Add Tokens
- Clic Import Tokens