Roadmap
Avançado

𝕏 (Twitter) Descentralizado

Crie um clone do twitter na blockchain

ethers
solidity
vue
tailwind
vercel
github

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();
Clique aqui para expandir

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.

Opa, calma aí!

Parece que você não está logado, caso tenha interesse em salvar seu progresso de estudo faça login agora.