Deploy de Smart Contract com HardHat e MetaMask (HH Scripts)

Web3 e Blockchain

Deploy de Smart Contract com HardHat e MetaMask (HH Scripts)

Luiz Duarte
Escrito por Luiz Duarte em 27/08/2025
Junte-se a mais de 34 mil devs

Entre para minha lista e receba conteúdos exclusivos e com prioridade

Atenção: esse tutorial utiliza HardHat Scripts para o deploy. Se estiver procurando aprender a usar HardHat Ignition, use este outro tutorial.

Recentemente escrevi alguns tutoriais sobre como criar Smart Contracts usando a linguagem Solidity e o toolkit HardHat, você confere um olá mundo neste link e um CRUD neste link. Uma coisa que não ensinei na ocasião é que é extremamente importante é o processo de deploy do seu smart contract na blockchain e este é o objetivo do tutorial de hoje.

O processo de fazer deploy consiste da compilação do seu contrato em bytecodes que possam ser interpretados pela EVM (Ethereum Virtual Machine) e envio esses bytecodes para um provedor distribuir aos demais nós da rede. Durante os tutoriais anteriores testamos tudo usando testes unitários automatizados e deploy em uma rede interna do HardHat, de testes (chamada HardHat Network). Agora, para enviar a um provider de blockchain existem várias formas mas a que escolhi para este tutorial aqui é usando a carteira de criptomoedas MetaMask.

Se preferir, pode assistir ao vídeo abaixo ao invés de ler, mais ao final dessa aula fazemos o deploy da mesma forma que aqui no tutorial.

#1 – Preparando a Carteira

Já falei extensivamente da MetaMask, a principal carteira cripto de browser do mundo, tanto aqui no blog quanto no meu canal, sendo que se você não possui uma ainda, use o vídeo abaixo para aprender como criar e configurar a sua, é gratuita.

A MetaMask não é um provider, ela é uma carteira, mas funciona conectada a um provider da Infura, uma empresa irmã provedora de blockchain em nuvem (ambas são projetos da ConsenSys). Usaremos a MetaMask para criarmos uma conta que será usada para o pagamento da taxa de rede (gas fee) necessária ao deploy e envio dos bytecodes para um nó da blockchain, que distribuirá nosso código pela rede.

Outro ponto importante a considerar é em qual rede você fará o seu deploy. Eu usarei aqui a Testnet da BNB Chain (também conhecida como “blockchain da Binance” ou BSC) mas pode ser em qualquer rede EVM (lista extensa de redes e configurações neste link).

Os dados da rede de teste da BNB são (obtidos no site oficial):

  • Nome da Rede: BNB Chain Testnet
  • Novo URL do RPC: https://data-seed-prebsc-1-s1.binance.org:8545/
  • ID da chain: 97
  • Símbolo da moeda: tBNB
  • URL do Block Explorer: https://testnet.bscscan.com

Certifique-se de deixar a rede de testes selecionada como principal na sua MetaMask (repare na imagem abaixo, fica no topo superior esquerdo da carteira) para que nosso desenvolvimento seja realizado em cima dela a fim de não gastarmos fundos com os testes. Basta deixar ela aparecendo no topo da sua carteira e em seguida copie o endereço da sua carteira de testes, que fica logo abaixo do nome da sua conta, como na imagem abaixo.

Agora, antes de sairmos fazendo deploy, nosso próximo passo é adicionarmos fundos para os testes. Você pode fazê-lo usando o Faucet da BNB Chain neste link. Precisaremos sempre ter BNB já que é a moeda oficial da rede e é com ela que pagamos as taxas das transações. Note que você só pode fazer isso uma vez a cada 24h e que esse saldo é completamente fake, só funciona na testnet, não pode ser transacionado nas exchanges e não pode ser sacado mas pode ser transferido entre carteiras de teste, que é o que faremos aqui. Caso você seja aluno dos meus cursos, você pode usar o meu faucet também.

