website logo
Join the CommunityContact Us
Navigate through spaces
⌘K
Portal del Desarrollador de la Red Palm
La Red Palm
Envía un Artículo
Detalles de la red
Validadores
Primeros Pasos
Obtén Tokens PALM
Cuotas de Gas
Conéctate a la red Palm
Ejecuta un Nodo de Transacciones
Tutoriales prácticos
Configuración de la cartera MetaMask
Desplegar contratos NFT
Verificando Contratos NFT
Acuña NFTs con Hardhat
Puente
Utilizar el Puente
Integración con el Puente
Direcciones Componentes del Puente
Descontinuados
Utiliza las Herramientas Compatibles
Explorador de Bloques
Moralis
Palm Safe
The Graph
API Covalent
Docs powered by archbee 

Acuña NFTs con Hardhat

34min

Resumen

Esta guía te enseña a utilizar Hardhat para desplegar un contrato inteligente NFT en la red Palm.



🏁 Requisitos Previos

  1. Obtén Tokens PALM para pagar las cuotas de transacción del despliegue.
  2. Conéctate a la red Palm
  3. Configuración de la cartera MetaMask para obtener tu llave privda.
  4. Instalar Node.js.


Tutorial | Acuña NFTs utilizando Hardhat

1. Crea un archivo mint.js en la carpeta de scripts

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:

JS
|
let provider = ethers.provider;



2. Crea una variable que represente el ABIde tu contrato

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:

JS
|
let provider = ethers.provider;



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:

JS
|
let provider = ethers.provider;



4. Carga un archivo multimedia a IPFS

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:

  • NFT Storage
  • Infura
  • Eternum
  • Pinata

Ejemplo Utilizando NFT Storage

a) Accede a NFT Storage y crea una cuenta

b) Carga tu archivo

Document image


c) Guarda su CID (el identificador de contenido de un archivo o dato)

Document image



5. Crea el archivo de Metadatos de tu NFT

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

Document image


e) Copia su CID

Document image


f) Añade esta línea al archivo mint.js 

JS
|
const tokenCID = "<CID-of-your-JSON>";


La variable tokenCID se pasará como argumento a la función mintNFT del contrato.



6. Carga tu archivo .env :

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:

Text
|
CONTRACT_ADDRESS = "deployed-contract-address"


Tu archivo .env debería contener ahora las siguientes variables:

Text
|
API_URL = "your-provider-api-url"
PRIVATE_KEY = "your-private-account-address"
PUBLIC_KEY = "your-public-wallet-account-address"
CONTRACT_ADDRESS = "deployed-contract-address"



7. Configura el firmante y la cartera de  Ethers.js 

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:

JS
|
const privateKey = `0x${process.env.PRIVATE_KEY}`;
const wallet = new ethers.Wallet(privateKey);
wallet.provider = provider;
const signer = wallet.connect(provider);



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:

JS
|
const nft = new ethers.Contract(
  process.env.CONTRACT_ADDRESS,
  contractInterface,
  signer
);



9. Construye la función main 

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:

JS
|
require("dotenv").config();
require("@nomiclabs/hardhat-ethers");
const contract = require("../artifacts/contracts/NFT.sol/NFT.json");
const contractInterface = contract.abi;

let provider = ethers.provider;

const tokenCID = "https://bafkreifvtwuiypleu4vv7edh4zclmymp5ixh44xxmd3hb2imiqa7mp2c3a.ipfs.dweb.link/";
const privateKey = `0x${process.env.PRIVATE_KEY}`;
const wallet = new ethers.Wallet(privateKey);

wallet.provider = provider;
const signer = wallet.connect(provider);

const nft = new ethers.Contract(
  process.env.CONTRACT_ADDRESS,
  contractInterface,
  signer
);

const main = () => {
  console.log("Waiting for 5 blocks to confirm...");
  nft
    .mintNFT(process.env.PUBLIC_KEY, tokenCID)
    .then((tx) => tx.wait(5))
    .then((receipt) => console.log(`Confirmed! Your transaction receipt is: ${receipt.transactionHash}`))
    .catch((e) => console.log("Something went wrong", e));
};

main();



10. Llama mint.js

Por último, ejecuta mint.js para desplegar tu NFT:

Mint on Palm Testnet
Mint on Palm Mainnet
Example Response
|
Waiting for 5 blocks to confirm...
Confirmed! Your transaction receipt is: 0xe97e9d8713f48346b860da9209fc4b5b3c051f574e1389ef25a397a51b2e3f87



11. Busca tu implantación en el explorador de bloques de red de Palm

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

https://explorer.palm-uat.xyz

https://explorer.palm.io

✅ ¡Tu NFT está acuñado!



Utiliza tu contrato desplegado como fábrica de NFTs

Ten en cuenta que tu contrato desplegado puede actuar como una fábrica de NFTs, permitiéndote acuñar cualquier número de tokens.



Ver el Token en MetaMask

Si quieres que tu token aparezca en tu monedero MetaMask

  1. Ve a MetaMask
  2. Elige Importar tokens
    Elige Importar tokens
    
  3. 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
  4. Añade un Token Symbol
  5. Añade 0 como un decimal
  6. Clic Add Tokens
  7. Clic Import Tokens



Actualizado 03 Mar 2023
¿Esta página le fue útil?
Sí
No
ANTERIOR
Utilizando Sourcify
SIGUIENTE
Puente
Docs powered by archbee 
CONTENIDO
Resumen
🏁 Requisitos Previos
Tutorial | Acuña NFTs utilizando Hardhat
1. Crea un archivo mint.js en la carpeta de scripts
2. Crea una variable que represente el ABIde tu contrato
3. Añade a provider
4. Carga un archivo multimedia a IPFS
Ejemplo Utilizando NFT Storage
5. Crea el archivo de Metadatos de tu NFT
6. Carga tu archivo .env :
7. Configura el firmante y la cartera de  Ethers.js 
8. Configura el contrato  Ethers.js 
9. Construye la función main 
10. Llama mint.js
11. Busca tu implantación en el explorador de bloques de red de Palm
Utiliza tu contrato desplegado como fábrica de NFTs
Ver el Token en MetaMask