Interação entre Remix e Ganache

Caio Sá
GoBlockchain
Published in
6 min readNov 25, 2021

Artigo da série de como se tornar um desenvolvedor em blockchain.

Este é o terceiro artigo da série e é mais uma complementação do segundo do que um novo tema. Para ler este, não é necessário ter lido os outros, porque o que vamos aprender é bem fácil. Entretanto, é preciso ler os outros dois caso você queira realmente se tornar um desenvolvedor em blockchain.

Não usaremos o Geth hoje, apenas Remix e Ganache. Nosso objetivo é conectar a Ganache — que é um emulador de uma blockchain local — com o Remix — uma IDE que permite a criação de contratos e também que transações aconteçam numa determinada blockchain. A blockchain em questão será justamente a criada pelo Ganache.

Visite o site: https://www.trufflesuite.com/ganache para baixar a Ganache. O site reconhecerá o seu sistema operacional e dará a opção para que você baixe a Ganache.

Página Inicial da Truffle: Baixando Ganache

Clique em download para baixá-la e depois abra-a no seu computador. Uma tela como exibido na imagem abaixo aparecerá na sua tela. Para o presente momento, criaremos uma blockchain temporária, mas você pode criar uma permanente também ao clicar em New Workspace. Para criar uma temporária apenas para aprendermos a fazer a interação, clique em Quickstart como sinalizado abaixo:

Você vai perceber que uma lista de muitas contas vai aparecer na sua tela. Vamos analisar alguns elementos importantes:

Tela ao abrir a Ganache

Cada cor representa algo útil:

laranja: quantos blocos a nossa blockchain já possui.

verde: o endereço das contas.

azul: o saldo da conta.

vermelho: a chave privada da conta.

amarelo: o endereço que permite a blockchain ter comunicação com a rede.

Muito bom! Agora a tarefa é fazer transações usando estas contas. A primeira transação que faremos será a criação de um contrato, para que depois interajamos com ele.

Onde está o contrato? Como fazer tal transação de criação?

Agora é a hora que o Remix vem para brilhar!

Abra o Remix, clique em contracts e depois em no contrato 1_Storage.sol. Este contrato já está desenvolvido pelo Remix. Vamos apenas colocá-lo na nossa blockchain no Ganache e fazer transações com ele. Você pode criar seu próprio contrato no Remix também para fazer o processo que faremos adiante. Caso queira aprender a criar um contrato, há um excelente artigo aqui. No entanto, vou seguir adiante usando este contrato aqui mesmo para ganharmos tempo.

Depois basta clicar no segundo ícone no menu à esquerda para compilarmos o contrato:

O meu está com este check verde porque eu já o compilei. Para compilar, clique agora em compile como mostrado abaixo:

Compilando Smart Contract

Agora que nosso contrato está pronto para ser colocado na nossa blockchain, precisamos dizer ao Remix onde está e qual é nossa blockchain.

Clique no ícone de deploy e depois selecione Web3 Provider como mostrado acima. Estamos falando para o Remix que vamos fazer o deploy do nosso contrato e vamos fornecer a ele uma provedor Web3 — que nada mais é que fornecer o local onde nossa blockchain está.

Na sua Ganache, como mostrado em amarelo lá em cima, está o endereço que precisamos. Copie-o e cole-o aqui nessa janela que abre no Remix ao selecionarmos Web3 Provider.

Coloque o Endereço do RPC Server da Ganache

Depois de clicar em ok, olha só o que acontece:

Houve um sucesso! O Remix agora reconhece, em vermelho, o id da nossa blockchain no Ganache, assim como:

em verde: o endereço da nossa primeira conta da Ganache. Ao clicar na setinha ao lado do saldo, você vê que o Remix reconhece todas as contas da Ganahce, que obviamente, possuem mesmo endereço que as contas que foram criadas automaticamente pelo Ganache.

em azul: O balanço da conta selecionada.

em laranja: O nome do contrato o qual vamos fazer o deploy.

Clique em amarelo para fazer o deploy!

Contrato Criado com Sucesso!

Voltando na Ganache e indo no menu superior, podemos ver que em transactions há uma transação feita no primeiro bloco. Esta transação é justamente uma contract creation (criação de um contrato) na nossa blockchain. Algumas informações são mostradas, como o hash da transação (tx hash), qual o endereço que criou o contrato (from address) e o endereço criado do contrato criado (created contract address).

Voltando no Remix, podemos fazer uma transação de interação com o contrato.

Clique na setinha para baixo para que as funções do contrato sejam exibidas. Vou fazer o store do número 7888 (escolhi aleatoriamente). Lembrando que este contrato armazena um número por nós escolhido e também permite que qualquer pessoa resgata-o (retrieve) a fim de vê-lo. É um contrato bem simples e útil apenas para aprendizado. Depois de clicar em store e voltando no Ganache, vemos o seguinte:

Transação Utilizando Função do Contrato

Uma nova transação foi feita, adicionando um novo bloco, o bloco 2 (current block no canto superior esquerdo). O que aconteceu nessa nova transação? Nós armazenamos (store) a um número no contrato, pagando uma taxa pequena como incentivo para os mineradores validarem essa transação. Assim, supondo ser uma blockchain real, todos os outros computadores (nodes) da blockchain teriam a informação de que aquele contrato possui agora o número 78888. Voltando no Remix, podemos ver que o saldo de nossa conta diminuiu:

Agora o saldo não é mais 100 ETH devido à taxa paga. Se clicarmos em retrieve, veremos que nada será descontado como taxa, pois não fizemos uma alteração na blockchain fazendo com que todos os computadores da blockchain tivessem de alterar a cópia que possuem dela. Apenas lemos uma informação que está em um contrato da blockchain — o que é de graça pois não exige poder computacional de ninguém da blockchain.

É isso pessoal! Podem continuar interagindo com este contrato usando a mesma conta selecionada no Remix ou alternando contas. Vocês podem também usar um contrato próprio além deste fornecido pela Remix para brincar com o seu contrato.

Até a próxima! 🚀👋 👊

--

--

Caio Sá
GoBlockchain

Current Brazilian student of Machine Learning & Blockchain that loves math since High School competitions.