Implementación de un contrato inteligente en la red de prueba/principal mediante Truffle

Un contrato inteligente es un programa informático que controla directa y automáticamente la transferencia de activos digitales entre las partes bajo ciertas condiciones. Un contrato inteligente funciona de la misma manera que un contrato tradicional y también lo hace cumplir automáticamente. Los contratos inteligentes son programas que se ejecutan exactamente como están configurados (codificados, programados) por sus creadores. Al igual que un contrato tradicional es exigible por ley, los contratos inteligentes son exigibles por código.

Hasta este punto, tenemos nuestros contratos inteligentes escritos y compilados sin ningún error. Veamos cómo podemos implementar nuestro contrato inteligente en la red de prueba de rinkeby . Implementar un contrato en la string de bloques principal cuesta dinero (en forma de criptomoneda), por lo que tenemos redes de prueba para desarrollar y probar nuestros contratos inteligentes. En la red de prueba, se agregan éteres falsos a nuestra billetera para facilitar las transacciones. Una de esas redes proporcionada por Ethereum es Rinkeby.

Instalación de MetaMask

MetaMask proporciona soporte de navegador para comunicarse con redes blockchain. Podemos agregar una cuenta, obtener ethers a nuestra cuenta o enviar transacciones a otra cuenta. Es como una billetera desde donde podemos gastar nuestra criptomoneda. Para instalar metamask, 

  1. Vaya a https://metamask.io/ 
  2. Descárgalo en tu navegador.

Al comenzar por primera vez, para configurar su billetera, MetaMask le brinda una frase inicial de 12 palabras. Esta frase es única y puede usarse para restaurar su cuenta, en caso de que haya olvidado su contraseña.

Obtención de éteres de prueba

La implementación de contratos en la red de prueba requiere algunos éteres de prueba que, obviamente, no tienen ningún valor real. En la string de bloques, cada interacción con un contrato cuesta algunas tarifas (gasolina) y la interacción se conoce como transacción . Dado que implementar nuestro contrato en rinkeby también es una transacción, necesitamos algunos éteres de prueba para facilitar la transacción. Para obtener éteres de prueba, usaremos un Faucet.  Vaya a https://faucet.metamask.io/ y realice la sencilla tarea que se le solicita para obtener algunos éteres de prueba gratuitos. 

Crear punto final de Infura 

Necesitamos una API a través de la cual podamos acceder a la red rinkeby. Infura hace que sea bastante más fácil acceder a la red de prueba/principal y desplegar nuestro contrato en ellos. Cree un punto final infura en la red rinkeby. 

  • Vaya a infura.io y regístrese para obtener una cuenta si no tiene una.
  • Haga clic en Ethereum en el panel izquierdo.
  • Escriba el nombre de su proyecto y haga clic para crear el proyecto.
  • Esto debería crear un punto final para su proyecto y debería verse algo similar a lo que se muestra a continuación.

Ahora necesitamos un paquete npm HDWalletProvider , esto firma nuestra transacción y hace que el proceso de implementación sea menos doloroso. 

npm install @truffle/hdwallet-provider

Configuración de truffle-config.js e implementación en Rinkeby

Ahora tenemos nuestro proveedor de truffle hdWallet en nuestros módulos de Node, un punto final de la cuenta de infura y la frase semilla que hemos usado durante la instalación de MetaMask.

Configuremos nuestro truffle-config.js.  Abra truffle-config.js e importe el proveedor de truffle hdWallet en la parte superior.

const HDWalletProvider = require('truffle-hdwallet-provider');

Para configurar la red, editaremos la sección de red de truffle-config.js. Esto debería verse algo así.

const HDWalletProvider = require('truffle-hdwallet-provider');    // Useful for deploying to a public network.
    // NB: It's important to wrap the provider as a function.
    // ropsten: {
      // provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`),
      // network_id: 3,       // Ropsten's 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 )
    // },
  • Reemplace ropsten con rinkeby.
  • Mnemónico con frase semilla (obtenido de MetaMask).
  • https://ropsten.infura.io/v3/YOUR-PROJECT-ID con el punto final de infura que creó para su proyecto.
  • id_red:4,

Después de hacer estos cambios, su sección debería verse así.

 rinkeby: {
       provider: () => new HDWalletProvider(`YOUR_SEED_PHRASE`, `https://rinkeby.infura.io/v3/b63bffeec2e545f2a3e9b3e9423d6180`),
       network_id: 4,       // Ropsten's 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 )
     },

Guarde el archivo y luego abra la consola de truffle y luego migre en la red rinkeby.

truffle migrate --network rinkeby

Eso está todo hecho. Una vez que su contrato se implemente en rinkeby, puede verificar los detalles de la transacción en etherscan.  Vaya al enlace y copie y pegue su dirección de contrato implementada para obtener los detalles de su transacción.

Nota:

  1. Para implementar en la red principal, obtenga el punto final de infura para la red principal y configure el archivo de configuración.
  2. Reemplace rinkeby con main y la identificación de red con 1.
  3. Luego , truffle migre –network main.

Publicación traducida automáticamente

Artículo escrito por ayush0x00 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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