WEB3DEV

Cover image for Desenvolvendo para o Ethereum: Começando com Ganache
Rafael Ojeda
Rafael Ojeda

Posted on • Atualizado em

Desenvolvendo para o Ethereum: Começando com Ganache

Desenvolvendo para o Ethereum: Começando com Ganache

Image description

Remix - a IDE baseada no navegador para escrever e distribuir o código de Solidity para a blockchain Ethereum - está bem e tudo, mas pode ser lento de se desenvolver. É um sistema baseado em navegador e, como tal, o uso de ferramentas é limitado.

Ao trabalhar com código EVM (Ethereum Virtual Machine) que vai acabar em produção, você vai precisar de herança, testes, auto-completação, ferramentas de ajuda como linters e validadores e muito mais. Isto é algo em que a Remix não pode ajudar (facilmente). E se você pudesse ter seu próprio ambiente privado para brincar onde não se pode quebrar nada e ao mesmo tempo poder conectar qualquer ferramenta externa a este ambiente?

Entre em Ganache.

Ganache

Ganache, anteriormente Testrpc, é uma blockchain virtual que configura 10 endereços Etheruem padrão, completos com chaves privadas e tudo, e os pré-carrega com 100 Ether simulados cada um. Não há "mineração" por si só com Ganache - ao invés disso, confirma imediatamente qualquer transação que venha a caminho. Isto torna possível o desenvolvimento iterativo - você pode escrever testes unitários para seu código que executam nesta blockchain simulada, implantar contratos inteligentes, brincar, chamar funções e depois rasgar tudo para novas simulações ou novos testes, devolvendo todos os endereços ao seu estado inicial de 100 Ether.

Ganache vem em dois sabores: CLI e UI. Você pode decidir qual deles deseja baixar em sua página de download. Minha recomendação é a versão UI puramente devido à simplicidade.

Quando você ativar a versão, ela será enviada por padrão para uma determinada porta e endereço IP. Normalmente para a versão UI (que eu assumirei que estamos usando ao longo do resto deste post) é localhost:7545 ou 127.0.0.1:7545 enquanto a versão CLI tende a ir com a porta 8545.

Uma vez executado o Ganache, você deve ver uma tela como esta:

Image description

Observe que existem vários endereços com 100 Ether cada um.

Ao executar Ganache, você tem efetivamente seu próprio de Ethereum funcionando. É um nó virtual, claro, mas é usado da mesma forma que qualquer nó real e isso significa que você pode se conectar a ele com carteiras como MyEtherWallet ou até mesmo com carteiras de navegador como MetaMask. Vamos nos conectar a cada um e depois enviar o Ether de um para o outro.

Como conectar a MetaMask a Ganache

