Lição: 096: Usando Ganache para Blockchain Local
Nesta aula, vamos explorar o Ganache, uma ferramenta popular para desenvolver e testar contratos inteligentes no Ethereum em uma blockchain local pessoal. O Ganache fornece uma interface amigável e permite que os desenvolvedores implantem rapidamente contratos, gerenciem contas e testem transações sem a necessidade de um nó completo do Ethereum.
O que é Ganache?
O Ganache é parte do Truffle Suite, que é um conjunto de ferramentas para desenvolvimento no Ethereum. Ele cria um ambiente de blockchain local onde você pode implantar seus contratos, executar transações e inspecionar alterações de estado. O Ganache imita o comportamento da rede Ethereum, o que o torna perfeito para testes e desenvolvimento.
Como Começar com o Ganache
Primeiro, certifique-se de ter os seguintes pré-requisitos instalados em sua máquina:
-
Node.js – Verifique se você tem o Node.js instalado executando:
node -v
-
Truffle – Se você ainda não instalou o Truffle, pode fazê-lo usando o npm:
npm install -g truffle
-
Ganache – Você pode usar o Ganache CLI ou a aplicação desktop. Para esta aula, usaremos o Ganache CLI, que pode ser instalado globalmente com:
npm install -g ganache-cli
Iniciando o Ganache
Para iniciar o Ganache, basta executar o seguinte comando no seu terminal:
ganache-cli
Por padrão, isso iniciará uma blockchain Ethereum local em http://localhost:8545
com 10 contas pré-financiadas. Você pode ver suas contas e seus saldos no terminal.
Implantando um Simples Contrato Inteligente
Vamos criar um simples contrato inteligente e implantá-lo em nossa blockchain local do Ganache.
Etapa 1: Criar um Novo Projeto Truffle
-
Crie um novo diretório para o seu projeto e navegue até ele:
mkdir MeuProjetoContratoInteligente cd MeuProjetoContratoInteligente
-
Inicialize um novo projeto Truffle:
truffle init
Etapa 2: Escrever um Simples Contrato Inteligente
Crie um novo arquivo no diretório contracts
chamado SimpleStorage.sol
e adicione o seguinte código:
// 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;
}
}
Etapa 3: Criar um Script de Migração
O Truffle usa scripts de migração para implantar contratos. Crie um novo arquivo no diretório migrations
chamado 2_deploy_contracts.js
:
const SimpleStorage = artifacts.require("SimpleStorage");
module.exports = function (deployer) {
deployer.deploy(SimpleStorage);
};
Etapa 4: Configurar o Truffle
Abra o arquivo truffle-config.js
e configure-o para se conectar ao Ganache. Você pode usar a seguinte configuração:
const HDWalletProvider = require('@truffle/hdwallet-provider');
const Web3 = require('web3');
const provider = new HDWalletProvider(
'SUA_MNEMONICA', // Substitua pela sua frase mnemônica do Ganache
'http://127.0.0.1:8545' // Endpoint padrão do Ganache
);
const web3 = new Web3(provider);
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*",
},
},
compilers: {
solc: {
version: "0.8.0"
}
}
};
Substitua SUA_MNEMONICA
pela frase mnemônica fornecida pelo Ganache ao iniciar.
Etapa 5: Implantar o Contrato
Primeiro, certifique-se de que o Ganache está em execução. Em seguida, execute o seguinte comando para implantar seu contrato:
truffle migrate --network development
Você deve ver uma saída indicando que o SimpleStorage
foi implantado com seu endereço de contrato.
Etapa 6: Interagindo com o Contrato
Você pode interagir com o contrato implantado usando o Truffle Console. Inicie-o com:
truffle console --network development
Dentro do console, use os seguintes comandos:
const instance = await SimpleStorage.deployed();
// Defina um valor
await instance.set(42);
// Obtenha o valor
const value = await instance.get();
console.log(value.toString()); // Saída: 42
Conclusão
Nesta aula, você aprendeu como configurar o Ganache, implantar um simples contrato inteligente e interagir com ele usando o Truffle. O Ganache facilita a criação de uma blockchain local para desenvolvimento e testes, permitindo que você se concentre na construção de seus contratos inteligentes sem lidar com as complexidades de uma rede ao vivo.
Agora que você tem uma compreensão de como usar o Ganache, pode começar a explorar conceitos mais avançados, otimizações de desempenho e integrar com aplicativos front-end!