7 mins

Guia completo para iniciantes sobre Solidity - Parte II

Dando continuidade a nossa série, iremos ver neste artigo como preparar o ambiente de desenvolvimento utilizado e inicializar um projeto vazio.

Para este artigo iremos utilizar como referência o tutorial para iniciantes oficial do Hardhat.

A partir do momento que avançamos no desenvolvimento de DApps criamos Smart Contracts mais complexos, passamos a necessitar de ferramentas que nos auxiliem no desenvolvimento e garantam a testabilidade e segurança de nossos contratos inteligentes, e é ai que entram os ambientes de desenvolvimento.

Assim como em outras linguagens, o Solidity também possui um ambiente de desenvolvimento o Hardhat que por sinal não é o único mas é o foco de nossos estudos.

Você encontra o código fonte do projeto neste respositório sob a branch #beginners-guide-part-ii.

Por que o Hardhat?

Hardhat oferece uma série de benefícios para acelerar o processo de desenvolvimento e teste de Smart Contracts utilizando Solidity e JavaScript ou TypeScript.

Com ele podemos rapidamente compilar, testar, debugar e efetuar o delivery dos nossos Contratos Inteligentes em diversas Blockchains. Como ambiente de desenvolvimento ele nos auxilia na automação de tarefas recorrentes como a execução de testes unitários.

Por padrão o Hardhat vem com uma rede local do Ethereum para desenvolvimento, esta rede possui funcionalidades focadas no Solidity em específico debug, stack trace, console.log() e mensagens claras e explícitas quando as transações falham.

Seu ecossistema e comunidade ativa garantem a existência de muitos plugins disponibilizados pelos desenvolvedores para atribuir ainda mais recursos, como a cobertura de código, integração com Ganache, live reload com file watcher e muitos outros.

Utilizando o CLI podemos ainda criar tasks e plugins próprios para a execução de ações mais complexas, como por exemplo, efetuar o delivery do contrato em mais de uma Blockchain sequencialmente.

Setup do ambiente

Muitas bibliotecas e ferramentas para Ethereum são escritas em JavaScript e com Hardhat não é diferente. Desta forma iremos inicialmente instalar o Node.js que é o único pré-requisito para sua utilização.

Instalação do Node.js

Caso você já tenha instalado uma versão do Node.js >= 12.0, pode estar avançando em nosso artigo para o próximo item. Caso não estaremos agora efetuando a instalação para Ubuntu, MacOS e Windows.

Ubuntu

Execute os comandos abaixo no terminal:

$ sudo apt update
$ sudo apt install curl git
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs

MacOS

Tenha certeza de possuir o git instalado, caso contrário siga estas instruções.

Existe muitas maneiras para efetuar a instalação do Node.js no MacOS. Neste artigo iremos utilizar o nvm. Execute os comandos abaixo no terminal:

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.2/install.sh | bash
$ nvm install 12
$ nvm use 12
$ nvm alias default 12
$ npm install npm --global # Upgrade npm to the latest version

Windows

A instalação do Node.js no Windows requer a execução de alguns passos manualmente. Para isso iremos efetuar a instalação do git, Node.js 12.x e pm.

Efetue o download dos executáveis através dos links abaixo e a sua instalação ao término do download:

Atualizando a versão do Node.js

Caso você ja tenha uma versão inferior à 12.0 do Node.js pode realizar o procedimento abaixo para efetuar a atualização de acordo com seu Sistema Operacional.

Ubuntu

  • Execute o comando $sudo apt remove nodejs no terminal para remover o Node.js.
  • Escolha a versão do Node.js que deseja instalar por meio deste link e siga as instruções.
  • Execute o comando sudo apt update && sudo apt install nodejs no terminal para instalar o Node.js novamente.

MacOS

Você pode utilizar o nvm instalado anteriormente para substituir a versão do Node.js que deseja utilizar. Para atualizar a versão do Node.js para 12.x execute os comandos abaixo no terminal:

$ nvm install 12
$ nvm use 12
$ nvm alias default 12
$ npm install npm --global #Atualiza o npm para a última versão

Windows

Você deve seguir as mesmas instruções de antes, só que agora selecionando uma versão mais atualizada. Você pode obter uma lista de versões disponíveis aqui.

Instalando o Hardhat e criando um projeto vazio

Para efetuar a instalação do Hardhat iremos utilizar o npm CLI. O Node.js package manager é um gerenciador de dependências para projetos que utilizem JavaScript.

Para isso vamos abra a terminal e digite os comandos abaixo:

$ mkdir beginners-guide-to-solidity
$ cd beginners-guide-to-solidity
$ npm init --yes
$ npm install --save-dev hardhat

ATENÇÃO: A instalação do Hardhat pode demorar um pouco pois requer a instalação de algumas dependências do Ethereum JavaScript.

Ao término da instalação do Hardhat e suas dependências, execute o comando abaixo no terminal para inicializar o wizard para criação de projetos.

$ npx hardhat

Na lista de opções selecione Create an empty hardhat.config.js com as setas do teclado e então pressione enter.

$ npx hardhat
888    888                      888 888               888
888    888                      888 888               888
888    888                      888 888               888
8888888888  8888b.  888d888 .d88888 88888b.   8888b.  888888
888    888     "88b 888P"  d88" 888 888 "88b     "88b 888
888    888 .d888888 888    888  888 888  888 .d888888 888
888    888 888  888 888    Y88b 888 888  888 888  888 Y88b.
888    888 "Y888888 888     "Y88888 888  888 "Y888888  "Y888

Welcome to Hardhat v2.0.0

? What do you want to do? …
  Create a sample project
❯ Create an empty hardhat.config.js
  Quit

Assim que o CLI do Hardhat executa, ele procura pelo arquivo hardhat.config.js. Este arquivo normalmente fica localizado na raiz do projeto e um arquivo vazio hardhat.config.js é suficiente para o funcionamento do Hardhat.

Arquitetura do Hardhat

Hardhat é construído em torno dos conceitos de tasks e plugins. A maior parte das funcionalidades do Hardhat vem de plugins, como dito anteriormente existe uma grande quantidade de plugins disponíveis e você pode criar seus próprios plugins e disponibilizar para a comunidade agregando assim mais recursos e funcionalidades ao seu projeto.

Tasks

Toda vez que você executa o npx hardhat ... no terminal automaticamente está utilizando o CLI do Hardhat para invocar uma task. Por exemplo, npx hardhat compile é responsável por executar a task de compilação do projeto.

Cada projeto pode possuir uma quantidade de tarefas diferentes uma vez que podemos utilizar plugins diferentes em cada projeto, portanto para ver as tarefas atualmente disponíveis em seu projeto execute npx hardhat. Para obter detalhes de utilização da task você pode executar no terminal npx hardhat help [task].

DICA: Podemos criar nossas próprias tasks.

Plugins

Por padrão toda vez que criamos um projeto com Hardhat alguns plugins vem instalados, porém podemos a qualquer momento efetuar a sua substituição.

Nesta série de artigos iremos utilizar o plugin hardhat-toolbox. Ele traz consigo todas as ferramentas necessárias para realizar o desenvolvimento e teste dos nossos contratos e para interagirmos com eles. Sua utilização será abordada mais para frente quando efetivamente estivermos desenvolvendo nossos contratos inteligentes.

Para efetuar a instalação, abra o terminal no diretório raiz do projeto e execute:

$ npm install --save-dev @nomicfoundation/hardhat-toolbox

E para finalizar adicione require("@nomiclabs/hardhat-waffle"); ao seu arquivo hardhat.config.js ficando conforme abaixo.

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

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
	solidity: '0.8.18',
};

Conclusão

Chegamos ao final deste artigo com o nosso ambiente pronto para iniciar o desenvolvimento e teste dos nossos Contratos Inteligentes. A partir de agora iremos efetivamente criar e testar diversos contratos utilizando Solidity e JavaScript.


E é isso por hoje, pessoal!

Chegamos ao final de mais um artigo, espero que tenha sido útil e que você tenha aprendido algo novo.

Caso tenha alguma dúvida, comentário ou tenha encontrado algum erro, por favor, envie-me um email. Ficarei feliz em ouvir de você.

Se desejar receber novos artigos diretamente em seu e-mail, por favor, assine a nossa Newsletter. E se você já é um assinante, muito obrigado!

Aproveito e deixo um convite para nos conectarmos no Twitter e LinkedIn.

👋 Obrigado por ler até o final e até o próximo artigo !!!

Turbine a sua caixa de entrada

Junte-se a mais de 0 desenvolvedores inscritos

Talvez você possa curtir