Ejercicio: Desarrollo de una lista de tareas pendientes e implementación en el desarrollo

Completado

En este ejercicio, va a desarrollar un administrador de tareas. Lo usará para conectarse a las redes de prueba de Ropsten y realizar la implementación en ellas.

En la primera parte de este ejercicio, se centrará en crear el proyecto, agregar un contrato inteligente y, después, implementarlo en una red de desarrollo.

Para este tutorial, usará lo siguiente:

  • Visual Studio Code para crear el proyecto.
  • Truffle para la compilación y la implementación.
  • La CLI de Ganache como el servidor de desarrollo de cadena de bloques.

Creación de un proyecto de Truffle

  1. En una ventana del símbolo del sistema o terminal, escriba mkdir todolist para crear un directorio con el nombre todolist.

  2. Escriba cd todolist para ir al directorio recién creado.

  3. Escriba truffle init para inicializar el directorio como un proyecto de Truffle.

  4. En Visual Studio Code, abra la carpeta todolist.

  5. En Visual Studio Code, cree un archivo en el directorio contracts. Asígnele el nombre TodoList.sol. En el archivo nuevo, pegue el código siguiente.

    // SPDX-License-Identifier: MIT
    pragma solidity >=0.4.22 <0.8.0;
    
    contract TodoList {
     uint public taskCount = 0;
    
     struct Task {
       uint id;
       string taskname;
       bool status;
     }
    
     mapping(uint => Task) public tasks;
    
     event TaskCreated(
       uint id,
       string taskname,
       bool status
     );
    
     event TaskStatus(
       uint id,
       bool status
     );
    
     constructor() public {
       createTask("Todo List Tutorial");
     }
    
     function createTask(string memory _taskname) public {
       taskCount ++;
       tasks[taskCount] = Task(taskCount, _taskname, false);
       emit TaskCreated(taskCount, _taskname, false);
     }
    
     function toggleStatus(uint _id) public {
       Task memory _task = tasks[_id];
       _task.status = !_task.status;
       tasks[_id] = _task;
       emit TaskStatus(_id, _task.status);
     }
    
    }
    

Migración e implementación en desarrollo

  1. Cree una migración para TodoList.sol en la carpeta migrations/. Empiece por crear un archivo llamado 2_deploy_contracts.js. En el archivo, pegue el código siguiente para implementar el contrato inteligente TodoList.

     var TodoList = artifacts.require("./TodoList.sol");
    
     module.exports = function(deployer) {
      deployer.deploy(TodoList);
     };
    
  2. En el directorio principal del proyecto, abra ./truffle-config.js. Quite la marca de comentario del código que se va a implementar en la red de desarrollo en el puerto 8545 de localhost. El código debe ser similar al siguiente.

     networks: {
       development: {
         host: "127.0.0.1",
         port: 8545,
         network_id: "*" // Match any network id
       }
     },
    
  3. Abra un panel de terminal en Visual Studio Code. En la CLI de Ganache, escriba ganache-cli para iniciar una cadena de bloques de desarrollo.

  4. En Visual Studio Code, abra un panel de terminal para compilar y realizar la migración del contrato TodoList a la red de desarrollo. Ejecute los comandos siguientes:

    • truffle compile
    • truffle migrate --reset

En estos pasos se implementan los contratos inteligentes en la red de desarrollo. En este momento, use la consola de Truffle para inspeccionar y modificar los contratos inteligentes. Verá que ha creado una sola tarea al inicializar la lista de tareas.

En la consola de Truffle, puede seguir interactuando con el contrato. Por ejemplo, puede crear y establecer tareas, y cambiar su estado.