Aula 224: Implantação com Hardhat
Nesta aula, aprenderemos como implantar um contrato inteligente usando o Hardhat, um ambiente de desenvolvimento popular para Ethereum. Hardhat fornece uma estrutura robusta para construir, testar e implantar aplicações Ethereum.
Pré-requisitos
Antes de mergulharmos na implantação de um contrato inteligente com o Hardhat, você deve ter uma compreensão básica de:
- Solidity
- Conceitos de Ethereum
- Node.js e npm
Certifique-se de ter o Node.js e o npm instalados em sua máquina. Você pode verificar se estão instalados rodando:
node -v
npm -v
Configurando o Hardhat
Comece criando um novo diretório para o seu projeto Hardhat e navegue até ele:
mkdir meu-projeto-hardhat
cd meu-projeto-hardhat
Agora, inicialize um novo projeto Node.js:
npm init -y
Em seguida, instale o Hardhat:
npm install --save-dev hardhat
Após instalar o Hardhat, você pode criar um novo projeto Hardhat executando:
npx hardhat
Você será solicitado a escolher um tipo de projeto. Para este tutorial, selecione "Criar um projeto básico".
Escrevendo um Contrato Inteligente
Na pasta contracts
, você verá um contrato de exemplo chamado Greeter.sol
. Vamos modificar este contrato para implantá-lo. Aqui está um contrato de saudação simples:
// contracts/Greeter.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Greeter {
string private saudacao;
constructor(string memory _saudacao) {
saudacao = _saudacao;
}
function saudacao() public view returns (string memory) {
return saudacao;
}
function setSaudacao(string memory _saudacao) public {
saudacao = _saudacao;
}
}
Criando um Script de Implantação
Agora que temos nosso contrato, precisamos criar um script de implantação. Este script cuidará da implantação do nosso contrato Greeter
na rede Ethereum. Crie um novo arquivo dentro da pasta scripts
chamado deploy.js
:
// scripts/deploy.js
const hre = require("hardhat");
async function main() {
const Greeter = await hre.ethers.getContractFactory("Greeter");
const greeter = await Greeter.deploy("Olá, Hardhat!");
await greeter.deployed();
console.log("Greeter implantado em:", greeter.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
Este script primeiro obtém uma referência ao contrato Greeter
e o implanta com a mensagem de saudação inicial "Olá, Hardhat!". Após a implantação, ele registra o endereço do contrato implantado.
Configurando a Rede Hardhat
Para desenvolvimento local, o Hardhat vem com uma rede Ethereum em memória que roda na sua máquina. Para garantir que nosso script de implantação possa acessar essa rede, precisamos iniciar o nó Hardhat. Abra um novo terminal e execute:
npx hardhat node
Este comando iniciará uma rede Ethereum local com algumas contas pré-financiadas.
Certifique-se de anotar as contas fornecidas e suas chaves privadas, pois você usará essas contas para implantar seu contrato.
Implantando o Contrato
Com a rede local rodando, é hora de implantar o contrato usando o seguinte comando em outra janela de terminal:
npx hardhat run scripts/deploy.js --network localhost
Se tudo correr bem, você verá uma saída indicando o endereço onde seu contrato Greeter
foi implantado.
Interagindo com o Contrato Implantado
Você pode interagir com seu contrato implantado através do console do Hardhat ou programaticamente em seus scripts. Vamos abrir o console do Hardhat executando:
npx hardhat console --network localhost
Uma vez no console, você pode interagir com seu contrato Greeter implantado assim:
// Substitua pelo endereço registrado durante a implantação
const greeterAddress = "SEU_ENDEREÇO_DE_CONTRATO_IMPLANTADO";
const Greeter = await ethers.getContractFactory("Greeter");
const greeter = await Greeter.attach(greeterAddress);
// Chame a função greet
let saudacao = await greeter.saudacao();
console.log(saudacao); // Saída: Olá, Hardhat!
// Defina uma nova saudação
await greeter.setSaudacao("Olá, Ethereum!");
saudacao = await greeter.saudacao();
console.log(saudacao); // Saída: Olá, Ethereum!
Conclusão
Nesta aula, você aprendeu como implantar um contrato inteligente usando Hardhat, configurar uma rede Ethereum local e interagir com seu contrato implantado. Esta ferramenta de desenvolvimento poderosa simplifica o processo de construção e teste de aplicações baseadas em Ethereum, tornando-se uma parte essencial do kit de ferramentas de qualquer desenvolvedor Solidity.
Continue experimentando com Hardhat e Solidity, pois há muito mais a aprender e explorar no mundo dos contratos inteligentes!