Se você não está familiarizado com a MetaMask, recomendo a leitura desta introdução. A TL;DR dela é que a MetaMask é uma extensão do Chrome (ou plugin nativo se você estiver usando o navegador Brave que pode se conectar aos nós remotos do Ethereum e ler as carteiras dos usuários. Isto permite efetivamente usar o Ethereum a partir do navegador.

Ao instalar a MetaMask pela primeira vez, você precisará aceitar alguns termos e condições e, em seguida, inserir uma senha.

Image description

Esta senha criptografará suas carteiras para que toda vez que você acessar a MetaMask (que pode ter quantas carteiras você desejar) você precise digitar isto antes que ela permita que você as utilize.

Em seguida, você receberá algumas palavras-chave. Estas palavras devem ser guardadas em um lugar seguro - de preferência, anotadas e colocadas em uma gaveta ou em um cofre. Um computador é sempre hackeável, portanto, ou armazene as palavras offline ,ou comprometa-se a nunca ter fundos importantes na MetaMask.

Estas palavras são derivadas de uma chave privada e sua combinação sempre produz essa chave quando puxada através de um algoritmo específico. Sua senha digitada anteriormente é efetivamente outra palavra, portanto uma combinação dessas palavras MAIS sua senha é necessária para desbloquear as carteiras. A única maneira de acessar uma carteira diretamente sem uma senha é acessando sua chave privada - algo que veremos mais tarde.

Uma vez que você tenha passado por este processo, a MetaMask abrirá sua primeira carteira auto-gerada. Ela será chamada de Conta 1.

Image description

Nota: A MetaMask está fazendo a transição para uma nova interface de usuário em breve. Ative-a agora, indo para TRY BETA no menu!

Image description

No entanto, não nos importamos muito com esta conta. Queremos usar nossas carteiras de Ganache para enviar o Ether simulado!

Lembra-se do IP e da porta acima mencionados que Ganache seleciona ao iniciar? No meu caso é 127.0.0.1 (também conhecido como localhost) e porta 7545:

Image description

Posso usar estas informações para conectar a MetaMask a Ganache. Na MetaMask, acima da "Account 1", há um menu suspenso que atualmente diz "Main Ethereum Network":

Image description

Clique nele, selecione RPC personalizado, e depois em New RPC URL input http://127.0.0.1:7545, depois clique em Save.

Image description

Você pode clicar em X então para fechar essa aba, e você notará que a nova rede aparece no menu suspenso agora.

Image description

Finalmente, vamos carregar uma das carteiras de Ganache em nossa MetaMask.

Clique no ícone colorido do avatar (canto superior direito) e depois selecione Importar Conta.

Image description

A opção padrão é a importação de chaves privadas, que é o que nós queremos. Em Ganache, pegue a chave privada da primeira carteira da lista, clicando no ícone da chave à direita da carteira.

Image description

Image description

Depois, copie esta chave privada e cole-a na importação da MetaMask. Confirme e voilà - você terá 100 Ethers prontos para enviar em sua blockchain privada de Ganache. Você pode até tentar enviá-la para o endereço original que a MetaMask gerou para você!

Image description

Como conectar MyEtherWallet a Ganache

Agora que conectamos a MetaMask à nossa blockchain privada, vamos conectar a MyEtherWallet. A MetaMask é boa para o envio de Ether e lhe permitirá enviar alguns tokens, mas para obter uma interação completa com sua blockchain - incluindo a comunicação com Contratos Inteligentes, implantações, etc., você precisa de uma carteira mais completa UI como MyEtherWallet. Se você não estiver familiarizado com ela, aqui está uma Introdução à MyEtherWallet.

Uma vez que você tenha aberto https://myetherwallet.com em seu navegador, tome nota do menu suspenso superior direito: Rede ETH.

Image description

Esta é a mesma situação que acabamos de lidar na MetaMask! No entanto, não podemos simplesmente usá-lo de forma direta porque MEW requer um nó para estar em HTTPS enquanto nosso nó Ganache é apenas HTTP. Para suportar HTTP, o MEW precisa ser baixado e executado localmente - de nosso computador (que também é a forma mais segura de executar o MEW, tão altamente recomendado!).

Para executá-lo localmente, faça o download do arquivo etherwallet-vX.xx.xx.zip daqui, depois clique duas vezes para descompactar este arquivo. Dentro de você encontrará o arquivo index.html - clique duas vezes nele e o MEW será executado localmente. É tão simples quanto isso.

Agora podemos usar o menu Network. Basta selecionar Nó Personalizado na parte inferior e inserir as informações do Ganache assim:

Image description

Ganache se tornará então acessível via MEW. Agora vamos pegar a chave privada do segundo endereço em Ganache e importá-la na aba Send Ether & Tokens.

Selecione "Private Key" como um método, cole a chave e desbloqueie. Você notará que tem 100 ETH personalizados em sua conta - exatamente como esperado!

Image description

Como enviar Ether com Ganache

Agora vamos tentar enviar um pouco desse ether simulado por aí.

No MEW, vamos inserir o endereço da conta importada da MetaMask. Selecione-o em Ganache ou na MetaMask, não importa.

Image description

Insira 5 Ether, depois envie, e confirme todas as etapas. Com certeza, em menos de um segundo a conta de envio terá 5 etheres a menos do que costumava ter, enquanto que a da MetaMask deve estar lendo 105 ether. Note que não será exatamente 5 Ether - será um pouco mais que isso porque a transação custa gas que é expresso e pago em ether.

Para uma cartilha sobre o que é gas e como ele é calculado, veja este guia.

Image description

Bônus: Como conectar o Remix a Ganache

OK, isso é MEW e MetaMask, mas o Remix ainda é muito útil. Ele oferece depuração, compilação, interação com contratos e carregamento dos mesmos através de endereços já implantados e muito mais. Podemos conectar o Remix a Ganache?

Com certeza podemos!

Como já conectamos MetaMask a Ganache e Remix oferece a possibilidade de carregar uma conexão externa via "Injected Web3" (que é MetaMask), podemos simplesmente selecionar essa opção no menu Ambiente do Remix!

Image description

Image description

Note que diz "ou similar". Isto significa que o Remix é totalmente compatível com qualquer extensão que no futuro decida implementar a Web3 e oferecer serviços de interação Ethereum. Com uma conexão estabelecida como esta, você pode agora facilmente usar o Remix para interagir com sua blockchain Ganache - implantar contratos, funções de chamada e fazer uma infinidade de outras coisas como esta.

Um processo semelhante se aplica a todas as ferramentas personalizadas que você pode querer conectar à sua blockchain Ganache - simplesmente mude a rede à qual eles estão se conectando, e pronto! O processo de importação de contas e seleção das configurações da rede pode variar ligeiramente entre as implementações, mas isto é geralmente o quão simples é começar com uma blockchain privada e virtual.

Conclusão

Neste tutorial, você aprendeu o que é Ganache e como utilizá-lo para simular uma blockchain local. Com isto como ponto de partida, você pode agora começar a desenvolver para o Ethereum e a experimentar sem medo! Em um post futuro, vou cobrir os conceitos básicos de Solidity, implementação de código de contrato inteligente para Ganache, e muito mais. Fique de olho aqui ou em Bitfalls.

Ganache
Ethereum
Blockchain
Metamask
Solidity

Artigo escrito por Bruno Škvorc e traduzido para o português por Rafael Ojeda

Você pode encontrar o artigo original aqui.

Oldest comments (0)