Desenvolvendo para o Ethereum: Começando com Ganache
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:
Observe que existem vários endereços com 100 Ether cada um.
Ao executar Ganache, você tem efetivamente seu próprio nó 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.
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.
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!
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:
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":
Clique nele, selecione RPC personalizado, e depois em New RPC URL input http://127.0.0.1:7545
, depois clique em Save.
Você pode clicar em X então para fechar essa aba, e você notará que a nova rede aparece no menu suspenso agora.
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.
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.
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ê!
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.
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:
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!
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.
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.
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!
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)