Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Implementación del ERC721 de Open Zeppellin

13/23
Recursos

Aportes 6

Preguntas 15

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta 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");
  });
});

Si te da undefined el address usa:

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

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);
    }
})()