Desplegando nuestro smart contract en una blockchain de test (Rinkeby)
Clase 10 de 19 • Curso de Arquitectura de Aplicaciones Descentralizadas en Ethereum
Contenido del curso
Clase 10 de 19 • Curso de Arquitectura de Aplicaciones Descentralizadas en Ethereum
Contenido del curso
Daniel Elías Ángel Barreto
Gerardo Lopez Falcon
Elías Ismael Pereyra Prando
Sergio Martinez Marin
Luca Cristian Manea
Alexka Lovera
Luca Cristian Manea
Gerardo Lopez Falcon
Milton Yesid Fernandez Gonzalez
Jesus Marquez Martini
Giuseppe Gattulli
Arturo Andrade
Oscar Riojas
Edgar Alfredo López Salero
Marco Fernando Agüero Barboza
Alejandro Soto Diaz
Mariano Villarreal
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); });
Si, en la siguiente clase se explica justo eso. Gracias por el aporte.
El segundo archivo también debe ser .json
Una alternativa de muchas a alchemy es https://www.ankr.com/rpc/eth
estoy intentando usar ankr con goerli pero no puedo fondear para hacer el dpeloy podrias darmeuna mano?
Hola, estoy haciendo el despliegue por Sepolia y me arroja el siguiente error: ```js
$ npx hardhat run --network sepolia scripts/deploy.js
Error: factory runner does not support sending transactions (operation="sendTransaction", code=UNSUPPORTED_OPERATION, version=6.8.0)
at makeError (C:\Users\Ale PC\Documents\Programacion\Proyectos\Hardhat\Contracts\node_modules\ethers\src.ts\utils\errors.ts:694:21)
at assert (C:\Users\Ale PC\Documents\Programacion\Proyectos\Hardhat\Contracts\node_modules\ethers\src.ts\utils\errors.ts:715:25)
at ContractFactory.deploy (C:\Users\Ale PC\Documents\Programacion\Proyectos\Hardhat\Contracts\node_modules\ethers\src.ts\contract\factory.ts:107:15)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at main (C:\Users\Ale PC\Documents\Programacion\Proyectos\Hardhat\Contracts\scripts\deploy.js:5:22) {
code: 'UNSUPPORTED_OPERATION',
operation: 'sendTransaction',
shortMessage: 'factory runner does not support sending transactions'
}
la red de rinkeby esta deprecada, intente con infura pero da error, alguien podria pasarme una testnet y configuracion de red valida?
usa Goerli. pronto en mi twitter haré un streaming al respecto
#platziehd
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] } } };
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/.
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