Acesse o painel da sua conta

Não tem uma conta? Registrar

Entrar em contato

Visite também nosso site craftxp.com.br

  • img
  • img
  • img
  • img
  • img
  • img

Entre em contato

Hardhat: Framework Profissional para Desenvolvimento de Smart Contracts Ethereum

Hardhat: Framework Profissional para Desenvolvimento de Smart Contracts Ethereum

O que é o Hardhat?

O Hardhat é um ambiente de desenvolvimento profissional para Ethereum criado pela Nomic Foundation. Ele permite que desenvolvedores compilem, testem, depurem e façam deploy de smart contracts (contratos inteligentes) com facilidade. Com mais de 1 milhão de downloads semanais, é hoje a ferramenta mais utilizada no ecossistema de desenvolvimento Web3.

Diferente do Truffle ou Foundry, o Hardhat se destaca pelo seu sistema de tasks extensível, pela Hardhat Network local com suporte a stack traces e pela integração nativa com TypeScript e Ethers.js.

Por que usar Hardhat?

O Hardhat resolve diversos problemas que desenvolvedores enfrentam no dia a dia:

  • Stack traces completas — erros em Solidity mostram a linha exata do problema
  • Rede local avançada — Hardhat Network suporta console.log, snapshotting e mineração controlada
  • Plugins — ecossistema rico com plugins para cobertura de testes, verificação de contratos, integração com frameworks front-end e muito mais
  • TypeScript first — tipagem completa para scripts de deploy e teste
  • Múltiplas redes — deploy fácil para Ethereum mainnet, Goerli, Sepolia, Polygon, Arbitrum e outras

Instalação e Configuração

Para iniciar um projeto com Hardhat, você precisa ter o Node.js (16+) instalado. Crie um novo projeto e instale as dependências:

mkdir meu-projeto-hardhat
cd meu-projeto-hardhat
npm init -y
npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox

Em seguida, inicialize o Hardhat:

npx hardhat init

O assistente interativo pergunta o tipo de projeto desejado. Escolha "Create a JavaScript project" (ou TypeScript) e ele criará a estrutura completa com exemplo de contrato, testes e script de deploy.

Estrutura de um Projeto Hardhat

meu-projeto-hardhat/
├── contracts/          # Smart contracts Solidity
│   └── Lock.sol
├── scripts/            # Scripts de deploy e interação
│   └── deploy.js
├── test/               # Testes automatizados
│   └── Lock.js
├── hardhat.config.js   # Configuração principal
└── package.json

Criando seu Primeiro Smart Contract

Vamos criar um contrato simples de armazenamento em contracts/Storage.sol:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

contract Storage {
    uint256 private valor;

    event ValorAtualizado(uint256 novoValor, address autor);

    function armazenar(uint256 _valor) public {
        valor = _valor;
        emit ValorAtualizado(_valor, msg.sender);
    }

    function recuperar() public view returns (uint256) {
        return valor;
    }
}

Testando com Hardhat

O Hardhat se integra perfeitamente com frameworks de teste como Mocha e Chai. Crie o teste em test/Storage.js:

const { expect } = require("chai");
const { ethers } = require("hardhat");

describe("Storage", function () {
    it("Deve armazenar e recuperar um valor", async function () {
        const Storage = await ethers.getContractFactory("Storage");
        const storage = await Storage.deploy();
        await storage.waitForDeployment();

        const tx = await storage.armazenar(42);
        await tx.wait();

        const valor = await storage.recuperar();
        expect(valor).to.equal(42);
    });

    it("Deve emitir evento ao atualizar valor", async function () {
        const Storage = await ethers.getContractFactory("Storage");
        const storage = await Storage.deploy();
        await storage.waitForDeployment();

        await expect(storage.armazenar(99))
            .to.emit(storage, "ValorAtualizado")
            .withArgs(99, await ethers.provider.getSigner().getAddress());
    });
});

Execute os testes com:

npx hardhat test

Deploy de Contratos

Para fazer deploy, crie o script scripts/deploy.js:

const { ethers } = require("hardhat");

async function main() {
    const Storage = await ethers.getContractFactory("Storage");
    const storage = await Storage.deploy();
    await storage.waitForDeployment();

    console.log("Storage implantado em:", await storage.getAddress());
}

main().catch((error) => {
    console.error(error);
    process.exitCode = 1;
});

Para deploy na rede local:

npx hardhat run scripts/deploy.js

Para deploy na Sepolia testnet, configure sua chave de API no hardhat.config.js:

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

module.exports = {
    solidity: "0.8.19",
    networks: {
        sepolia: {
            url: `https://eth-sepolia.g.alchemy.com/v2/SUA_API_KEY`,
            accounts: ["SUA_CHAVE_PRIVADA_AQUI"]
        }
    }
};

Hardhat Network e Console.log

Um dos recursos mais poderosos do Hardhat é a capacidade de usar console.log diretamente no Solidity durante os testes locais:

import "hardhat/console.sol";

contract DebugStorage {
    function calcular(uint256 a, uint256 b) public returns (uint256) {
        console.log("Calculando:", a, "*", b);
        uint256 resultado = a * b;
        console.log("Resultado:", resultado);
        return resultado;
    }
}

Isso elimina a necessidade de depuração "às cegas" e acelera drasticamente o desenvolvimento.

Plugins Essenciais

O ecossistema de plugins do Hardhat é um de seus maiores diferenciais:

  • @nomicfoundation/hardhat-toolbox — Pacote completo com ethers, chai, cobertura de testes e verificação
  • @openzeppelin/hardhat-upgrades — Suporte a contratos atualizáveis (UUPS e Transparent Proxy)
  • hardhat-gas-reporter — Relatório de custo de gas para cada função
  • solidity-coverage — Relatório de cobertura de código para testes
  • @nomiclabs/hardhat-etherscan — Verificação automática de contratos no Etherscan

Hardhat vs Foundry vs Truffle

CaracterísticaHardhatFoundryTruffle
Linguagem dos TestesJavaScript/TypeScriptSolidity nativoJavaScript
Rede LocalHardhat Network (console.log)AnvilGanache
PerformanceModeradaMuito rápida (Rust)Lenta
DebuggingStack traces + console.logFuzz testing nativoBásico
Ecossistema PluginsExtensoModeradoLimitado
ManutençãoAtiva (Nomic Foundation)Ativa (Paradigm)Descontinuado

Conclusão

O Hardhat se consolidou como a ferramenta padrão para desenvolvimento de smart contracts na Ethereum — e por bons motivos. Sua facilidade de uso, sistema de plugins, debugging avançado e suporte a TypeScript fazem dele a escolha ideal tanto para iniciantes quanto para equipes profissionais.

Com a comunidade ativa da Nomic Foundation e atualizações constantes, o Hardhat continua evoluindo para acompanhar as demandas do ecossistema Web3. Se você está começando no desenvolvimento blockchain ou migrando de ferramentas legadas, o Hardhat é o investimento mais seguro para sua stack de desenvolvimento.

Craft XP
Craft XP