truffle ganache nodejs

Entorno de prueba blockchain con truffle ganache Nodejs: sesión 1

Si estás iniciando en la programación blockchain, es demasiado importante conocer los entornos de prueba primero que producción y para esto debes usar truffle ganache Nodejs. Estas herramientas en conjunto permitirán la correcta implementación de cualquier tipo de contrato inteligente dentro de la red de ethereum, tanto de prueba como producción.

Lo que vas a necesitar

Aquí dejo los enlaces que menciono en el video que vas a necesitar:

  • Repositorio: haz click aquí para ver el repositorio en github. Recuerda ver los commits para posicionarte en la sesión que deseas ver.
  • Truffle: haz click aquí para ver la web de truffle y documentación.
  • Ganache: haz click aquí para descargar el programa para tu mac o pc.

Qué es y cómo usar Truffle

truffle
crear contrato solidity
Cómo crear contrato solidity: lotería en ethereum

En esta tercera sesión del curso veremos cómo crear contrato solidity para ethereum con base en una …

Qué es Gas y GasPrice: transacciones y congestión en blockchain

Cuando ejecutamos transacciones en blockchain es probable que desconozcamos los costos o tiempos de …

truffle ganache nodejs
Entorno de prueba blockchain con truffle ganache Nodejs: sesión 1

Si estás iniciando en la programación blockchain, es demasiado importante conocer los entornos de pr…

Para iniciar debemos conocer qué es truffle y cómo funciona en sus primeros pasos. Truffle es un framework de desarrollo que proporciona una serie de herramientas para facilitar el desarrollo, prueba y despliegue de contratos inteligentes en Ethereum. En sí es la herramienta principal sobre la cual vamos a trabajar, crear, conectar y modificar nuestros contratos inteligentes.

Ahora hay varios métodos para instalarlo pero recordemos que este curso consta de usar react y nodejs por ende, se debe instalar en nuestro aplicativo de node js. Si estás usando el respositorio del curso, basta con instalar todos los paquetes desde el inicio y esté se instalará. Si no puedes ejecutar el comando:

npm install -g truffle

al instalar puedes verificar que si esté instalado, solicitando la versión de truffle:

truffle version

Crear contratos inteligentes

contrato inteligente

Los contratos inteligentes dentro del uso de truffle tienen tanto un orden de ejecución como un orden de creación y para esto, el primer contrato que se debe crear es Migrations.sol. Cabe resaltar que los contratos están creados en el lenguaje Solidity, pero hablaré de este a fondo en las siguientes sesiones, por ahora solo copiaremos este.

El contrato Migrations es uno predeterminado para el uso de truffle, es decir: genera un costo al implementar, es obligatorio usarlo y no se puede quitar. Así mismo funciona para darle un orden a las migraciones y cuidar el proceso, entre otros. Yo no recomiendo modificarlo ni tampoco omitirlo de las ejecuciones ya que puede causar errores. Solo crea un archivo, copia y pega:

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.19;
// la función principal de este contrato es rastrear el estado de las migraciones realizadas en el proyecto. Cada vez que se ejecuta una migración de Truffle, se actualiza el estado en este contrato.

contract Migrations {
  address public owner;
  uint public last_completed_migration;

  constructor(){ owner = msg.sender; } // establece la dirección que interactúa con el contrato, como PROPIETARIO

  modifier restricted() { if (msg.sender == owner) _; } // Restringe el acceso a las funciones marcadas con  "restricted", donde solo pueden ejecutarse si es "owner" quien lo hace.

  function setCompleted(uint completed) public restricted { last_completed_migration = completed; }

  function upgrade(address new_address) public restricted {
    Migrations upgraded = Migrations(new_address);
    upgraded.setCompleted(last_completed_migration);
  }
}

Ahora el segundo contrato que crearemos se llamará ContratoCurso.sol, en este vivirá el contrato que vamos a crear y aprender sobre la marcha, pero justamente para conocer esta primera sesión necesitamos crearlo así sea en su forma más básica así que puedes copiar y pegar:

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.19;

contract ContratoCurso {
    string public name;
}

En este solo creamos una variable y listo.

Crear migraciones de contratos

migraciones

Una vez creados los contratos, debemos ahora crear un folder de migraciones el cual contendrá el orden sobre el cual se ejecutarán las migraciones. Por esto los archivos se deben enumerar. El primero que crearemos se llamará: 1_initial_migration.js y dentro de este copiaremos y pegaremos:

const Migrations = artifacts.require("Migrations");

module.exports = async function(deployer) {
  try{
    await deployer.deploy(Migrations);
  } catch(error){
    console.error("error deploying Migrations: ", error);
    throw error;
  }
};

Este es el primer archivo de migración el cual ejecutará primero el contrato Migrations.sol. Nuevamente lo menciono: esto es predeterminado, no hay necesidad de modificar. La modificación como tal inicia en ContratoCurso.sol. Ahora el siguiente paso es crear el archivo: 2_deploy_contracts.js y pegamos:

const ContratoCurso = artifacts.require("ContratoCurso");

module.exports = async function(deployer) {
  try {
    await deployer.deploy(ContratoCurso);
  }catch (error) {
    console.error("Error deploying ContratoCurso:", error);
    throw error;
  }
};

