Guia sobre Hardhat Ethereum

Guia sobre Hardhat Ethereum

Opa, sou eu aqui novamente!

Sendo o cara que sempre vai trazer conhecimento técnico sobre as linguagens e tecnologias “exóticas”, dessa vez não seria diferente!

Quem já ouviu falar em Criptomoedas? E sobre Contratos Inteligentes? Pois bem, neste artigo venho trazer um Guia para iniciantes sobre Hardhat Ethereum.

Esse artigo tem o formato de tutorial para poder preparar você para construir algo do zero usando o Hardhat, que não é nada além de um ambiente de desenvolvimento que facilita a construção na rede Ethereum.

Hardhat

O ambiente Hardhat ajuda aqueles que estão desenvolvendo o projeto a gerenciar e automatizar as tarefas inerentes ao processo de criação de contratos inteligentes e Apps, permitindo ainda que você introduza facilmente mais funcionalidades nesse fluxo.

Esse ambiente é integrado com o Hardhat Network, uma rede local Ethereum projetada especificamente para desenvolvimento, permitindo que você implante seus contratos inteligentes, execute seus testes e ainda depure seu código.

Antes de tudo, preciso citar que para conseguir seguir e compreender bem este tutorial você deve ser capaz ao menos de:

  • Ter o VSCODE instalado;
  • Escrever código em JavaScript;
  • Operar um terminal;
  • Usar o versionamento de código GIT;
  • Compreender o básico de como funcionam os contratos inteligentes;
  • Configurar uma carteira Metamask.

Caso você não saiba fazer algum dos tópicos citados acima, sugiro que você reserve um tempo para aprender o básico necessário que possibilite a aprendizagem de criação de contratos inteligentes, eis que não se trata de um assunto fácil.

Esclarecido isto, neste tutorial, vou guiá-los através dos seguintes passos:

1.  Como configurar seu ambiente Node.js para desenvolvimento Ethereum?

2.   Primeiros passos para criar e configura um projeto Hardhat.

3.   O básico de um contrato inteligente em Solidity.

4.   Criando testes automatizados para seu contrato usando Hardhat.

5.   Depurando Solidity com console.log () usando Hardhat Network.

6.   Como implementar seu primeiro contrato inteligente para redes de teste Hardhat Network e Ethereum.

Apresentados os tópicos, vamos começar!

Configurando ambiente Node.js para desenvolvimento Ethereum

Primeiramente, qual a linguagem utilizada pelo Hardhat?

Bem, a maioria das bibliotecas e das ferramentas Ethereum são escritas na linguagem JavaScript, assim como o próprio ambiente Hardhat. Com isso, utilizaremos o Node.js, que é um runtime construído no mecanismo JavaScript V8 do Chrome, sendo ele a solução mais popular para executar JavaScript fora de um navegador da Web e o Hardhat é construído em cima dele.

⚠️
Dica: É possível realizar o download da extensão oficial do Hardhat que adiciona suporte avançado para Solidity ao mesmo.

1 - Instalando o Node.js

⚠️
Obs: Você pode pular esta seção se já tiver uma versão do Node.js maior que a 16.0 instalada. Caso contrário, veja como instalá-lo no Ubuntu, MacOS e Windows.

Linux Ubuntu

- Certifique-se de ter o GIT instalado.

Copie e cole estes comandos em um terminal:

Mac OS

Neste tutorial usaremos o Node Version Manager (NVM).

- Certifique-se de ter o GIT instalado.

Copie e cole estes comandos em um terminal:

Windows

Se você estiver usando o Windows, eu recomendo que use o Windows Subsystem for Linux (conhecido como WSL2). Você até pode usar o Hardhat sem ele, mas funcionará melhor se você o usar.

- Certifique-se de ter o GIT instalado.

- Acesse este link que terá um passo a passo de instalação do Node.js no Windows:

- Siga as instruções de instalação no repositório windows-nvm.

- Baixe o arquivo nvm-setup.zip para a versão mais recente.

- Uma vez baixado, abra o arquivo .zip e abra o arquivo nvm-setup.exe.

- O assistente de instalação Setup-NVM-for-Windows irá levá-lo através das etapas de configuração de ambos nvm-windows e Node.js.

- Instale a versão atual LTS do Node.js com o comando:

nvm install latest

- Depois de instalar o Node.js, selecione a versão que você gostaria de usar inserindo:

nvm use <version><version>nvm use 12.9.0

- Verifique qual versão do npm está instalada:

npm --version

Com isso, você terá o Node.js e o pacote nvm instalado em sua máquina.

2 - Primeiros passos para criar e configura um projeto Hardhat

Após a instalação do Node.js, instalaremos o Hardhat.

Abra um novo terminal e execute estes comandos para criar uma nova pasta:

Em seguida, inicialize um projeto NPM conforme mostrado abaixo.

