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 11

Preguntas 2

Ordenar por:

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

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

\#platziehd <https://sepolia.etherscan.io/address/0xf90E2b5d5E7D274bB438fAbB2Daa275443aE3804>
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 —save.

  • 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 “PlatziFood 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’t work correctly together, so please make sure youYou have both ethereum-waffle and @nomicfoundation/hardhat-chai-matchers installed