Esercizio - Sviluppare un elenco attività e distribuirlo nell'ambiente di sviluppo

Completato

In questo esercizio si svilupperà uno strumento di gestione attività. Lo si userà per la connessione e la distribuzione nelle reti di test Ropsten.

Nella prima parte di questo esercizio, ci si concentrerà sulla creazione del progetto, sull'aggiunta di un contratto intelligente e quindi sulla distribuzione in una rete di sviluppo.

In questa esercitazione si useranno:

Creare un nuovo progetto Truffle

  1. In un terminale o in una finestra del prompt dei comandi creare una nuova directory denominata todolist, immettendo mkdir todolist.

  2. Passare alla directory appena creata immettendo cd todolist.

  3. Inizializzare la directory come progetto Truffle immettendo truffle init.

  4. In Visual Studio Code aprire la cartella todolist.

  5. In Visual Studio Code creare un file nella directory contracts. Assegnargli il nome TodoList.sol. Nel nuovo file incollare il codice seguente.

    // 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);
     }
    
    }
    

Eseguire la migrazione e la distribuzione all'ambiente di sviluppo

  1. Creare una migrazione per TodoList.sol nella cartella migrations/. Per iniziare, creare un nuovo file denominato 2_deploy_contracts.js. Nel file incollare il codice seguente per distribuire il contratto intelligente TodoList.

     var TodoList = artifacts.require("./TodoList.sol");
    
     module.exports = function(deployer) {
      deployer.deploy(TodoList);
     };
    
  2. Nella directory principale del progetto aprire ./truffle-config.js. Rimuovere il commento dal codice per la distribuzione nella rete di sviluppo sulla porta localhost 8545. Il codice dovrebbe essere simile al seguente.

     networks: {
       development: {
         host: "127.0.0.1",
         port: 8545,
         network_id: "*" // Match any network id
       }
     },
    
  3. In Visual Studio Code aprire un riquadro del terminale. Usare l'interfaccia della riga di comando di Ganache per avviare una blockchain di sviluppo immettendo ganache-cli.

  4. In Visual Studio Code aprire un riquadro del terminale per eseguire la compilazione e la migrazione del contratto TodoList alla rete di sviluppo. Eseguire i comandi seguenti.

    • truffle compile
    • truffle migrate --reset

Questi passaggi distribuiscono i contratti intelligenti nella rete di sviluppo. A questo punto, usare la console di Truffle per analizzare e modificare i contratti intelligenti. Si noterà che si è creata una singola attività quando si è inizializzato l'elenco attività.

Nella console di Truffle è possibile continuare a interagire con il contratto. È ad esempio possibile creare e impostare attività e modificarne lo stato.