Você será solicitado/a a responder a algumas perguntas.

Agora podemos instalar o Hardhat:

No mesmo diretório onde você instalou o Hardhat execute:

Selecione Criar um hardhat.config.js vazio com o teclado e pressione Enter.

Com isso, você terá as dependências do Hardhat instaladas no projeto.

3 - O básico de um contrato inteligente em Solidity

Os contratos de token são usados ​​mais frequentemente para trocar ou armazenar valor e aqui vou mostrar como criar um contrato inteligente simples que implementa um token que pode ser transferido.

Não vou entrar em detalhes no código Solidity do contrato neste tutorial, mas há alguma lógica de implementação que você precisa compreender (que basicamente são as funcionalidades do nosso smart contract), vejamos:

- Existe um fornecimento total (fixo) de tokens que não podem ser alterados.

- A responsabilidade de fornecer é atribuída ao endereço que implanta o contrato.

- Qualquer pessoa pode receber tokens.

- Qualquer pessoa com pelo menos um token pode transferir tokens.

- O token não é divisível. Você pode transferir 1, 2, 3 ou 23 tokens, mas não 1,5.

⚠️
Dica: O padrão de token no Ethereum é o ERC-20, mas por uma questão de simplicidade, o token que vamos construir não implementa esse o padrão.

Escrevendo contratos inteligentes

Comece criando um novo diretório chamado contracts e crie um arquivo dentro do diretório chamado Token.sol.

Cole o código abaixo no arquivo e reserve um minuto para ler o código com calma, ele é relativamente simples e cheio de comentários explicando o básico do Solidity e suas funções.

Compilando o contrato para deixa-lo pronto para uso

Para compilar o contrato, execute npx hardhat compile em seu terminal.

O contrato foi compilado com sucesso e está pronto para ser usado.

4- Criando testes automatizados usando Hardhat


Como testar seu contrato inteligente

Comece criando um novo diretório chamado test dentro do diretório raiz do nosso projeto e crie um novo arquivo nele chamado Token.js. Nesse arquivo você é livre para fazer lógicas de programação relacionadas ao seu contrato e as funções descritas nele de forma que consiga replicar o funcionamento do mesmo, testando assim as funcionalidades.

Abaixo você encontra um código com um modelo de teste para ver se a função de fornecer o total de tokens ao proprietário está funcionando, vejamos:

Por fim, no seu terminal, execute npx hardhat test. Você deve ver a seguinte mensagem:

Isso significa que o teste passou.

5 - Depurando Solidity com console.log () usando Hardhat Network

Você pode imprimir mensagens de registro e variáveis usando o console.log(). Para usá-lo, você deve importar hardhat/console.sol no código de seu contrato.

A saída de registro será exibida quando você executar seus testes com o comando:

$ npx hardhat test

6 - Implementando seu primeiro contrato inteligente para redes de teste Hardhat Network e Ethereum

Assim que estiver pronto para compartilhar seu smart contract com outras pessoas, você pode implantá-lo em uma rede ativa, para que de tal maneira, outras pessoas possam acessa-lo também sem ser localmente.

Necessário dizer que a rede Ethereum mainnet lida com dinheiro real, mas existem redes testnet separadas que não o fazem.

Para te animar posso falar que o código aqui é muito semelhante ao utilizado na seção de testes, muitas vezes podendo ser até o mesmo.

Vamos criar um novo script de diretório dentro do diretório raiz do projeto e colar o seguinte em um arquivo deploy.js nesse diretório:

Para dizer ao Hardhat para se conectar a uma rede Ethereum específica, você pode usar o parâmetro --network ao executar qualquer tarefa, como esta:

npx hardhat run scripts/deploy.js --network <network-name>

Para implantar em uma rede remota, como mainnet ou qualquer rede de teste, você precisa adicionar uma entrada de rede ao arquivo hardhat.config.js.

Neste teste será demonstrado um exemplo usando a rede Goerli, mas você pode adicionar qualquer rede da mesma forma:

require("@nomicfoundation/hardhat-toolbox");

Feito as etapas anteriores, vá para https://www.alchemyapi.io, inscreva-se, crie um novo aplicativo em seu painel e substitua "KEY" por sua chave.

const ALCHEMY_API_KEY = "KEY";

Substitua esta chave privada pela chave privada da sua conta Goerli.

Estamos usando Alchemy, mas apontar url para qualquer nó ou gateway Ethereum funcionaria. Procure sua ALCHEMY_API_KEY e volte.

Para implantar no Goerli, você precisa enviar um pouco de Ether Goerli para o endereço que fará a implantação.

Por fim, execute:

npx hardhat run scripts/deploy.js --network goerli

Se tudo correu bem até aqui, você deverá ver o endereço do contrato implantado.

Espero que este artigo tenha explicado a você o essencial sobre o Hardhat Ethereum.

Até a próxima!

⚠️
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.