Despliegue en redes de prueba (Ropsten, Rinkeby, Goerli)
El despliegue de contratos inteligentes en redes de prueba es una etapa crucial en el desarrollo de aplicaciones descentralizadas (dApps) utilizando Ethereum y Solidity. Las redes de prueba permiten verificar que el contrato funcione correctamente antes del despliegue en la red principal, evitando así pérdidas significativas de valor y asegurando un comportamiento esperado. Este punto cubrirá detalles profundos sobre cómo desplegar contratos en tres redes de prueba populares: Ropsten, Rinkeby y Goerli.
Configuración del entorno
Antes de desplegar el contrato en cualquier red de prueba, se necesita preparar el entorno. Esto incluye tener instalado Node.js, npm (Node Package Manager), Truffle (o Hardhat) y MetaMask (o cualquier otra billetera compatible con Ethereum).
Para comenzar, asegúrate de tener los siguientes componentes:
- Node.js y npm instalados.
- Truffle o Hardhat:
- Para Truffle, instala usando:
npm install -g truffle
- Para Hardhat, instala usando:
npm install --save-dev hardhat
Configuración de Truffle
Para este ejemplo, usaremos Truffle. Crear un nuevo proyecto de Truffle:
mkdir MyTruffleProject cd MyTruffleProject truffle init
Dentro de tu proyecto Truffle, crea un archivo Migrations.sol en la carpeta contracts con el contenido siguiente:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0
contract Migrations {
address public owner = msg.sender
uint public last_completed_migration
modifier restricted() {
require(
msg.sender == owner,
This function is restricted to the contracts owner
)
_
}
function setCompleted(uint completed) public restricted {
last_completed_migration = completed
}
}
Configuración de la red en Truffle
Edita el archivo truffle-config.js para agregar la configuración de las redes de prueba:
const HDWalletProvider = require(@truffle/hdwallet-provider)
const mnemonic = YOUR_METAMASK_MNEMONIC
module.exports = {
networks: {
ropsten: {
provider: () =>
new HDWalletProvider(mnemonic, https://ropsten.infura.io/v3/YOUR_INFURA_PROJECT_ID),
network_id: 3, // Ropstens id
gas: 5500000, // Ropsten has a lower block limit than mainnet
confirmations: 2, // # of confs to wait between deployments. (default: 0)
timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50)
skipDryRun: true // Skip dry run before migrations (default: false for public nets)
},
rinkeby: {
provider: () =>
new HDWalletProvider(mnemonic, https://rinkeby.infura.io/v3/YOUR_INFURA_PROJECT_ID),
network_id: 4, // Rinkebys id
gas: 5500000,
confirmations: 2,
timeoutBlocks: 200,
skipDryRun: true
},
goerli: {
provider: () =>
new HDWalletProvider(mnemonic, https://goerli.infura.io/v3/YOUR_INFURA_PROJECT_ID),
network_id: 5, // Goerlis id
gas: 5500000,
confirmations: 2,
timeoutBlocks: 200,
skipDryRun: true
}
},
compilers: {
solc: {
version: 0.8.0, // Fetch exact version from solc-bin (default: truffles version)
}
}
}
Nota: Reemplaza YOUR_METAMASK_MNEMONIC con la frase mnemónica de tu billetera MetaMask y YOUR_INFURA_PROJECT_ID con tu ID de proyecto Infura (puedes registrarte aquí para obtener uno).
Desplegar el contrato
Ahora, vamos a crear un archivo de migración en la carpeta migrations, llamado 2_deploy_contracts.js:
const Migrations = artifacts.require(Migrations)
module.exports = function (deployer) {
deployer.deploy(Migrations)
}
Finalmente, despliega el contrato en la red seleccionada. Por ejemplo, para Ropsten:
truffle migrate --network ropsten
Para Rinkeby:
truffle migrate --network rinkeby
Para Goerli:
truffle migrate --network goerli
Verificar el despliegue
Puedes verificar el despliegue usando Etherscan con la URL específica para cada red:
- Ropsten: https://ropsten.etherscan.io/
- Rinkeby: https://rinkeby.etherscan.io/
- Goerli: https://goerli.etherscan.io/
Ingresa la dirección del contrato desplegado y verifica las transacciones, el bytecode, y otros detalles.
Conclusión
Desplegar contratos en redes de prueba como Ropsten, Rinkeby y Goerli es esencial para comprobar el funcionamiento correcto antes de llevarlo a la red principal. Asegúrate siempre de seguir buenas prácticas de desarrollo, incluyendo el uso de redes de prueba y la verificación exhaustiva de contratos.

Deja una respuesta