Como simular um ambiente blockchain na sua máquina?
O Hardhat facilita essa etapa, com ele você vai conseguir rodar uma blockchain localmente e testar seus contratos inteligentes antes mesmo de subir para um ambiente real (de produção).
Gerando uma redução na quantidade de erros e te permitindo conferir se todo o fluxo de dados está correto.
Você precisa compilar seu contrato inteligente, o que significa transformar o arquivo XPost.sol
em um arquivo compilado pronto para testar nas blockchains.
Com um comando do Hardhat você subirá uma blockchain local e testará esse contrato compilado... Vamos começar?
Escrevendo um script com Hardhat para testar seu contrato
Primeiro você deve criar um arquivo chamado run.js
dentro da pasta scripts
.
Nesse arquivo run.js
você definirá as instruções com o Hardhat para subir um ambiente blockchain e rodar o contrato inteligente que você escreveu na aula anterior com o seguinte código:
const main = async () => {
const xPost = await hre.ethers.deployContract("XPost");
await xPost.waitForDeployment();
console.log("Deploy do contrato no endereço:", xPost.target);
};
const runMain = async () => {
try {
await main();
process.exit(0);
} catch (error) {
console.log(error);
process.exit(1);
}
};
runMain();
Por último, você vai rodar o seguinte script no terminal npx hardhat run scripts/run.js
para executar o código acima e deverá aparecer essas mensagens no seu terminal:
Como esse código funciona? 🤔
Quando você roda o comando npx hardhat run
ele já prepara todo o ambiente blockchain por debaixo dos panos antes de começar a rodar o código.
O restante é bem direto ao ponto, o código const xPost = await hre.ethers.deployContract("XPost");
indica que você quer fazer o deploy (implementação) do contrato chamado XPost (aquele arquivo XPost.sol
que você criou anteriormente).
Já na parte await xPost.waitForDeployment();
, você está mandando esperar o deploy do contrato inteligente ser finalizado. Você consegue ver no terminal escrito Eu serei o contrato inteligente para fazer um post no Twitter descentralizado.
que é justamente o console.log que você colocou no arquivo XPost.sol
.
Depois disso, estamos apenas conferindo o endereço de deploy do contrato com o código console.log("Deploy do contrato no endereço:", xPost.target);
.
HRE e Hardhat 🎩
Você vai perceber que em várias partes do nosso código nós usaremos a função hre
que não importamos em lugar algum.
Na verdade essa função é importada automaticamente quando usabamos o comando npx hardhat
para rodar os scripts. Caso prefira, você pode rodar os scripts usando Node.js, porém terá que importar todas as dependências manualmente.
Descubra mais como o HRE funciona aqui nessa documentação.