Exercício – Desenvolver uma lista de tarefas pendentes e implantar no desenvolvimento

Concluído

Neste exercício, você desenvolverá um gerenciador de tarefas. Você o usará para se conectar a redes de teste Ropsten e implantar nelas.

Na primeira parte do exercício, você se concentrará em criar o projeto, adicionar um contrato inteligente e implantar em uma rede de desenvolvimento.

Neste tutorial, você usará:

  • O Visual Studio Code para criar o projeto.
  • O Truffle compilar e implantar.
  • A CLI do Ganache como servidor de desenvolvimento do blockchain.

Criar um projeto do Truffle

  1. Em uma janela do prompt de comando ou em um terminal, crie um diretório chamado todolist inserindo mkdir todolist.

  2. Vá até o diretório recém-criado inserindo cd todolist.

  3. Inicialize o diretório como um projeto do Truffle inserindo truffle init.

  4. No Visual Studio Code, abra a pasta todolist.

  5. No Visual Studio Code, crie um arquivo no diretório de contratos. Dê a ele o nome TodoList.sol. No novo arquivo, adicione o código a seguir.

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

Migrar e implantar no desenvolvimento

  1. Crie uma migração para TodoList.sol na pasta migrations/. Comece criando um arquivo chamado 2_deploy_contracts.js. No arquivo, cole o código a seguir para implantar o contrato inteligente TodoList.

     var TodoList = artifacts.require("./TodoList.sol");
    
     module.exports = function(deployer) {
      deployer.deploy(TodoList);
     };
    
  2. No diretório principal do projeto, abra ./truffle-config.js. Remova a marca de comentário do código para implantar na rede de desenvolvimento, na porta do localhost 8545. Seu código deve ter a aparência a seguir.

     networks: {
       development: {
         host: "127.0.0.1",
         port: 8545,
         network_id: "*" // Match any network id
       }
     },
    
  3. Abra um painel do terminal no Visual Studio Code. Use a CLI do Ganache para iniciar um blockchain de desenvolvimento inserindo ganache-cli.

  4. No Visual Studio Code, abra um painel do terminal para compilar e migrar o contrato TodoList para a rede de desenvolvimento. Execute os seguintes comandos.

    • truffle compile
    • truffle migrate --reset

Essas etapas implantam os contratos inteligentes na rede de desenvolvimento. Neste ponto, use o console do Truffle para inspecionar e modificar os contratos inteligentes. Você verá que criou apenas uma tarefa ao inicializar a lista de tarefas.

No console do Truffle, você pode continuar interagindo com o contrato. Por exemplo, você pode criar e definir tarefas e alterar seu status.