Despliegue en la red principal de Ethereum
El despliegue de contratos inteligentes en la red principal de Ethereum es un paso crítico en el ciclo de vida del desarrollo en blockchain. A diferencia de las redes de prueba (testnets), la red principal (mainnet) es donde los contratos inteligentes interactúan con activos reales y usuarios finales, lo que aumenta la importancia de las garantías de seguridad y exactitud.
Preparativos preliminares
-
Auditoría del código: Asegúrate de que tu contrato ha sido exhaustivamente revisado y auditado. Los errores en la mainnet pueden resultar en la pérdida de activos reales.
-
Conexión a la red principal: Para interactuar con la red principal necesitas un nodo o un proveedor de servicios de nodo como Infura.
-
Dispone de ETH: Desplegar un contrato en la red principal requiere Ether (ETH) para pagar las tarifas de gas.
Paso a paso para desplegar
1. Configuración del suministro
Usaremos Truffle para este ejemplo, un entorno de desarrollo blockchain. Primero, hay que instalar Truffle y configurar el archivo truffle-config.js
para la red principal.
// Instala Truffle y HDWalletProvider npm install -g truffle npm install @truffle/hdwallet-provider
A continuación, crea o modifica el archivo truffle-config.js
para añadir los detalles de la red principal.
const HDWalletProvider = require(@truffle/hdwallet-provider) const infuraKey = TU_INFURA_KEY const mnemonic = twelve word mnemonic module.exports = { networks: { mainnet: { provider: () => new HDWalletProvider(mnemonic, https://mainnet.infura.io/v3/{infuraKey}), network_id: 1, // Mainnet ID gas: 5500000, // Establece el límite de gas gasPrice: 20000000000 // 20 Gwei } }, // Configuración para solidity compilers: { solc: { version: 0.8.0, // Versión específica del compilador } } }
2. Escribir y compilar contrato
Escribe tu contrato en un archivo con extensión .sol
. Aquí hay un ejemplo simple de un contrato de token ERC20:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0 import @openzeppelin/contracts/token/ERC20/ERC20.sol contract MyToken is ERC20 { constructor(uint256 initialSupply) ERC20(MyToken, MTK) { _mint(msg.sender, initialSupply) } }
Compila el contrato usando el comando de Truffle:
truffle compile
3. Escribir script de migración
Crea un archivo de migración en el directorio migrations
para desplegar el contrato en la red principal.
const MyToken = artifacts.require(MyToken) module.exports = async function(deployer) { const initialSupply = web3.utils.toWei(1000, ether) await deployer.deploy(MyToken, initialSupply) }
4. Despliegue en la red principal
Ejecuta el siguiente comando para desplegar el contrato en la red principal:
truffle migrate --network mainnet
Seguridad y verificación
Una vez desplegado el contrato, es recomendado verificar el código fuente en Etherscan para proporcionar transparencia y permitir a otros interactuar con tu contrato con confianza.
Ejemplo práctico
A continuación, un ejemplo completo que integra todos los pasos descritos:
// Truffle configuration (truffle-config.js) const HDWalletProvider = require(@truffle/hdwallet-provider) const infuraKey = YOUR_INFURA_KEY const mnemonic = twelve word mnemonic module.exports = { networks: { mainnet: { provider: () => new HDWalletProvider(mnemonic, https://mainnet.infura.io/v3/{infuraKey}), network_id: 1, gas: 5500000, gasPrice: 20000000000 } }, compilers: { solc: { version: 0.8.0, } } } // Solidity contract (contracts/MyToken.sol) // SPDX-License-Identifier: MIT pragma solidity ^0.8.0 import @openzeppelin/contracts/token/ERC20/ERC20.sol contract MyToken is ERC20 { constructor(uint256 initialSupply) ERC20(MyToken, MTK) { _mint(msg.sender, initialSupply) } } // Migration script (migrations/2_deploy_contracts.js) const MyToken = artifacts.require(MyToken) module.exports = async function(deployer) { const initialSupply = web3.utils.toWei(1000, ether) await deployer.deploy(MyToken, initialSupply) } // Deployment command // truffle migrate --network mainnet
Siguiendo estos pasos podrás desplegar con éxito tu contrato en la red principal de Ethereum.
Deja una respuesta