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
Tutoriales prácticos
...
Desplegar contratos NFT
Utilizando Hardhat

ERC-721

36min

Resumen

Pros

  • Permite la creación de múltiples tipos de tokens dentro de un mismo contrato
  • Admite tokens fungibles y no fungibles
  • Más eficiente y rentable para crear una amplia gama de NFTs

Cons

  • Sólo permite crear un único tipo de token
  • Ineficiente para crear múltiples tipos de NFT


🏁 Requisitos Previos

  • Utilizando Hardhat


Tutorial

1. Escribe tu contrato ERC-721

Utilizaremos un contrato basado en la [implementación ERC-721]() de la biblioteca OpenZeppelin.

a) Primero, instala la librería Open Zeppelin para heredar sus clases:

Shell
|
npm install @openzeppelin/contracts




b) A continuación, crea un archivo llamado NFT.sol dentro de la carpeta contracts.

Document image


c) Por último, añade el siguiente contrato inteligente al archivo NFT.sol .

Ten en cuenta que hemos llamado a nuestro contrato NFT, este puede ser cualquier nombre. El nombre será importante en el siguiente paso.



JS
|
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract NFT is ERC721 {
    constructor() ERC721("MyERC721", "M721") {}
}



2. Instala Hardhat Deploy



Shell
|
npm install -D hardhat-deploy



3. Instala una librería Ethereum

En este ejemplo, utilizaremos Ether.js

Shell
|
npm install --save-dev @nomiclabs/hardhat-ethers ethers@^5.0.0



4. Define variables de entorno con dotenv

  • Instala dotenv
Shell
|
npm install --save dotenv


Mantén tus Claves Privadas en Secreto

Las claves privadas deben ser mantenidas en secreto y no comprometidas en ningún repositorio de código. En el ejemplo de este tutorial, el archivo .env debe añadirse a su archivo .gitignore y mantenerse local. Por ejemplo, consulta la guía de MyCrypto Protégete a ti mismo y a tus fondos.



  • Crea un archivo .gitignore

Un gran ejemplo de un archivo Solidity .gitignore puede ser consultado aquí

Document image

  • Crea un archivo .env en el folder raíz de tu proyecto, y define variables de entorno en el archivo de la siguiente manera
PRIVATE_KEY = #La llave privada de la cuenta que pretendes utilizar en la red Palm INFURA_API_KEY = #Tu llave API Infura
Document image






5. Edita hardhat.config.js con el siguiente texto:

  • Puedes agregar campos compatibles adicionales en el archivo hardhat.config.js .
JS
|
require("dotenv").config()
require("@nomiclabs/hardhat-ethers")
require("hardhat-deploy")

const key = '';

module.exports = {
  solidity: "0.8.17",
  settings: {
    optimizer: {
      enabled: true,
      runs: 1000000,
    },
  },
  mocha: {
    timeout: 90000,
  },
  networks: {
    hardhat: {
      initialBaseFeePerGas: 0,
      blockGasLimit: 18800000,
    },
    palm_testnet: {
      url: `https://palm-testnet.infura.io/v3/${process.env.INFURA_API_KEY}`,
      accounts: [`0x` + process.env.PRIVATE_KEY],
      gasPrice: 1000,
      saveDeployments: true,
      deploy: ["scripts/"],
    },
    palm_mainnet: {
      url: `https://palm-mainnet.infura.io/v3/${process.env.INFURA_API_KEY}`,
      accounts: [`0x` + process.env.PRIVATE_KEY],
      gasPrice: 1000,
      saveDeployments: true,
      deploy: ["scripts/"],
    },
  },
  namedAccounts: {
    deployer: 0
  },
}






6. Compila tu Contrato

Para asegurarnos de que todo funciona hasta ahora, vamos a compilar nuestro contrato:

Shell
Example Response
|
Downloading compiler 0.8.6
Compiled 13 Solidity files successfully



7. Escribe un script de despliegue

a) Dirígete al folder scripts y crea un nuevo archivo llamado deploy_NFT.js

Document image


b) Agrega el código mostrado a continuación

JS
|
module.exports = async ({
    getNamedAccounts,
    deployments,
    getChainId,
    getUnnamedAccounts,
    }) => {
    const {deploy} = deployments;
    const {deployer} = await getNamedAccounts();

    console.log("Contract deployed to address:", deployer);

    // Deploy "NFT" if the contract was never deployed or if the code has changed since the last deployment
    await deploy('NFT', {
        from: deployer,
        gasLimit: 4000000,
        args: [],
        log: true,
    });
};



8. Despliega en el entorno de red Palm de destino

Palm Testnet
Palm Mainnet
Example log
|
Contract deployed to address: 0xeC1AFf99d2C331B226A5731B9555Af924932d629




  • TLDR; Cómo Funciona Esto
  • La tarea ejecutará los scripts en la carpeta scripts y guardará los despliegues del contrato en el disco. Cada despliegue se guarda en la carpeta deployments para la red específica.


9. Busca tu Despliegue en el Explorador de Bloques de Red de Palm



Red de prueba

Red principal

URL del explorador

https://explorer.palm-uat.xyz

https://explorer.palm.io

Pega la dirección de tu contrato en la barra de búsqueda.

Obtén la dirección de tu contrato de 2 maneras:

  • Console.log() output Contract deployed to address: contractNumber
  • En deployments/palm_testnet/NFT.json o deployments/palm_mainnet/NFT.json donde también encontrarás la información ABI (Application Binary Interface).



Verás algo parecido a esto una vez desplegado correctamente 👇

Document image



10. Verifica a través de Sourcify

Palm Testnet
Palm Mainnet
Example log
|
verifying NFT (0x776b8ea33195AA9166fF27C9965cCe7ae01B069F on chain 11297108109) ...
 => contract NFT is now verified

  • Utilizando Sourcify


Siguiente Paso 👉 Acuña tu NFT

Usando el Contrato Inteligente que acabas de desplegar ahora puedes Acuña NFTs con Hardhat

Actualizado 03 Mar 2023
¿Esta página le fue útil?
ANTERIOR
Utilizando Hardhat
SIGUIENTE
ERC-1155
Docs powered by
Archbee
CONTENIDO
Resumen
🏁 Requisitos Previos
Tutorial
1. Escribe tu contrato ERC-721
2. Instala Hardhat Deploy
3. Instala una librería Ethereum
4. Define variables de entorno con dotenv
5. Edita hardhat.config.js con el siguiente texto:
6. Compila tu Contrato
7. Escribe un script de despliegue
8. Despliega en el entorno de red Palm de destino
9. Busca tu Despliegue en el Explorador de Bloques de Red de Palm
10. Verifica a través de Sourcify
Siguiente Paso 👉 Acuña tu NFT
Docs powered by
Archbee