No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Implementación del ERC721 de Open Zeppellin

14/24
Recursos

Aportes 11

Preguntas 17

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

scripts/deploy.js

Script comentado

// deplaoy es una función asincrona
const deploy = async () => {
  // getSigners() trae la información que traemos desde nuestra llave privada
  // deployer es un objeto que nos permite desplegar contratos a la red que tengamos configurada
  const [deployer] = await ethers.getSigners();

  console.log("Deploying contract with the account:", deployer.address);

  // Definimos PlatziPunks en el contexto
  const PlatziPunks = await ethers.getContractFactory("PlatziPunks");
  // Instancia del contracto desplegado
  const deployed = await PlatziPunks.deploy();

  console.log("Platzi Punks is deployed at:", deployed.address);
};

// Llamando la función deploy()
deploy()
  .then(() => process.exit(0))
  .catch((error) => {
    console.log(error);
    process.exit(1);
  });

Tenia un error el cual me decia que la funcion getSigners no es una funcion

cambie el require de ethers a hardhat y funciono !!!

{ethers} = require("hardhat)

Un pequeño test para la instancia de Platzi Punks, lo que no pude lograr fue testear que la
instancia efectivamente sea de tipo ERC721

const { expect } = require("chai");
const { ethers } = require("hardhat");

describe("PlatziPunks", function () {
  it("Should init contract with name and symbol", async function () {
    const PlatziPunks = await ethers.getContractFactory("PlatziPunks");
    const platzi_punks = await PlatziPunks.deploy();
    await platzi_punks.deployed();

    expect(await platzi_punks.name()).to.equal("PlatziPunks");
    expect(await platzi_punks.symbol()).to.equal("PLPKS");
  });
});

En caso les de un error HH702 a mi me funcionó borrar la cache escribiéndo ésto en la consola:

npx hardhat clean ; npx hardhat compile

Si te da undefined el address usa:

const [account] = await ethers.getSigners();
console.log(
  "Deploying contract with the account", 
  account.address
);

0:35 Es muy importante que estos no puedan se Hackeados.

Creo que eso aplica en general en el desarrollo de soluciones de software y sistemas.

PlatziPunks.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

contract PlatziPunks is ERC721 {
  // El constructor necesita dos parámetros, el nombre y la sigla del NFT.
  constructor() ERC721("PlatziPunks", "PLPKS") {}
}

Hice una pequeña refactorización del script deploy.js:

(async function deploy() {
    const contractName = "PlatziPunks";
    try {
        const [account] = await ethers.getSigners();
        console.log("Deploying contract with the account:", account.address);
        const contractFactor = await ethers.getContractFactory(contractName);
        const contract = await contractFactory.deploy();
        console.log(`${contractName} has been deployed at: ${contract.address}`)
        process.exit(0);
    } catch (error) {
        console.log("Error: ",`An error occurred, the contract ${contractName} could not be deployed \n ${error.stack}`);
        process.exit(1);
    }
})()

Para hacer el deploy tienen que abrir primero una terminal corriendo hardhat

npx hardhat node

Y en otra terminal correr:

npx hardhat run --network sepolia scripts/deploy.ts

Si les da error H700 revisen que dentro del contrato tambien tenga el mismo nombre.

Documentación para profundizar en los scripts usados en deploy.js 1.- process.exit(0) & process.exit(1) 2.- la función hh.ethers.getSigners() 3.- la función hh.ethers.getContractFactory('cotractFileName') 4.- el metodo X.getContractFactory('contracto').deploy()