10.3 Simulación de contratos con Ganache

Punto del Curso de Solidity: 10.3 Simulación de contratos con Ganache

En esta sección del curso, nos enfocaremos en cómo simular contratos inteligentes utilizando Ganache. Ganache es una herramienta muy popular utilizada por los desarrolladores de Ethereum para crear una cadena de bloques personal en sus máquinas. Esta herramienta permite ejecutar, desplegar y probar contratos inteligentes de manera rápida y segura sin la necesidad de interactuar con la red principal de Ethereum.

¿Qué es Ganache

Ganache es una herramienta proporcionada por Truffle Suite que simula una cadena de bloques de Ethereum en su máquina local. Esto les permite a los desarrolladores probar sus contratos y aplicaciones sin necesidad de esperar ni gastar Ether real. Ganache proporciona funcionalidades esenciales como:

  • Creación de cuentas con Ether simulado.
  • Explorador de bloques para una mejor comprensión y análisis.
  • Personalización de los parámetros de la red, como el tiempo de bloque.
  • API JSON RPC compatible con Ethereum para interactuar con la cadena de bloques simulada.

Instalación de Ganache

Para usar Ganache, primero debemos instalarlo. Ganache está disponible como una aplicación de escritorio y también como una herramienta de línea de comandos. Aquí, procederemos con la instalación de la aplicación de escritorio de Ganache:

  1. Visita el sitio web de Truffle Suite: https://www.trufflesuite.com/ganache
  2. Descarga la versión correspondiente a tu sistema operativo (Windows, macOS, Linux).
  3. Instala la aplicación siguiendo las instrucciones en pantalla.
  4. Inicia Ganache.

Configuración de Ganache

Primero, abramos Ganache y creemos un nuevo entorno de trabajo (workspace). Ganache generará una cadena de bloques personalizada con un conjunto de cuentas predefinidas que tienen una cantidad inicial de Ether. Cada cuenta tiene una clave privada asociada, lo que le permite firmar transacciones y contratos.

El siguiente paso será crear un nuevo proyecto de Truffle y desplegar un contrato sencillo en nuestra red simulada usando Ganache.

Ejemplo de Contrato: SimpleStorage

Crearemos un contrato sencillo llamado SimpleStorage que permitirá guardar un valor entero y leerlo posteriormente. Aquí está el código del contrato en Solidity:

        // SPDX-License-Identifier: MIT
        pragma solidity ^0.8.0

        contract SimpleStorage {
            uint256 private storedData

            function set(uint256 x) public {
                storedData = x
            }

            function get() public view returns (uint256) {
                return storedData
            }
        }
    

Desplegar el Contrato con Truffle

Truffle es un entorno de desarrollo para Ethereum que facilita la creación, despliegue y prueba de contratos inteligentes. Aquí están los pasos para desplegar el contrato con Truffle:

  1. Instalar Truffle globalmente si no está instalado:
  2.             npm install -g truffle
            
  3. Inicializar un nuevo proyecto de Truffle:
  4.             mkdir SimpleStorageProject
                cd SimpleStorageProject
                truffle init
            
  5. Agregar el contrato SimpleStorage.sol en la carpeta contracts del proyecto.
  6. Crear un nuevo archivo de migración en la carpeta migrations (por ejemplo, 2_deploy_contracts.js):
  7.             const SimpleStorage = artifacts.require(SimpleStorage)
    
                module.exports = function (deployer) {
                    deployer.deploy(SimpleStorage)
                }
            
  8. Configurar Truffle para que se conecte a Ganache. Modificar el archivo truffle-config.js para incluir lo siguiente:
  9.             module.exports = {
                    networks: {
                        development: {
                            host: 127.0.0.1,
                            port: 7545, // Port donde corre Ganache por defecto.
                            network_id:  // Cualquier network ID (Ganache usa 5777 por defecto).
                        }
                    },
                    compilers: {
                        solc: {
                            version: 0.8.0
                        }
                    }
                }
            
  10. Desplegar el contrato en la red simulada de Ganache:
  11.             truffle migrate
            

Interacción con el Contrato

Una vez que el contrato ha sido desplegado, podemos interactuar con él utilizando la consola de Truffle o a través de scripts. Aquí mostramos cómo interactuar con el contrato usando la consola de Truffle:

        truffle console
    

Dentro de la consola de Truffle, podemos ejecutar los siguientes comandos:

        // Obtener la instancia del contrato desplegado
        SimpleStorage.deployed().then(function(instance) { app = instance })

        // Llamar a la función set
        app.set(42)

        // Llamar a la función get y obtener el valor almacenado
        app.get().then(function(value) { console.log(value.toString()) })
    

Resumen

Ganache es una herramienta invaluable para el desarrollo local de contratos inteligentes y aplicaciones descentralizadas en Ethereum. Junto con Truffle, permite un flujo de trabajo de desarrollo eficiente, desde la escritura de contratos hasta su despliegue y pruebas. En esta sección, hemos cubierto cómo configurar Ganache, escribir un contrato sencillo y desplegarlo usando Truffle. Ahora estás listo para simular y probar contratos propios en Ganache.

AnteriorSiguiente

[mwai_chat]

Deja una respuesta

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