Agora com saldo na carteira e ela apontada para a Testnet, podemos avançar para o deploy em si.

Curso Web3 para Iniciantes

#2 – Fazendo o Deploy

Uma vez que sua carteira esteja devidamente configurada no seu browser, volte ao VS Code para fazermos o deploy. Você vai precisar da chave privada da sua carteira MetaMask, a fim de que o deploy seja todo automatizado usando HardHat. Esta chave é aquela que fica oculta em Configurações > Detalhes da Conta > Detalhes > Show Private Key e muito cuidado com ela pois quem a tiver tem controle total sobre sua carteira.

Vamos salvar esta chave em um arquivo .env na raiz do projeto com uma única chave PRIVATE_KEY, sendo que este arquivo não deve ser versionado então é de bom tom colocá-lo no .gitignore caso esteja usando Git. Para que possamos usar arquivos .env para configurações do projeto instale a dependência do DotEnv no projeto.

Crie o arquivo .env, preencha a chave PRIVATE_KEY e vamos em frente.

Agora é importante você entender que o script que vai fazer o deploy do seu contrato na blockchain é o deploy.ts que deve existir na pasta scripts. Crie ele se não existir e coloque o seguinte conteúdo que vou explicar na sequência.

Esse script importa a biblioteca Ethers a partir da VM de teste (HardHat Network) e com ela carrega o nosso contrato Solidity que deve estar com o mesmo nome presente na pasta contracts (BookDatabase no meu exemplo). Com o factory desse contrato carregado nós chamamos as funções necessárias ao deploy e imprimimos o resultado no console, que será o endereço do contrato na blockchain. O último trecho de código é padrão e serve para sermos avisados de quaisquer erros que ocorrerem.

Agora, vamos nos focar no seu hardhat.config.ts. Por padrão estávamos usando uma rede default de teste e agora devemos apontar para a rede onde faremos o deploy, configurando corretamente os dados do nosso nó de blockchain, que no nosso caso é um nó da Testnet da BNB Chain. Os dados de rede a serem utilizados são os mesmos que citei anteriormente, na etapa de configuração da carteira MetaMask.

Estes dados são de um full node da rede da BNB Chain. O mais comum é que os full nodes sejam pagos, mas a Binance e outras redes que querem ser mais “dev friendly” oferecem full nodes gratuitos para serem usados em desenvolvimento. Repare que o .env está sendo carregado logo no início para que process.env.PRIVATE_KEY possa ser chamado mais tarde. Se quiser, pode colocar a URL da rede no .env também, a fim de não deixar nenhuma configuração diretamente no código.

Com isso, estamos com tudo configurado para o deploy e para fazê-lo de fato, basta rodar o comando abaixo do HardHat em nosso projeto.

Este comando vai compilar o seu contrato definido no deploy.ts, vai assinar a transação usando a conta da sua carteira (definida pela frase mnemônica) e vai enviar os bytescodes nessa transação para a blockchain configurada no hardhat.config.js. Ao término de todo o processo, você terá as informações do deploy bem sucedido, como abaixo.

Para conferir se a transação foi um sucesso basta você pegar o hash que recebeu  e ir conferir no site da BSC Scan, lembrando que como é um teste, deve usar o BSC Scan Testnet que fica neste endereço. Colando o endereço/hash do seu contrato (ou da transação) você verá se o deploy dele já foi finalizado e no futuro todos os detalhes das transações que já aconteceram com esse contrato, como abaixo.

Ou seja, seu contrato agora pode ser usado normal e publicamente por qualquer pessoa que possua o endereço dele, invocando todas as funções e propriedades públicas do mesmo.

Um próximo passo possível e opcional é você verificar o seu contrato, o que ensino neste tutorial.

Até a próxima!

Curso Bot

TAGS:

Olá, tudo bem?

O que você achou deste conteúdo? Conte nos comentários.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *