Roadmap
Avançado

𝕏 (Twitter) Descentralizado

Crie um clone do twitter na blockchain

ethers
solidity
vue
tailwind
vercel
github

Como criar uma blockchain local usando Hardhat

"Ué, a gente não tá subindo uma blockchain local quando rodamos o comando npx hardhat run?"

Sim, isso é verdade. Porém o Hardhat apaga todos os blocos (registros) daquela blockchain quando termina de executar as funções do arquivo run.js.

Para ter uma blockchain rodando na sua máquina por tempo indeterminado (até você encerrá-la), você deverá abrir uma nova instância do terminal clicando aqui:

Depois rodará o seguinte script no novo terminal npx hardhat node e deverá aparecer algo semelhante à isso:

Com isso o Hardhat iniciará uma blockchain na sua máquina permitindo que você interaja com ela quando tiver criando a sua aplicação, que consumirá as funções do contrato inteligente que criou.

Além disso, quando o Hardhat inicializa essa blockchain, ele já cria várias contas com 10000 de Ethereum de teste cada, então você não precisa se preocupar com as taxas de transação (GAS) que são necessárias cada vez que você interage com a blockchain.

Fazendo o deploy dos contratos inteligentes na blockchain local

Agora que já está rodando uma blockchain que se mantém "viva" por tempo indeterminado, teremos que criar um novo arquivo chamado deploy.js dentro da pasta script muito semelhante ao run.js só que com alguns detalhes atualizados.

Sempre usaremos o arquivo run.js para testar os contratos inteligentes rapidamente e o arquivo deploy.js para subir os contratos inteligentes na sua blockchain local e testar com sua aplicação web (no nosso caso vai ser o projeto do Twitter Descentralizado).

Então para começar nós colocaremos o seguinte código dentro do arquivo deploy.js:

deploy.js
const main = async () => {
  const [owner] = await hre.ethers.getSigners();
  const accountBalance = await owner.provider.getBalance(owner.address);

  console.log("Deploy do contrato feito por:", owner.address);
  console.log("Saldo da conta:", accountBalance.toString());

  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

Agora é só rodar o comando npx hardhat run scripts/deploy.js --network localhost no primeiro terminal (sem ser o que você está rodando a blockchain) e você verá algo assim depois de finalizar:

Já no terminal que está rodando sua blockchain local, você vai perceber que apareceu uma mensagem semelhante à isso:

Pronto! Agora você tem uma blockchain rodando na sua máquina e o contrato inteligente XPost.sol já faz parte da sua blockchain.

Uma coisa interessante é que, sempre que fizermos uma transação na blockchain, essa transação terá uma taxa de GAS. Você pode ver no último print aqui em cima uma linha mostrando Gas used: 326023 of 30000000.

O GAS é basicamente o cálculo do poder computacional realizado para fazer aquela transação, esse GAS deve ser pago no mesmo token da blockchain. No nosso caso estamos utilizando toda infraestrutura da blockchain Ethereum, então pagaremos o GAS com tokens ETH.

Lembre-se: tudo que a gente fez agora foi realizado num ambiente de teste, então todos os dados, tokens e transações são fakes, você não precisa de ter criptomoedas ou investir dinheiro para finalizar o curso.

Opa, calma aí!

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