Este segundo ejecuta o implementa los contratos que creamos aparte de migrations, solo se deben solicitar y listo!

Archivo Truffle-config.js

truffle config

Para finalizar con truffle y pasar a ganache, debemos crear el archivo de configuración el cual contendrá aspectos demasiado importantes como:

  • Redes de prueba y producción para ejecutar contratos.
  • Directorio donde se guardan los contratos
  • Directorio donde se guardan los archivos json de construcción (abis).
  • Versión que se usará de solidity.

Para esto, para iniciar copiamos y pegamos:

require('babel-register');
require('babel-polyfill');

module.exports = {
    networks: {
        // conexión de ganache
        development: {
            host: "127.0.0.1",
            port: 7545,
            network_id: "*" // conecta con cualquier red
        }
    },
    contracts_directory: './contratos/',
    contracts_build_directory: './abis/',
    compilers: {
        solc: {
          version: "0.8.19",
          optimizer: {
            enabled: true,
            runs: 200
          }
        }
    }
}

Por defecto en las ejecuciones, primero se hará sobre la red development, entonces aquí configuramos ganache. Tal cual, no debemos cambiar nada ya que son datos predeterminados del programa. Así mismo asignamos la ubicación de donde están los contratos que cremos, y el folder de build, se crea solo cuando compilamos la primera vez.

Qué es y cómo usar Ganache

ganache

Ahora para iniciar debemos entender qué es y para qué sirve ganache. Ganache es una blockchain personal para el desarrollo de Ethereum que se ejecuta localmente en tu máquina. Ganache te permite simular el comportamiento de una red Ethereum completa, pero de forma local y privada.

Si o si necesitaremos una red para poder desplegar nuestros contratos y ganache justamente nos presta este servicio totalmente de pruebas, lo cual ayudará bastante a entender cómo funciona cuando estemos en producción.

Primero debemos instalar el programa en nuestra mac o pc. Al inicio del post dejé el enlace para descargar. Una vez instalado podemos proceder a abrir y crear un nuevo espacio de trabajo. Puedes poner el nombre que desees.

Una vez seleccionado el nombre debemos añadir el proyecto entonces, buscaremos en nuestro computador la ubicación del archivo truffle-config.js y lo seleccionaremos. Como lo mencioné anteriormente, esta es la conexión entre ambos programas así que debemos hacerlo con cuidado.

Una vez seleccionado ya podemos iniciar a despegar nuestros contratos!

Compilar y Migrar contratos inteligentes con Truffle y ganache

En este punto debemos tener abierto ganache ya que es nuestra blockchain en vivo pero localmente. Ahora en la terminal vamos a ejecutar:

truffle compile

al ejecutar vamos a ver inmediatamente que se crea el folder abis. Este no debemos modificarlo manuelmente, se crea automáticamente y se modifica igual. Ahora vamos a ejecutar:

truffle migrate

Al hacerlo vamos a ver en la consola toda la información referente a cada contrato y en el orden mencionado anteriormente. De esta manera hemos finalizado con la implementación de ambos contratos correctamente y en el orden indicado!

Video de ayuda

Hice este video para ayudar en el proceso pero también recuerda que todo el curso podrás verlo sin problema y totalmente gratuito!

Entorno de pruebas blockchain con truffle y ganache

Producto sugerido

Si eres como yo que pasa bastatne tiempo frente al compu, puede que la barra de luz te sirva bastante para cuidar tu vista en esas largas jornadas. También te dejo aquí el post para que veas la reseña completa.

LAMPARA – 4528 valoraciones

Quntis Lámpara para monitor de computadora, barra de luz para monitor de pantalla para el cuidado de los ojos, lámpara de tareas LED de lectura electrónica con atenuación automática, barra de lámpara regulable, control táctil, sin deslumbramiento de pantalla, ahorro de espacio, lámparas de escritorio para oficina en casa

  • Sin reflejos de pantalla y sin parpadeo, antiluz azul: la barra de luz para monitor de computadora Quntis tiene un diseño óptico asimétrico único que ilumina solo tu escritorio y teclado mientras garantiza que no se reflejen en la pantalla. Gracias a su avanzado sistema de protección ocular, nuestras lámparas de escritorio para oficina en casa bloquean la luz azul y la radiación óptica, aliviando eficazmente la fatiga ocular para proteger tus ojos. Es la opción ideal para estudiantes, diseñadores de pintura y trabajadores de oficina de negocios.

VER EN AMAZON

Conclusión

En esta primera sesión vemos cómo implementar un entorno de pruebas para nuestro programa con blockhain. Aunque no entramos en materia a modificar el contrato principal, es imporante conocer estos primeros pasos para ver que debemos modificar a futuro y en donde, justamente cuando pasemos a producción.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

Resumen
Entorno de prueba blockchain con Truffle y Ganache
Nombre del artículo
Entorno de prueba blockchain con Truffle y Ganache
Descripción
Si estás iniciando en la programación blockchain haz click para conocer el entorno de prueba con truffle ganache nodejs ✅
Autor
Publisher Name
Eduardo Arias
Publisher Logo

Deja un comentario

Carrito de compra