SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
04.12.2024

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!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!