13.3 Despliegue en la red principal de Ethereum





Despliegue en la red principal de Ethereum

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

  1. 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.

  2. Conexión a la red principal: Para interactuar con la red principal necesitas un nodo o un proveedor de servicios de nodo como Infura.

  3. 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.


AnteriorSiguiente

[mwai_chat]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *