Ir diretamente para o conteúdo principal

Como criar e implementar um contrato inteligente com o Hardhat

Atualizado em
26 de novembro de 2025

6 minutos de leitura

Visão geral

Os ambientes de desenvolvimento do Ethereum, como o Hardhat, facilitam o trabalho com contratos inteligentes e nós do Ethereum. Oferecem um conjunto de ferramentas que permitem escrever, testar e implementar contratos inteligentes de forma integrada. Neste guia, vamos criar um contrato inteligente «Hello World» e implementá-lo na rede de teste Sepolia, utilizando o Hardhat e o Quicknode.

Pré-requisitos


  • Uma conta Quicknode (crie uma gratuitamente aqui)
  • Uma carteira compatível com EVM (por exemplo, MetaMask)
  • Node.js instalado
  • Hardhat instalado (também abordaremos este tema ao longo do guia)
  • Janela da CLI/Terminal
  • Editor de código ou de texto (por exemplo, VSCode)
  • ETH na rede de testes Sepolia (pode utilizar a «Quicknode Multi-chain Faucet» para obter alguma quantidade gratuitamente)

O que é o Hardhat?

O Hardhat é um ambiente de desenvolvimento que ajuda os programadores a compilar, implementar, testar e depurar as suas aplicações Ethereum. Possui uma das documentações mais claras e detalhadas. O Hardhat também disponibiliza a funcionalidade console.log(), semelhante à do JavaScript, para fins de depuração. Além disso, o Hardhat dispõe de vários plug-ins, o que aumenta ainda mais a sua funcionalidade.

Instalação do Hardhat e de outras dependências

Vamos instalar o Hardhat utilizando o npm, que vem incluído no Node.js

Primeiro, crie um novo diretório de projeto e aceda a ele. Pode usar os seus próprios nomes aqui, se preferir:

mkdir HardhatTutorial
cd HardhatTutorial

Abra o terminal/cmd no diretório do seu projeto e digite os seguintes comandos.

npm init --y
npm install --save-dev hardhat

Agora que já temos o Hardhat instalado, vamos criar um novo projeto Hardhat. Vamos usar o npx para o fazer. O npx ajuda a executar programas do Node.js. 

npx hardhat init

Será apresentada a interface CLI do Hardhat. Selecione «Criar um ficheiro hardhat.config.js vazio» e prima Enter.

Inicialização do capacete de segurança

Agora, vamos instalar outras dependências necessárias para trabalhar com o Hardhat.

npm install --save-dev @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chai

Precisamos destas dependências para escrever testes automatizados para contratos.

O problema mais comum durante a instalação de pacotes com o npm pode ser uma falha interna do `node-gyp`. Pode seguir as instruções de instalação do node-gyp aqui.

Nota: Se se deparar com o problema do node-gyp, terá de garantir que a sua versão do Python corresponde a uma das versões compatíveis indicadas nas instruções acima. 

Outro problema comum é um cache desatualizado. Limpa o teu cache do npm digitando simplesmente o seguinte no teu terminal:

npm cache clean

Agora, vamos obter uma chave privada para a nossa carteira, algum ETH de teste para pagar o gás e configurar um nó Ethereum; tudo isto será necessário para implementarmos o nosso contrato inteligente.

Criação/Recuperação da Chave Privada

Vamos precisar de uma carteira Ethereum para pagar a implementação do nosso contrato inteligente.

Assim que a sua carteira estiver criada e tiver obtido a sua chave privada, iremos adicioná-la ao ficheiro de configuração do Hardhat (por exemplo, hardhat.config.js) na próxima secção.

Pode seguir os guias do Quicknode para gerar uma chave privada e um endereço Ethereum em JavaScript, Ruby, Python, Go e PHP.

Para obter a chave privada da sua carteira MetaMask, siga estas instruções:


  • Clique no ícone do MetaMask, uma cabeça de raposa estilizada, no seu navegador. Se não o vir, verifique a página de extensões do seu navegador.
  • Clique no símbolo e, em seguida, em «Detalhes da conta».
  • Em seguida, clique em «Mostrar chave privada » e siga as instruções.

Chave privada do MetaMask

Copie e guarde a chave privada; vamos precisar dela nas etapas seguintes.

Recomenda-se guardar informações confidenciais, como chaves privadas, num ficheiro .env e importá-las para o ficheiro de configuração através de variáveis de ambiente, ou criar uma nova carteira MetaMask secundária exclusivamente para fins de desenvolvimento.

Obter ETH da Testnet

Vamos implementar o nosso contrato na rede de teste Sepolia. Para começar, vamos precisar de algum ETH de teste na nossa carteira MetaMask, como vimos no passo anterior.

Aceda ao Quicknode Multi-Chain Faucet e ligue a sua carteira ou cole o endereço da mesma. Terá de selecionar a cadeia Ethereum e a rede Sepolia e, em seguida, solicitar fundos.

Nota: será necessário ter um saldo na rede principal da Ethereum de, pelo menos, 0,001 ETH para poder utilizar a fonte de recompensas.

Faucet Multicadeia Quicknode

Configurar um ponto de acesso Quicknode para a Ethereum

Para implementar o nosso contrato na blockchain Sepolia da Ethereum, vamos precisar de acesso a um nó da Ethereum Sepolia. Para isso, podemos utilizar praticamente qualquer cliente Ethereum, como o Geth ou o OpenEthereum (anteriormente conhecido como Parity). Como esse processo é um pouco complicado para implementar um único contrato, vamos simplesmente criar uma conta gratuita no Quicknode aqui e gerar facilmente um endpoint da Ethereum. Depois de criares o teu ponto de extremidade gratuito da Ethereum Sepolia, mantém a URL do teu fornecedor HTTP à mão, pois vais precisar dela na próxima secção.

Captura de ecrã do Quicknode Sepolia Endpoint

Configurar o ficheiro de configuração

Abra o ficheiro hardhat.config.js e cole o seguinte texto nele:

require("@nomiclabs/hardhat-waffle");

const endpointUrl = "ADD_YOUR_QUICKNODE_URL_HERE";
const privateKey = "ADD_YOUR_PRIVATE_KEY_HERE";

module.exports = {
solidity: "0.8.21",
networks: {
sepolia: {
url: endpointUrl,
accounts: [privateKey],
},
},
};

Substitua ADD_YOUR_PRIVATE_KEY_HERE pela chave privada que obtivemos no passo anterior e substitua ADD_YOUR_QUICKNODE_URL_HERE pelo URL do nó HTTP que obtivemos no passo anterior, e guarde o ficheiro.

Explicação do código acima:

  • Linha 1: Importação do pacote hardhat-waffle.

  • Linhas 3-4: Definição do URL do ponto final e da chave privada.

  • Linhas 6-14: Menção à versão do Solidity e definição da rede «sepolia».

Criação de um contrato

Agora, para o nosso contrato, crie um novo diretório chamado «contracts» e coloque um novo ficheiro chamado «HelloWorld.sol» dentro dele.

mkdir contracts && echo > contracts/HelloWorld.sol

Copia e cola o código seguinte no teu ficheiro Solidity HelloWorld.sol:

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

contract HelloWorld {

string saySomething;

constructor() {
saySomething = "Hello World!";
}

function speak() public view returns(string memory) {
return saySomething;
}
}

Explicação do código acima:


  • Linha 1: Especificação do tipo de licença SPDX, que foi adicionada a partir da versão ^0.6.8 do Solidity. 

Sempre que o código-fonte de um contrato inteligente é disponibilizado ao público, estas licenças podem ajudar a resolver ou evitar problemas relacionados com direitos de autor. Se não pretender especificar nenhum tipo de licença, pode utilizar uma licença especial, a UNLICENSED, ou simplesmente ignorar todo o comentário (isso não resultará num erro, mas apenas num aviso).

  • Linha 2: Declaração da versão do Solidity.

  • Linha 4: Início do nosso contrato denominado Olá, Mundo.

  • Linha 6: Criar uma variável saySomething do tipo string.

  • Linhas 8-10: Inicialização do construtor e armazenamento da cadeia de caracteres «Hello World!» na saySomething variável.

  • Linhas 12-14: Criar uma função chamada falar do tipo público, que irá devolver a cadeia de caracteres armazenada no saySomething variável.

Guarde o ficheiro e compile o contrato utilizando o seguinte comando do Hardhat.

npx hardhat compile

Se o seu contrato for compilado com sucesso, o resultado será semelhante a este:

Resultado da compilação

Implementação do contrato inteligente «Hello World»

Agora, para implementar o nosso contrato, vamos criar um ficheiro deploy.js num novo diretório chamado scripts.

mkdir scripts && echo > scripts/deploy.js

Copia e cola o seguinte no teu ficheiro deploy.js:

async function main() {

const [deployer] = await ethers.getSigners();

console.log(
"Deploying contracts with the account:",
deployer.address
);

const HelloWorld = await ethers.getContractFactory("HelloWorld");
const contract = await HelloWorld.deploy();

console.log("Contract deployed at:", contract.address);

const saySomething = await contract.speak();

console.log("saySomething value:", saySomething);
}

main()
.then(() => process.exit(0))
.catch(error => {
console.error(error);
process.exit(1);
});

Explicação do código acima.

  • Linha 1: Iniciar uma função assíncrona chamada principal.

  • Linha 3: Obter o endereço Ethereum para assinar a transação e guardá-lo no endereço do «deployer». 

  • Linhas 5-8: Imprimir o endereço Ethereum juntamente com uma cadeia de caracteres na consola.

  • Linha 10: Chamada ao método ethers.js ContractFactory. Isto irá procurar o HelloWorld.sol ficheiro e devolver uma instância que possamos utilizar ContractFactory métodos ativados.

  • Linha 11: A chamar o `deploy` em ContractFactory para implementar o contrato. 

  • Linha 13: Imprimir o endereço do contrato implementado na consola.

  • Linha 15: Chamada à função falar do contrato implementado.

  • Linha 17: Imprimir o valor de retorno da função falar para a consola.

  • Linha 20: Chamada da função principal.

  • Linhas 21-24: Verificar se há erros, apresentar uma mensagem caso haja algum erro e encerrar o processo.

Guarde o ficheiro e execute o seguinte para implementar o contrato.

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

Após a implementação bem-sucedida do contrato, irá ver uma saída que contém o endereço do contrato implementado e o valor de retorno da função «speak», ou seja, o valor de «saySomething».

Resultado da implementação

Podemos verificar a implementação copiando e colando o endereço do contrato implementado na barra de pesquisa do Sepolia Etherscan. Isto irá apresentar informações sobre o contrato implementado.

Resultado do Etherscan

Conclusão

E pronto! Já dominas os conceitos básicos da criação, compilação e implementação de contratos inteligentes com o Hardhat. Mas não é tudo – o Hardhat também oferece ferramentas para testar e depurar o teu código. Para aprofundares os teus conhecimentos, consulta a documentação oficial do Hardhat.

Subscreva a nossa newsletter para receber mais artigos e guias sobre o Ethereum. Se tiver alguma dúvida, não hesite em utilizar o nosso canal dedicado no Discord ou em enviar os seus comentários através do formulário abaixo. Mantenha-se a par das últimas novidades seguindo-nos no Twitter e no nosso canal de anúncios do Telegram.

Adoramos ❤️ os vossos comentários!

Diz-nos se tiveres algum comentário ou sugestão de novos temas. Adoraríamos saber a tua opinião.

Partilhe este guia