Construindo aplicações com web3: Um guia para desenvolvedores Full Stack.

Introdução

Nos últimos anos, a Web3 tem revolucionado a forma como interagimos com a internet. Como desenvolvedores Full Stack, integrar blockchain em nossas aplicações é um diferencial que pode nos destacar no mercado. Neste artigo, vamos explorar como construir uma aplicação descentralizada (dApp) conectando um frontend a um contrato inteligente.

O que é Web3?

Web3 representa uma nova fase da internet baseada em blockchain, onde as aplicações são descentralizadas e os usuários têm controle sobre seus dados. Diferente da Web2, onde plataformas centralizadas controlam serviços, a Web3 utiliza contratos inteligentes para automatizar transações de forma segura e transparente.

Tecnologias Essenciais

Antes de iniciar o desenvolvimento, é importante conhecer algumas ferramentas fundamentais:

  • Ethereum: Uma das principais blockchains para contratos inteligentes.

  • Solidity: Linguagem de programação para contratos inteligentes.

  • Hardhat: Ambiente de desenvolvimento para testes e implantação de contratos.

  • Ethers.js/Web3.js: Bibliotecas para conectar aplicações ao blockchain.

  • Metamask: Carteira digital para interação com contratos.

Criando um Contrato Inteligente

Vamos criar um contrato simples em Solidity para armazenar e recuperar mensagens.

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

contract MessageStore {
    string private message;
    
    function setMessage(string memory _message) public {
        message = _message;
    }
    
    function getMessage() public view returns (string memory) {
        return message;
    }
}

Esse contrato permite que os usuários armazenem e recuperem mensagens na blockchain.

Implantando o Contrato com Hardhat

Instale o Hardhat e configure um projeto:

npm install --save-dev hardhat
npx hardhat

Crie um script para implantar o contrato:

const hre = require("hardhat");

async function main() {
  const MessageStore = await hre.ethers.getContractFactory("MessageStore");
  const messageStore = await MessageStore.deploy();
  await messageStore.deployed();
  console.log("Contrato implantado em:", messageStore.address);
}

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

Rode o script:

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

Criando o Frontend

No frontend, usamos React + Ethers.js para interagir com o contrato. Instale as dependências:

npm install ethers

Conectando ao contrato:

import { ethers } from "ethers";

const contractAddress = "ENDERECO_DO_CONTRATO";
const abi = [
  "function setMessage(string _message) public",
  "function getMessage() public view returns (string)"
];

async function getMessage() {
  if (typeof window.ethereum !== "undefined") {
    const provider = new ethers.providers.Web3Provider(window.ethereum);
    const contract = new ethers.Contract(contractAddress, abi, provider);
    return await contract.getMessage();
  }
}

O usuário poderá interagir com o contrato via Metamask.

Criando o Backend

Podemos criar um backend em Node.js + Express para armazenar logs das interações.

const express = require("express");
const app = express();
app.use(express.json());

app.post("/log", (req, res) => {
    console.log("Nova interação:", req.body);
    res.status(200).send("Log registrado");
});

app.listen(3001, () => console.log("Servidor rodando na porta 3001"));

Conclusão

Integrar blockchain em aplicações Full Stack é uma habilidade valiosa para desenvolvedores. Neste guia, abordamos desde a criação de um contrato inteligente até sua interação com frontend e backend. Com o crescimento da Web3, dominar essas tecnologias pode abrir novas oportunidades no mercado.

Comentários

Postagens mais visitadas deste blog

Fórmulas de Hazen-Williams e Fair – Whipple – Hsiao: Diferenças e aplicações no dimensionamento hidráulico

Tipos de juntas em construção civil: Importância e aplicações.

Como baixar vídeos do YouTube usando Python: Um guia prático com Pytube.