No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Desplegando nuestro smart contract en una blockchain de test (Rinkeby)

10/19
Recursos

Existen varias redes de pruebas en ETH, pero durante el tiempo, la comunidad las va deprecando para dar inicio a nuevas redes. En teor铆a, la forma en comunicarse con estas sigue siendo igual, es solo de estar pendientes a las noticias de cada una.

En este curso se muestra como crear una red de Test de Rinkeby usando Alchemy, pero tambi茅n hay otras opciones. Si en alg煤n momento, Rinkeby deja de funcionar o lo deprecan, tenemos otra opci贸n, la cual es Goerli.

Para poder solicitar fondos, podemos buscar en internet diferentes faucets, que nos permitir谩n obtener dichos fondos. Por ejemplo https://goerlifaucet.com/

La forma de hacer el despliegue del smart contract en hardhat deber铆a seguir siendo la misma, es solo cambiar la URL de la red Goerli que hayas creado.

Nunca pares de aprender, el mundo de la blockchain es muy volatil, hay que estar acostumbrado al cambio.

Aportes 10

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Para que cree el archivo abi

fs.copyFile('./artifacts/contracts/PlatziFood.sol/PlatziFood.json', '../web/utils/abi/PlatziFood.js', (err) => {
    if (err)
    console.log('Error Ocurred: ', err);
  });

Una alternativa de muchas a alchemy es
https://www.ankr.com/rpc/eth

hola como estan? si a alguno le sucede que al intentar descargar dotenv no le permitey le arroja el error ``npm ERR! code ENOTEMPTY npm ERR! syscall rename npm ERR! errno -39 `` solo tienen que cambiar el nombre de los archivos que indica a mi por ejemplo me pedia cambiarle el nombre a ``node\_modules/.aes-js-D7c1BI8k'`` por node\_modules/.aes-js' y el ``node\_modules/.ethers-6lZQk1pm`` a ``node\_modules/.ethers``
El fichero config.js se crea pero sin exportar el numero de contrato export const abiPlatziFoodAddress = "${platziFood.address}" Sabes alguien lo que ocurre y como se resuelve eso?

Nada desaparece de la Blockchain.

Si alguien quiere utilizar polygon con numbai:

require('@nomiclabs/hardhat-ethers');
require("dotenv").config();

module.exports = {
  solidity: "0.8.9",
  defaultNetwork: "matic",
  networks: {
    hardhat: {},
    matic: {
      url: process.env.STAGING_ALCHEMY_KEY,
      accounts: [process.env.PRIVATE_KEY]
    }
  }
};

Esta seria la configuracion para trabajar con la red sepolia

module.exports = {
  solidity: "0.8.18",
  defaultNetwork:"sepolia",
  networks:{
  hardhat:{
  },
  sepolia:{
    url: process.env.STAGGING_ALCHEMY_KEY,
    accounts:[process.env.PRIVATE_KEY]
  }
}
};

Resumen de la clase con la red de prueba Goerli

  • Lo primero ser谩 crear una cuenta en Alchemy, y crear una nueva aplicaci贸n. Elegir la red de prueba, en este caso Goerli.

  • Necesitamos guardar el key privado, en este caso elegimos el HTTP.

  • En el c贸digo instalamos dotenv con npm install dotenv 鈥攕ave.

  • Creamos un archivo .env en la raiz del proyecto en el que agregamos lo siguiente:

STAGING_ALCHEMY_KEY=https://eth-goerli.g.alchemy.com/v/xxxxxxxxxxxx
PRIVATE_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • El private key es la clave privada que encontramos en nuestra wallet, en este caso Metamask. Nos aseguramos que nos encontramos en Goerli o la red en la que queremos hacer el despliegue. Hacemos clic en 鈥detalles de cuenta鈥 y damos clic en 鈥Exportar clave privada鈥. Ponemos nuestra contrase帽a para poder visualizarla y una vez hecho esto ya podremos copiarla y pegarla en nuestro archivo .env.

  • Ahora necesitamos copiar la siguiente configuraci贸n en el archivo hardhat.config.js.

require('dotenv').config()

module.exports = {
  solidity: "0.8.17",
  defaultNetwork: "hardhat",
  networks: {
    hardhat: {
      chainId: 1337,
    },
    goerli: {
      url: process.env.STAGING_ALCHEMY_KEY,
      accounts: [process.env.PRIVATE_KEY]
    }
  }
};
  • Ahora vamos a hacer el despliegue, para ello vamos a la terminal y colocamos el siguiente comando:
npx hardhat run --network goerli scripts/deploy.js
  • Si nos da el mensaje 鈥淧latziFood deployed to: 0xFxxxxx鈥︹ ya esta desplegado.

  • Puedes verificarlo usando ese key en etherscan para buscar el bloque en el que se encuentra tu aplicaci贸n.

  • Cuando hacemos un despliegue de nuestros proyectos, nosotros necesitamos el address y el ABI (Aplication Binary interface), que nos permite interpretar el backend de nuestra aplicaci贸n, para poder comunicarnos con el Frontend.

.
__

.

  • Para hacerlo de una forma mas 谩gil y automatizada nosotros podemos hacer lo siguiente:

  • En la parte web (la parte del Frontend), vamos a crear la siguiente ruta: utils/abi/.

    • Si en este punto aun no tienes la carpeta web y quieres tenerla como en la clase, puedes simplemente en la terminal retroceder a antes de la carpeta contracts en la que esta alojado el proyecto, crear una carpeta mkdir web, cd web, y dentro ejecutar el comando npx create-next-app . y con eso tienes el proyecto como el profesor.
  • En el archivo scripts/deploy.js vamos a configurar la siguiente variable:

...
const fs = require("fs");
...

async function main() {
  ...
  let config = `
  export const abiPlatziFoodAddress = "${platziFood.address}"
  `;

  let data = JSON.stringify(config);
  fs.writeFileSync("../web/utils/config.js", JSON.parse(data));

	// modifique un poco las rutas para que se guarden 
	// correctamente en una ruta mas comoda
  fs.copyFile(
    './artifacts/contracts/PlatziFood.sol/PlatziFood.json', 
    '../web/utils/abi/PlatziFood.json', 
    (err) => {
      if (err) {
        console.log("Error ocurred: ", err);
      }
    }
  );
}
...

La configuraci贸n usando Goerli, en mi caso use un nodo de infura, pero funciona igual con alchemy

module.exports = {
  solidity: "0.8.17",
  defaultNetwork: "hardhat",
  networks: {
    hardhat: {
      chainId: 5,
    },
    goerli: {
      url: process.env.STAGING_INFURA_KEY,
      accounts: [process.env.PRIVATE_KEY],
    },
  },
};

https://hardhat.org/hardhat-chai-matchers/docs/migrate-from-waffle

para el que tenga el error:
You have both ethereum-waffle and @nomicfoundation/hardhat-chai-matchers installed. They don鈥檛 work correctly together, so please make sure youYou have both ethereum-waffle and @nomicfoundation/hardhat-chai-matchers installed